Я пытаюсь отфильтровать страну, которая продолжает зондировать мой сервер SMTP (CentOS6), и я, может казаться, не заставляю ipset удаваться прямо в iptables.
Я загрузил это IP-адреса стран с ipdeny.com и установил список как текстовый файл. Первоначально, у меня были все свои IP-адреса черного списка в большой длинной iptables цепочке, но это могло действительно плохо повлиять на ЦП - следовательно меня желающий использовать ipset.
Вот выборка из того файла IP-адресов:
185.40.4.31
80.82.65.237
2.60.0.0/14
Таким образом, теперь я пытаюсь использовать тот список в наборе ipset. Я проверяю, что набор ipset заполняется с помощью 'ipset список'.
Name: blacklist
Type: hash:net
Header: family inet hashsize 2048 maxelem 65536
Size in memory: 108816
References: 1
Members:
....
185.40.4.31
185.40.152.0/22
...
С этим ipset я добавляю его к iptables:
iptables -A INPUT -p tcp -m set --set blacklist src -j DROP
Но когда я пытаюсь протестировать набор с помощью hping3, пакеты все еще проходит.
hping3 --syn --destport 25 --count 3 -a 185.40.4.31 <server_ip>
Когда я использовал длинную iptables цепочку, вещи работали как ожидалось.
Вот сокращенный вывод iptables-L-n (я отредактировал большинство 6200 + ipdeny записи),
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- 217.199.240.0/20 0.0.0.0/0
DROP all -- 217.199.208.0/20 0.0.0.0/0
...
DROP all -- 2.60.0.0/14 0.0.0.0/0
DROP all -- 94.102.50.41 0.0.0.0/0
DROP all -- 80.82.65.237 0.0.0.0/0
DROP all -- 185.40.4.31 0.0.0.0/0
ACCEPT all -- 192.168.2.0/24 0.0.0.0/0
ACCEPT all -- 192.168.1.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:27944 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:587
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:993
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:995
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:27940
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:110
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 match-set blacklist src
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Ваше правило никогда не вступит в силу, потому что вы добавили его в конец цепочки. Непосредственно перед этим является правило отбрасывать весь трафик, поэтому ваше правило никогда не будет выполнено. В iptables правила сопоставляются по порядку; это отличается от многих других межсетевых экранов.
Чтобы решить проблему, переместите правило на более раннее место в цепочке. И если вы действительно хотите внести эти адреса в черный список, это должно быть как можно раньше в цепочке, например первое правило.