Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- ### BEGIN INIT INFO
- # Provides: FIREWALL SETTINGS
- # Required-Start: $remote_fs $syslog
- # Required-Stop: $remote_fs $syslog
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: AntiDDoS
- ### END INIT INFO
- MODPROBE=/sbin/modprobe
- # Очищаем правила
- iptables -F
- iptables -X
- # Разрешаем SSH
- iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
- # Назначение глобальных политик
- iptables -P INPUT DROP
- iptables -P OUTPUT ACCEPT
- iptables -P FORWARD DROP
- iptables -F INPUT
- iptables -F OUTPUT
- iptables -F FORWARD
- # Загружаем модули, погнали:
- # Модуль для отслеживания состояния соединений
- $MODPROBE nf_conntrack
- # Модуль для отслеживания по ipv4, ipv6 пока не используем
- $MODPROBE nf_conntrack_ipv4
- # Изменение параметров SYSCTL
- # Увеличение размера очередей
- echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
- # Время ожидания до закрытия соединения
- echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
- # Время ожидания до посылки FIN пакета
- echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
- # Время ожидания до посылки FIN пакета
- echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent
- # Для защиты от syn флуда
- echo 1 > /proc/sys/net/ipv4/tcp_syncookies
- # Увеличиваем размер backlog очереди
- echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
- # Число начальных SYN и SYNACK пересылок для TCP соединения
- echo 4 > /proc/sys/net/ipv4/tcp_synack_retries
- echo 4 > /proc/sys/net/ipv4/tcp_syn_retries
- #Сколько секунд ожидать приема FIN до полного закрытия сокета
- echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
- # Как часто посылать сообщение о поддержании keep alive соединения
- echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
- # Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.
- echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes
- # Зaпрещаем TCP window scaling
- echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
- # Запрещаем selective acknowledgements, RFC2018
- echo 0 > /proc/sys/net/ipv4/tcp_sack
- # Запрещаем TCP timestamps, RFC1323
- echo 0 > /proc/sys/net/ipv4/tcp_timestamps
- # Уличиваем размер буфера для приема и отправки данных через сокеты.
- echo 1048576 > /proc/sys/net/core/rmem_max
- echo 1048576 > /proc/sys/net/core/rmem_default
- echo 1048576 > /proc/sys/net/core/wmem_max
- echo 1048576 > /proc/sys/net/core/wmem_default
- # Через какое время убивать соединеие закрытое на нашей стороне
- echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries
- # Защита от скана #
- # Silently Drop Stealth Scans
- # All of the bits are cleared
- iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
- # SYN and FIN are both set
- iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
- # SYN and RST are both set
- iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
- # FIN and RST are both set
- iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
- # FIN is the only bit set, without the expected accompanying ACK
- iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
- # PSH is the only bit set, without the expected accompanying ACK
- iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
- # URG is the only bit set, without the expected accompanying ACK
- iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
- # Уже установленные соединения и соединения, порожденные установленными принимаем
- iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- # Блокируем людей, которые постучались на левые порты
- iptables -N scan
- iptables -A scan -m recent --rcheck --name badscan --seconds 86400 -j DROP
- iptables -A scan -m recent --name badscan --remove
- iptables -A scan -p tcp -m multiport --dport 139,445 -m recent --name badscan --set -j DROP
- iptables -A INPUT -i eth0 -j scan
- iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP
- # Разрешаем петлю
- iptables -A INPUT -i lo -j ACCEPT
- # Открываем порты
- # FTP
- iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
- # http открываем только ради того что бы лочить умников которые стучатся на него
- iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
- # SMTP
- iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
- # login
- iptables -A INPUT -i eth0 -p tcp --dport 2106 -j ACCEPT
- # game
- iptables -A INPUT -i eth0 -p tcp --dport 7777 -j ACCEPT
- # msql
- iptables -A INPUT -i eth0 -p tcp --dport 3106 -j ACCEPT
- # CS 1
- iptables -A INPUT -i eth0 -p tcp --dport 27015 -j ACCEPT
- # CS 2
- iptables -A INPUT -i eth0 -p tcp --dport 27016 -j ACCEPT
- # DNS
- iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
- iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
- iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
- iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
- # Drop PING
- iptables -I INPUT -i eth0 -p icmp -j DROP
- # Drop Flood
- iptables -I INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
- COMMIT
- # SYN
- iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
- iptables -A OUTPUT -p tcp ! –syn -m state –state NEW -j DROP
- # SYN Flood
- iptables -t mangle -N syn-flood
- iptables -t mangle -A syn-flood -m limit --limit 24/s --limit-burst 48 -j RETURN
- iptables -t mangle -A syn-flood -m limit --limit 10/s --limit-burst 10 -j LOG --log-prefix "IPT: DOS (dropped): "
- iptables -t mangle -A syn-flood -j DROP
- iptables -t mangle -A PREROUTING -p tcp --syn -j syn-flood
- # HTTP и защита от множественных запросов.
- iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
- # POP
- iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
- # IMAP
- iptables -A INPUT -i eth0 -p tcp --dport 143 -j ACCEPT
- # SSH
- iptables -A INPUT -i eth0 -p tcp --dport 1443 -j ACCEPT
- iptables -A INPUT -i eth0 -p udp --dport 1443 -j ACCEPT
- # Proftpd (порты для пассивного режима)
- iptables -A INPUT -i eth0 -p tcp --dport 49152 -j ACCEPT
- iptables -A INPUT -i eth0 -p tcp --dport 49153 -j ACCEPT
- # ICMP
- iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
- iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
- iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
- iptables -A OUTPUT -p icmp --icmp-type 6 -j ACCEPT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement