Advertisement
Guest User

Untitled

a guest
Nov 6th, 2019
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. ##!/bin/bash
  2. export IPT="iptables"
  3.  
  4. # Внешний интерфейс
  5. export WAN=ppp0
  6. export WAN_IP=89.109.14.142
  7.  
  8. # Локальная сеть
  9. export LAN1=enp6s0
  10. export LAN1_IP_RANGE=192.168.0.0/24
  11.  
  12. # Очищаем правила
  13. $IPT -F
  14. $IPT -F -t nat
  15. $IPT -F -t mangle
  16. $IPT -X
  17. $IPT -t nat -X
  18. $IPT -t mangle -X
  19.  
  20. # Запрещаем все, что не разрешено
  21. $IPT -P INPUT DROP
  22. $IPT -P OUTPUT DROP
  23. $IPT -P FORWARD DROP
  24.  
  25. # Разрешаем localhost и локалку
  26. $IPT -A INPUT -i lo -j ACCEPT
  27. $IPT -A INPUT -i $LAN1 -j ACCEPT
  28. $IPT -A OUTPUT -o lo -j ACCEPT
  29. $IPT -A OUTPUT -o $LAN1 -j ACCEPT
  30.  
  31. # Рзрешаем пинги
  32. $IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
  33. $IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
  34. $IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
  35. $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  36.  
  37. # Разрешаем все исходящие подключения сервера
  38. $IPT -A OUTPUT -o $WAN -j ACCEPT
  39. # Разрешаем все входящие подключения сервера
  40. #$IPT -A INPUT -i $WAN -j ACCEPT
  41.  
  42. # разрешаем установленные подключения
  43. $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  44. $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  45. $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  46.  
  47. # Отбрасываем неопознанные пакеты
  48. $IPT -A INPUT -m state --state INVALID -j DROP
  49. $IPT -A FORWARD -m state --state INVALID -j DROP
  50.  
  51. # Отбрасываем нулевые пакеты
  52. $IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  53.  
  54. # Закрываемся от syn-flood атак
  55. $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
  56. $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
  57.  
  58. # Блокируем доступ с указанных адресов
  59. #$IPT -A INPUT -s 84.122.21.197 -j REJECT
  60.  
  61. # Пробрасываем внешний порт 8102 на локальный адрес и порт 8102
  62. $IPT -t nat -A PREROUTING -p tcp --dport 8102 -i ${WAN} -j DNAT --to 192.168.0.92:8102
  63. $IPT -A FORWARD -i $WAN -d 192.168.0.92 -p tcp --dport 8102 -j ACCEPT
  64.  
  65.  
  66. # Пробрасываем внешний порт 8000 на локальный адрес и порт 22
  67. $IPT -t nat -A PREROUTING -p tcp --dport 8000 -i ${WAN} -j DNAT --to 192.168.0.92:22
  68. $IPT -A FORWARD -i $WAN -d 192.168.0.92 -p tcp --dport 22 -j ACCEPT
  69.  
  70.  
  71. # Разрешаем доступ из локалки наружу
  72. $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
  73. # Закрываем доступ снаружи в локалку
  74. $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
  75.  
  76. # Включаем NAT
  77. $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE
  78.  
  79. # открываем доступ к SSH
  80. $IPT -A INPUT -i $WAN -p tcp --dport 27885 -j ACCEPT
  81.  
  82. #Открываем доступ к web серверу
  83. $IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  84. $IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
  85.  
  86. #Открываем доступ к DNS серверу
  87. $IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT
  88.  
  89. # Включаем логирование
  90. #$IPT -N block_in
  91. #$IPT -N block_out
  92. #$IPT -N block_fw
  93.  
  94. #$IPT -A INPUT -j block_in
  95. #$IPT -A OUTPUT -j block_out
  96. #$IPT -A FORWARD -j block_fw
  97.  
  98. #$IPT -A block_in -j LOG --log-level info --log-prefix "--IN--BLOCK"
  99. #$IPT -A block_in -j DROP
  100. #$IPT -A block_out -j LOG --log-level info --log-prefix "--OUT--BLOCK"
  101. #$IPT -A block_out -j DROP
  102. #$IPT -A block_fw -j LOG --log-level info --log-prefix "--FW--BLOCK"
  103. #$IPT -A block_fw -j DROP
  104.  
  105. # Сохраняем правила
  106. /sbin/iptables-save > /etc/iptables.rules
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement