Blokovat nežádoucí IP adresy v přístupu na Váš server nemusí být vždy snadné, zvláště v případě kdy se bavíme o samostatných IP adresách (/32) bez společného CIDR prefixu.
Klasický nástroj netfilter/iptables dokáže tento problém snadno řešit.
root@havel-machine:~# iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP root@havel-machine:~# iptables -A INPUT -s 2.2.2.2 -p UDP -j DROP
Snadné! A když se seznam rozroste na 10000 položek? V systému bude 10000 iptables pravidel? Takto to nelze škálovat.
Zde na pomoc přichází IPset framework v kombinaci s iptables, co to umí?
- uchování rozsáhlých seznamů IP adres, portů TCP/UDP, MAC adres
- rychlé prohledávání seznamu pomocí hashe
- dynamické aktualizace seznamu
Instalace Debian
root@havel-machine:~# apt-get install ipset root@havel-machine:~# ipset create banlist hash:net root@havel-machine:~# ipset list Name: banlist Type: hash:net Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16760 References: 0 Members: (maxelem lze změnit parametrem maxelem při volání create)
root@havel-machine:~# ipset add banlist 1.1.1.1/32 root@havel-machine:~# ipset add banlist 2.2.2.2/32 root@havel-machine:~# ipset add banlist 3.3.3.3/32 root@havel-machine:~# ipset add banlist 4.4.4.4/24 root@havel-machine:~# ipset list Name: banlist Type: hash:net Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16888 References: 0 Members: 4.4.4.0/24 3.3.3.3 1.1.1.1 2.2.2.2
Máme připraven ipset, zavedem ho do iptables pravidla, zde si ukážeme blokaci pro port 80 (www server) a port 25 (smtp).
root@havel-machine:~# iptables -I INPUT -m set –match-set banlist src -p tcp –destination-port 80 -j DROP
root@havel-machine:~# iptables -I INPUT -m set –match-set banlist src -p tcp –destination-port 25 -j DROP
root@havel-machine:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp — 0.0.0.0/0 0.0.0.0/0 match-set banlist src tcp dpt:25
DROP tcp — 0.0.0.0/0 0.0.0.0/0 match-set banlist src tcp dpt:80
V kombinaci s ipset se přímo nabízí nějaká služba proautomatické blokování, zkuste se mrknout iblocklist.com.
Další info, man ipset.
Díky za Váš čas. František Havel