Firewall

Linux firewall: Blokujeme pomocí IPSET

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