Непонятный глюк и после ребута всё поднимается без сбоев. Через некоторое время валятся демоны (ssh, ftp, apache, verlihub и прочие) SNAT маршрутизацию же пропускает без проблем, хоть полчаса в инете сиди (видимо из-за того, что ядрёным модулем делается) пинг от сервера естественно отдаётся.
Syn наводнение - первое, что пришло в голову. Причесал все фильтры, дополнив старый скрипт (где-то в инетах подобрал) с комментариями на будущие.
Мониторится вся байда так:
iptables -L -nv
iptables -t nat -L -nv
и удобоваримая схема цепочек
#!/bin/sh # Задаем некоторые переменные: # Переменная, задающая путь к файлу запуска iptables. IPT="/sbin/iptables" # Номера непривилегированных портов. PORTS="1024:65535" # Интерфейсы. LAN="eth0" WAN1="" WAN2="" # Порт для ssh, лучше задать отличный от стандартного. SSHPORT="22" # Очистить все правила. $IPT -F $IPT -X $IPT -t nat -F # Политики по умолчанию. $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT ACCEPT # Разрешаем прохождение любого трафика по интерфейсу обратной петли. $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT # Разрешаем прохождение любого трафика по локальному интерфейсу. $IPT -A INPUT -i $LAN -j ACCEPT $IPT -A OUTPUT -o $LAN -j ACCEPT # Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса. $IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP # Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED. # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # SYN наводнение. # Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным. $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP # ftp $IPT -A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT # ssh + защита от брута $IPT -A INPUT -p tcp --dport $SSHPORT -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name SSH -j DROP $IPT -A INPUT -p tcp --dport $SSHPORT -m state --state NEW -m recent --set --name SSH -j ACCEPT # http $IPT -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT # dchub $IPT -A INPUT -p tcp -m tcp --dport 411 -m state --state NEW -j ACCEPT # ICMP - перенаправление # ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять # пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину. $IPT -A INPUT --fragment -p ICMP -j DROP $IPT -A OUTPUT --fragment -p ICMP -j DROP #save для генту /etc/init.d/iptables save
