Назад | Перейти на главную страницу

iptables - цель synproxy не помечает пакеты как НЕВЕРНЫЕ

Я пишу правила iptables, и у меня возникли проблемы с предотвращением флуда SYN. Обнаружил, что synproxy должен быть правильным решением. Но при тестировании я обнаружил, что он не помечает пакеты как НЕДЕЙСТВИТЕЛЬНЫЕ, поэтому правило iptables его не отбрасывает.

$iptables -t raw    -A PREROUTING -p tcp -m tcp -m multiport --dports 25,80,443,587 --syn -j  CT --notrack  
$iptables -t filter -A INPUT      -p tcp -m tcp -m multiport --dports 25,80,443,587 -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
$iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "IPTABLES=INVALID "                                                                
$iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j DROP
$iptables -A INPUT -j LOG --log-prefix "IPTABLES=PASS "

Насколько я понимаю, цель synproxy должна установить недопустимое состояние для всех пакетов, которые не создают трехстороннее ханшейк, но когда я использую hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.0.50 пакеты регистрируются как ПРОЙДЕН, НЕ НЕДЕЙСТВИТЕЛЬНЫЙ

Я также добавил в sysctl более строгий контроль соединения, это необходимо, чтобы пакеты ACK (от 3WHS) были помечены как состояние INVALID.

/etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_loose = 0
net.ipv4.tcp_timestamps = 1

Я использовал это Сообщение блога чтобы понять, что происходит. Но я больше ничего не могу изменить.

Может ли кто-нибудь указать мне, что я делаю не так?

iptables -nvL
Chain PREROUTING (policy ACCEPT 69965 packets, 9252K bytes)
 pkts bytes target     prot opt in     out     source               destination
38184 6109K CT         tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 NOTRACK

Chain INPUT (policy DROP 98 packets, 4346 bytes)
 pkts bytes target     prot opt in     out     source               destination
34063 5450K SYNPROXY   tcp  --  !lo    *       0.0.0.0/0            0.0.0.0/0            tcp multiport dports 25,80,150,443,587 ctstate INVALID,UNTRACKED SYNPROXY sack-perm t imestamp wscale 7 mss 1460
    0     0 LOG        all  --  !lo    *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID LOG flags 0 level 4 prefix "IPTABLES=INVALID1 "
    0     0 DROP       all  --  !lo    *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID

Похоже, SYNPROXY работает нормально, он не помечает пакеты как НЕДЕЙСТВИТЕЛЬНЫЕ, а сразу отбрасывает их на цель SYNPROXY. Вот почему я не мог видеть НЕВЕРНЫЕ пакеты.

Странно, потому что раньше hping отключил мою ОС, и мне пришлось ее перезагружать, но теперь все в порядке. Может быть, потому что у меня не были включены постоянные настройки sysctl, кто знает.