Advertisement
0x255

my iptables rules

Sep 2nd, 2011
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.89 KB | None | 0 0
  1. #! /bin/sh
  2.  
  3. IPTABLES="/sbin/iptables"
  4. internet="ppp0"
  5. external="eth0"
  6. internal="eth1"
  7.  
  8. $IPTABLES -F
  9. $IPTABLES -X
  10.  
  11. #$IPTABLES -A INPUT -p tcp -j LOG --log-prefix "iptables: INPUT tcp packets "
  12. #$IPTABLES -A INPUT -p udp -j LOG --log-prefix "iptables: INPUT udp packets "
  13.  
  14. # Разрешаем доступ по интерфесу обратной петли
  15. $IPTABLES -A INPUT -i lo -j ACCEPT
  16. $IPTABLES -A OUTPUT -o lo -j ACCEPT
  17. # vbox
  18. $IPTABLES -A INPUT -i vboxnet0 -j ACCEPT
  19. $IPTABLES -A OUTPUT -o vboxnet0 -j ACCEPT
  20.  
  21. # C себя разрешаем всё
  22. $IPTABLES -A OUTPUT  -m state --state NEW  -j ACCEPT
  23.  
  24. # Позволяем входящие и исходящие соединения, инициированные уже установленными соединениями
  25. $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  26. $IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  27.  
  28. # радио p2p
  29. $IPTABLES -A INPUT -p udp -m udp --dport 2000:2002 -j ACCEPT
  30. # Разрешаем прохождение DHCP запросов через iptables.
  31. $IPTABLES -A INPUT -p udp -m udp --dport 68 --sport 67 -j ACCEPT
  32. $IPTABLES -A OUTPUT -p udp -m udp --dport 67 --sport 68 -j ACCEPT
  33.  
  34. # какие_то важные пакеты
  35. $IPTABLES -I INPUT -p ah -j ACCEPT
  36. $IPTABLES -I INPUT -p esp -j ACCEPT
  37.  
  38. ########################################################################
  39. #                           Защита                                     #
  40. ########################################################################
  41.  
  42. # Дропаем все с ошибками
  43. $IPTABLES -A INPUT -m state --state INVALID -j DROP
  44. $IPTABLES -A FORWARD -m state --state INVALID -j DROP
  45.  
  46. # порт сканнеры
  47. $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP
  48. $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP
  49.  
  50. # Дропаем все icmp
  51. $IPTABLES -A INPUT -p icmp -j DROP
  52.  
  53. # антиспуффинг
  54. $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
  55. $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  56. $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
  57.  
  58. $IPTABLES -N SYN_FLOOD
  59. $IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
  60. $IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN
  61. $IPTABLES -A SYN_FLOOD -j DROP
  62.  
  63. # Блокируем все попытки входящих TCP-соединений не SYN-пакетами (либо ошибка, либо атака)
  64. $IPTABLES -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
  65.  
  66. # Вводим ограничения для новых подключений по SSH (не больше 4 в минуту)
  67. #$IPTABLES -A INPUT -i $external -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH: "
  68. $IPTABLES -A INPUT -i $external -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
  69.  
  70. # Вводим ограничения для новых подключений по WWW (не больше 50 соедининий с одного ip)
  71. #$IPTABLES -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j LOG --log-prefix "WWW: "
  72. #$IPTABLES -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
  73.  
  74. # Вводим ограничения для новых подключений по WWW (не более 5 в секунду)
  75. #$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  76. #$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 5/sec --limit-burst 5 -j ACCEPT
  77.  
  78. # Вводим ограничения для новых подключений по FTP (не больше 50 соедининий с одного ip)
  79. $IPTABLES -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 50 -j DROP
  80.  
  81. # Вводим ограничения для новых подключений по FTP (не больше 5 в секунду)
  82. $IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --dport 21 -m hashlimit --hashlimit-upto 5/sec --hashlimit-mode srcip --hashlimit-name ftphash -j ACCEPT
  83.  
  84. # Хаб
  85. # дропаем, если с ip новых соединений больше чем 10
  86. #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  87. #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 10 -j ACCEPT
  88. # дропаем если с ip коннектов больше чем 20
  89. #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j LOG --log-prefix "iptables: hub-connlimit "
  90. #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT
  91. #$IPTABLES -A INPUT -p udp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j LOG --log-prefix "iptables: hub-connlimit "
  92. #$IPTABLES -A INPUT -p udp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT
  93.  
  94. #~ #вечный бан по ip для  dc++
  95. #~ BLOCKDB="/home/ftp/www/nemesis/iptables/ip.blocked"
  96. #~ IPS=$(grep -Ev "^#" $BLOCKDB)
  97. #~ for i in $IPS
  98. #~ do
  99.     #~ $IPTABLES -A INPUT -p tcp -i $external -s $i -m multiport --dports 411,4111 -j DROP
  100.     #~ $IPTABLES -A INPUT -p udp -i $external -s $i -m multiport --dports 411,4111 -j DROP
  101. #~ done
  102. #~
  103. #~ #вечный бан по ip для  всех
  104. #~ BLOCKDB="/home/ftp/www/nemesis/iptables/ip-all.blocked"
  105. #~ IPS=$(grep -Ev "^#" $BLOCKDB)
  106. #~ for i in $IPS
  107. #~ do
  108.         #~ $IPTABLES -A INPUT -p tcp -i $external -s $i -j DROP
  109.         #~ $IPTABLES -A INPUT -p udp -i $external -s $i -j DROP
  110. #~ done
  111.  
  112. #дропаем запрос имен netbios
  113. $IPTABLES -A INPUT -p udp ! -i $internal --dport 137:138 -j DROP
  114. #дропаем мультикаст
  115. $IPTABLES -A INPUT -d 224.0.0.1/32 -j DROP
  116. $IPTABLES -A OUTPUT -d 224.0.0.1/32 -j DROP
  117. $IPTABLES -A FORWARD -d 224.0.0.1/32 -j DROP
  118.  
  119. ########################################################################
  120. #                           ЛОКАЛКА                                    #
  121. ########################################################################
  122.  
  123. # SSH
  124. $IPTABLES -A INPUT -p tcp -m tcp -i $external --dport 22 -j ACCEPT
  125.  
  126. # SQUID
  127. $IPTABLES -A INPUT -p tcp -m tcp -i $external --dport 3128 -j ACCEPT
  128.  
  129. #MYSQL
  130. #$IPTABLES -A INPUT -p tcp -i $external -s 10.58.20.136 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
  131. #$IPTABLES -A OUTPUT -p tcp -s 10.58.20.136 --sport 3306 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
  132.  
  133. ########################################################################
  134. #                       ОБЩЕЕ ДЛЯ ВСЕХ                                 #
  135. ########################################################################
  136.  
  137. # FTP
  138. $IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --sport 1024:65535 --dport 20:21 -j ACCEPT
  139. $IPTABLES -A INPUT -p tcp --sport 1024:65535 --dport 49000:49500 -j ACCEPT
  140.  
  141. # WWW
  142. $IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
  143. $IPTABLES -A OUTPUT -p tcp -m tcp -m multiport --sports 80,443 -j ACCEPT
  144.  
  145. # Проброшенные порты для пиринговых клиентов
  146. $IPTABLES -A INPUT -p tcp -m tcp --dport 7500:7504 -j ACCEPT
  147. $IPTABLES -A INPUT -p udp -m udp --dport 7500:7504 -j ACCEPT
  148. #soulseek
  149. $IPTABLES -A INPUT -p tcp -m tcp --dport 2234:2239 -j ACCEPT
  150.  
  151. # Хаб
  152. $IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 411,4111 -j ACCEPT
  153. $IPTABLES -A INPUT -p udp -m udp -m multiport --dports 411,4111 -j ACCEPT
  154.  
  155. ########################################################################
  156. #                           eth1                                       #
  157. ########################################################################
  158.  
  159. # Разрешаем пинговать себя с $eth1
  160. $IPTABLES -I INPUT -p icmp -m icmp --icmp-type echo-request -i $internal -j ACCEPT
  161. $IPTABLES -I OUTPUT -p icmp -m icmp --icmp-type echo-reply -o $internal -j ACCEPT
  162.  
  163. # SQUID
  164. $IPTABLES -A INPUT -p tcp -m tcp -i $internal --dport 3128 -j ACCEPT
  165.  
  166. ########################################################################
  167. #                           ВНЕШКА                                     #
  168. ########################################################################
  169.  
  170. # Доступ к DNS-серверам
  171. $IPTABLES -A OUTPUT -p tcp -m tcp -o $internet --dport 53 -j ACCEPT
  172. $IPTABLES -A OUTPUT -p udp -m udp -o $internet --dport 53 -j ACCEPT
  173.  
  174.  
  175. #Добавляем правила по умолчанию
  176. $IPTABLES -A INPUT -i $internet -j DROP
  177. #$IPTABLES -A INPUT -j LOG --log-prefix "iptables: input drop "
  178. $IPTABLES -P INPUT DROP
  179. #$IPTABLES -A OUTPUT -j LOG --log-prefix "iptables: output drop "
  180. $IPTABLES -P OUTPUT DROP
  181. #$IPTABLES -A FORWARD -j LOG --log-prefix "iptables: forward drop "
  182. $IPTABLES -P FORWARD DROP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement