Advertisement
Guest User

Untitled

a guest
Nov 10th, 2015
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.98 KB | None | 0 0
  1. #! /bin/bash
  2. ### BEGIN INIT INFO
  3. # Provides: FIREWALL SETTINGS
  4. # Required-Start: $remote_fs $syslog
  5. # Required-Stop: $remote_fs $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: AntiDDoS
  9. ### END INIT INFO
  10.  
  11. MODPROBE=/sbin/modprobe
  12.  
  13. # Очищаем правила
  14. iptables -F
  15. iptables -X
  16.  
  17. # Разрешаем SSH
  18. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  19.  
  20. # Назначение глобальных политик
  21. iptables -P INPUT DROP
  22. iptables -P OUTPUT ACCEPT
  23. iptables -P FORWARD DROP
  24. iptables -F INPUT
  25. iptables -F OUTPUT
  26. iptables -F FORWARD
  27.  
  28. # Загружаем модули, погнали:
  29. # Модуль для отслеживания состояния соединений
  30. $MODPROBE nf_conntrack
  31. # Модуль для отслеживания по ipv4, ipv6 пока не используем
  32. $MODPROBE nf_conntrack_ipv4
  33.  
  34. # Изменение параметров SYSCTL
  35. # Увеличение размера очередей
  36. echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
  37. # Время ожидания до закрытия соединения
  38. echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
  39. # Время ожидания до посылки FIN пакета
  40. echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
  41. # Время ожидания до посылки FIN пакета
  42. echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent
  43. # Для защиты от syn флуда
  44. echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  45. # Увеличиваем размер backlog очереди
  46. echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
  47. # Число начальных SYN и SYNACK пересылок для TCP соединения
  48. echo 4 > /proc/sys/net/ipv4/tcp_synack_retries
  49. echo 4 > /proc/sys/net/ipv4/tcp_syn_retries
  50. #Сколько секунд ожидать приема FIN до полного закрытия сокета
  51. echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
  52. # Как часто посылать сообщение о поддержании keep alive соединения
  53. echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
  54. # Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.
  55. echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes
  56. # Зaпрещаем TCP window scaling
  57. echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
  58. # Запрещаем selective acknowledgements, RFC2018
  59. echo 0 > /proc/sys/net/ipv4/tcp_sack
  60. # Запрещаем TCP timestamps, RFC1323
  61. echo 0 > /proc/sys/net/ipv4/tcp_timestamps
  62. # Уличиваем размер буфера для приема и отправки данных через сокеты.
  63. echo 1048576 > /proc/sys/net/core/rmem_max
  64. echo 1048576 > /proc/sys/net/core/rmem_default
  65. echo 1048576 > /proc/sys/net/core/wmem_max
  66. echo 1048576 > /proc/sys/net/core/wmem_default
  67. # Через какое время убивать соединеие закрытое на нашей стороне
  68. echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries
  69.  
  70. # Защита от скана #
  71. # Silently Drop Stealth Scans
  72. # All of the bits are cleared
  73. iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  74. # SYN and FIN are both set
  75. iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
  76. # SYN and RST are both set
  77. iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  78. # FIN and RST are both set
  79. iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
  80. # FIN is the only bit set, without the expected accompanying ACK
  81. iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
  82. # PSH is the only bit set, without the expected accompanying ACK
  83. iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
  84. # URG is the only bit set, without the expected accompanying ACK
  85. iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
  86.  
  87. # Уже установленные соединения и соединения, порожденные установленными принимаем
  88. iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  89.  
  90. # Блокируем людей, которые постучались на левые порты
  91. iptables -N scan
  92. iptables -A scan -m recent --rcheck --name badscan --seconds 86400 -j DROP
  93. iptables -A scan -m recent --name badscan --remove
  94. iptables -A scan -p tcp -m multiport --dport 139,445 -m recent --name badscan --set -j DROP
  95. iptables -A INPUT -i eth0 -j scan
  96.  
  97. iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP
  98.  
  99. # Разрешаем петлю
  100. iptables -A INPUT -i lo -j ACCEPT
  101.  
  102. # Открываем порты
  103. # FTP
  104. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  105. # http открываем только ради того что бы лочить умников которые стучатся на него
  106. iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
  107. # SMTP
  108. iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
  109. # login
  110. iptables -A INPUT -i eth0 -p tcp --dport 2106 -j ACCEPT
  111. # game
  112. iptables -A INPUT -i eth0 -p tcp --dport 7777 -j ACCEPT
  113. # msql
  114. iptables -A INPUT -i eth0 -p tcp --dport 3106 -j ACCEPT
  115. # CS 1
  116. iptables -A INPUT -i eth0 -p tcp --dport 27015 -j ACCEPT
  117. # CS 2
  118. iptables -A INPUT -i eth0 -p tcp --dport 27016 -j ACCEPT
  119. # DNS
  120. iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
  121. iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
  122.  
  123. iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
  124. iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
  125. # Drop PING
  126. iptables -I INPUT -i eth0 -p icmp -j DROP
  127. # Drop Flood
  128. iptables -I INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
  129. COMMIT
  130.  
  131. # SYN
  132. iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
  133. iptables -A OUTPUT -p tcp ! –syn -m state –state NEW -j DROP
  134. # SYN Flood
  135. iptables -t mangle -N syn-flood
  136. iptables -t mangle -A syn-flood -m limit --limit 24/s --limit-burst 48 -j RETURN
  137. iptables -t mangle -A syn-flood -m limit --limit 10/s --limit-burst 10 -j LOG --log-prefix "IPT: DOS (dropped): "
  138. iptables -t mangle -A syn-flood -j DROP
  139. iptables -t mangle -A PREROUTING -p tcp --syn -j syn-flood
  140.  
  141. # HTTP и защита от множественных запросов.
  142. iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -m limit --limit 100/sec --limit-burst 100  -j ACCEPT
  143. # POP
  144. iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
  145. # IMAP
  146. iptables -A INPUT -i eth0 -p tcp --dport 143 -j ACCEPT
  147. # SSH
  148. iptables -A INPUT -i eth0 -p tcp --dport 1443 -j ACCEPT
  149. iptables -A INPUT -i eth0 -p udp --dport 1443 -j ACCEPT
  150. # Proftpd (порты для пассивного режима)
  151. iptables -A INPUT -i eth0 -p tcp --dport 49152 -j ACCEPT
  152. iptables -A INPUT -i eth0 -p tcp --dport 49153 -j ACCEPT
  153.  
  154. # ICMP
  155. iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  156. iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
  157. iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
  158. iptables -A OUTPUT -p icmp --icmp-type 6 -j ACCEPT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement