IPTABLES IP cím tiltása

IPTABLES Drop IP address – IP cím tiltása

Általánosan, vagy akutan is szükség lehet, hogy iptables segítségével kitiltsunk a rendszerünkből bizonyos IP címet, vagy IP cím tartományt. Ez a rövid kis írás ennek a megoldásnak az ismeretesére és gyors visszakereshetőségére került összeállításra. A bejegyzésemben mindig ún. belső IP cím tartománybeli IP címekkel példálózom.

IP cím blokkolása IPTABLES segítségével

/sbin/iptables -I INPUT -s {SOURCE} -j DROP
/sbin/iptables -I INPUT -s 192.168.39.49 -j DROP

Az első az iptables szintaktikája, tehát az “-I INPUT” a bejövő forgalmat kívánjuk korlátozni, a “-s {SOURCE}” a forrás IP címekre vontakozólag, “-j DROP” elutasítunk minden forgalmat. Példánk alapján, ha látogató a 192.168.39.49 IP címről szeretné elérni a szerverünket, akkor semmilyen kapcsolatot nem engedélyezünk a számára.

/sbin/iptables -I INPUT -i {INTERFACE-NAME} -s {SOURCE-IP} -j DROP
/sbin/iptables -I INPUT -i eth1 -s 192.168.39.49 -j DROP

Tovább szűkíthetjük a forgalom korlátozását, ha az adott IP címről, csak egy bizonyos interface “-i {INTERFACE-NAME}”  felől korlátozzuk az elérést.

/sbin/iptables -I INPUT ! -i {INTERFACE-NAME-HERE} -s {IP-HERE} -j DROP
/sbin/iptables -I INPUT ! -i eth1 -s 192.168.39.49 -j DROP

Amennyiben egy adott interface felől akarjuk csak engedélyezni az IP cím felől érkező kéréseket, akkor “!” negálással biztosíthatjuk ezt. Tehát a példánk alapján, a 192.168.39.49 IP címről érkező kéréseket blokkoljuk, kivéve, ha az a eth1 interface felől érkező kérés

/sbin/iptables -I INPUT -i {INTERFACE-NAME-HERE}+ -s {IP-HERE} -j DROP
/sbin/iptables -I INPUT -i eth+ -s 192.168.39.49 -j DROP

További egyszerűsítést alkalmazhatunk, ha több hasonló nevű interface forgalmát akarjuk tiltani, mint példánkban minden eth kezdetű interface felől érkező kérést tiltunk.

/sbin/iptables -A INPUT  -s 192.168.39.49 -j DROP
/sbin/iptables -i eth1 -A INPUT  -s 192.168.39.49 -j DROP

A forgalom típusánál használhatjuk a “-I INPUT (insert)” helyett a “-A INPUT (append)” rule-t is.

IP cím tartomány, subnet blokkolása IPTABLES segítségével

/sbin/iptables -i eth1 -A INPUT -s 192.168.39.0/24 -j DROP

Ebben az esetben az eredmény a példát követve az, hogy minden 192.168.39.-el kezdődő IP címről az eth1 interface felől érkező kérést utasítsunk el.

Hogy tudom a blokkolt IP címeket logolni, eltárolni a blokkolást?

A kernel logolás bekapcsolásával van lehetőségünk arra, hogy az általunk bekapcsolt blokkolás hatékonyságát, működését  ellenőrizzük:

/sbin/iptables -i eth1 -A INPUT -s 192.168.39.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"

Tehát a példánk alapján blokkoljuk a 192.168.38.0 hálózati tartományt. Amennyiben ez a blokkolás működik, akkor a kernel logok közé a “IP DROP SPOOF A:” log előtaggal bekerül az IP cím.

Hogyan tudom a iptables IP cím blokkolásokat listázni?

Természetesen több lehetőségünk van, több szűrést is beállíthatunk a listázáshoz:

/sbin/iptables -L -v
/sbin/iptables -L INPUT -v
/sbin/iptables -L INPUT -v -n
/sbin/iptables -L INPUT -v -n | grep 192.168.39.49

A fentebbi lekérdezések eredményeit célszerű a gyakorlatban megnézni, röviden az mondható el, hogy kilistázza az iptables szabályainkat, vagy csak az érvényes  “INPUT” rule-okat.

Ezekből például “grep” segítségével kiszűrhetjük az adott IP címünket. Természetesen subnetwork blokkolásakor nem ilyen egyszerű a feladatunk, így általában végig kell a szabályokat olvasnunk, értelmezni, esetleg az alhálózati maszkokkal megadott IP cím tartományokat értelmeznünk, és így találhatjuk meg egy hibás blokkolás okát.

Hogyan tudom az IPTABLES által blokkolt IP cím szabályt törölni?

Az egyik legjobban használható lehetőségünk, hogy a szabályok listázásával kérjük azok megszámozását is:

/sbin/iptables -L INPUT -n --line-numbers
/sbin/iptables -L INPUT -n --line-numbers | grep 192.168.39.49

Ekkor kapunk egy sorszámozott iptables listát a szabályokról.

/sbin/iptables -D INPUT 3

Majd a kiválasztott, esetünkben a 3. számú szabályt töröljük.

 

Comments are closed, but trackbacks and pingbacks are open.