iptables alapok
A Netfilter (hálózati csomagok feldolgozására szolgáló eszköz) kezelője.
Az iptables a hálózati csomagok feldolgozási szabályait szerepük alapján szervezett
táblák formájában kezeli.
Szerepek - táblák
A feldolgozási folyamat típusát jelentik.
filter : Csomagszűrés bejövő, kimenő és átmenő forgalomra. A legsűrűbben használt tábla.
nat : Hálózati címfordítás, általában átmenő forgalomra.
mangle : Egyéb csomagmódosítások, például csomagok megjelölése.
raw : Kivételek kezelése
security : Jogosultsági hozzáférések szabályozása
Ezen táblák mindegyikére feldolgozási szabályok (rules) lánca (chain) vonatkozik. A szabályok illesztésekből
(match - mely csomagokra vonatkozik,) és célokból (target - mit kell tenni az illeszkedő csomaggal) épülnek fel.
Egy csomagra csak akkor illeszkedik szabály, ha annak minden feltétele teljesül rá.
A táblák beépített láncai
Az adott táblákban milyen láncokon lehet szűrni a hálózati forgalmat. Azt hogy melyikben milyen forgalmat érdemes,
a csomagáramlás szekció taglalja.
filter tábla : INPUT, FORWARD, OUTPUT
nat tábla : PREROUTING, INPUT, OUTPUT, POSTROUTING
mangle tábla : PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
raw tábla : PREROUTING, OUTPUT
security tábla : INPUT, FORWARD, OUTPUT
Kapcsolódási pontok a feldolgozás során
PREROUTING : A hálózati csatolótol kapott csomag, még az INPUT lánc előtt ide kerül.
INPUT : Épp mielőtt megérkezne a csomag egy helyi folyamathoz. (itt illik szűrni a bejővő forgalmat)
FORWARD : Egy átjáró gépen a továbbított csomagok itt áramlanak keresztül. Routing.
OUTPUT : Miután egy helyi folyamat létrehozta a csomagot, itt távozik (kimenő csomag szűrés!)
POSTROUTING : Mielőtt elhagyná a hálózati csatolót a csomag, az OUTPUT lánc után. NAT-olás!
A láncok házirendje
Default Policy
Ezt a policy-t lánconként (INPUT, OUTPUT, FORWARD) a tűzfal script legelején fixálni kell. Azok a csomagok, amelyek
a tűzfal láncaiban felsorolt szabályokra nem illeszkednek, azokra a Default Policy vonatkozik, azaz vagy ACCEPT, vagy DROP.
Pl.: Ha a tűzfal INPUT láncában csak a tcp 80-as kerül engedélyezésre, a Default Policy pedig DROP, akkor minden más porton
és protkollon érkező csomagot (amely nem illeszkedik a tcp 80-as portot definiáló szabályra) eldob.
Csomagáramlás
A csomagok feldolgozása a szabályok felsorolásának sorrendjében történik. (pl DROP után nincs logolás!)
Amennyiben egy szabályra az aktuális csomag nem illeszkedik, úgy a következő szabállyal kerül kiértékelésre,
és így tovább. Ha egy szabályra sem illeszkedik, úgy az adott lánc alapértelmezett házirendje (default policy)
érvényesül a csomagra. Amennyiben egy szabályban nincs illesztési feltétel, pl nincs megadva bejövő interface,
úgy az adott szabály minden interface-re illeszkedik, ha viszont cél (target/művelet!) nincs, akkor a rá illeszkedő
csomaggal semmi sem fog történni.
Alábbi listában látható a sorrend ahogyan megjelennek a csomagok a beépített táblákban és láncokban:
Két hálózati csatoló között - Forwarding
mangle : PREROUTING
nat : PREROUTING
mangle : FORWARD
filter : FORWARD
mangle : POSTROUTING
nat : POSTROUTING
tipp: -Port forwardnál először a nat tábla PREROUTING láncában kell engedélyezni a forgalmat,
majd a filter tábla FORWARD láncában is, hiszen ez a következő szűrési pont.
Hálózati csatolótól helyi folyamathoz - Input
mangle : PREROUTING
nat : PREROUTING
mangle : INPUT
filter : INPUT
tipp: -Egyszerű bejövő szűrésnél (módosítás és átirányítás nélkül) a filter tábla INPUT lánca érvényesül,
Tehát itt kell szűrni.
Helyi folyamattól hálózati csatolóhoz - Output
mangle : OUTPUT
nat : OUTPUT
filter : OUTPUT
mangle : POSTROUTING
nat : POSTROUTING
tipp: -Egyszerű kimenő szűrésnél (módosítás és átirányítás nélkül) a filter tábla OUTPUT lánca érvényesül,
Tehát itt kell szűrni.
-NAT-olásnál (MASQUERADE vagy SNAT) a nat tábla POSTROUTING láncában kell a beállításokat elvégezni.
Helyi folyamattól helyi folyamathoz - local
mangle : OUTPUT
nat : OUTPUT
filter : OUTPUT
filter : INPUT
mangle : INPUT
Lánc műveletek, szabály módosítások
-L : a láncok szabályainak megjelenítése (--list)
-S : aktuális lánc szabályok listázása röviden
-P : default policy beállítása
-N : új lánc létrehozása
-F : a lánc összes szabályának törlése (--flush)
-X : üres láncok törlése (--delete-chain)
-Z : csomag és byte számlálók nullázása
-A : új szabály hozzáadása egy lánchoz (--append)
-D : törlés az adott láncból
-I : szabály injektálás, beszúrás
-R : szabály csere, sorszám alapján
Csomag és bájtszámlálók
Amikor egy csomag egy illeszkedő szabályhoz ér (azaz minden feltétel teljesült rá) akkor a rendszer a
csomagszámlálót egyel növeli, míg a bájtszámlálóhoz hozzáadja a csomag méretét.
iptables -nvxL kimenetében látható pkts és bytes oszlopok:
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- eth0 * 191.85.11.60 192.168.1.254 tcp dpt:80
11 660 ACCEPT tcp -- eth0 * 191.85.11.60 192.168.1.254 tcp dpt:443
Interface-ek meghatározása
Az interface maga a (fizikai) eszköz amelyen bejön, vagy távozik a csomag.
PREROUTING láncon : "-i eth0" értelmezhető, nincs kimeneti interface!
INPUT láncon : "-i eth0" értelmezhető -II-
OUTPUT láncon : "-o eth0" adható meg, "-i" kapcsolóra egy csomag sem fog illeszkedni.
FORWARD láncon : "-i eth0" és "-o eth0" interface-ek is alkalmazhatóak.
POSTROUTING láncon : "-o eth0" értelmezhető, nincs bemeneti interface
Alkalmazható joker karater az interface-eknél, ez a "+" jel. "-i eth+" -> pl eth0,eth1..
Forrás és célcímek megadása
Forrás (-s, --source) és célcímek (-d, --destination)
Hostname alapján : localhost, vagy pl.: www.debian.org
IP alapján : 127.0.0.1
IP tartomány alapján : 192.168.1.0/24 vagy 192.168.1.0/255.255.255.0
Inverz módon is megadható forrás és cél, "-s !" localhost" formájában.
Protokollok megadása
-p tcp VAGY udp VAGY icmp formájában történik. Itt is alkalmazható negálás, azaz "-p ! TCP", minden
csomagra illeszkedik a szabály amely nem TCP.
Portok, port tartományok megadása
A portok megadhatóak számmal, vagy névvel. (utóbbi esetben.: /etc/services)
ssh,smtp,http : ssh , smtp és http portok beállítása
22,25,80 : u.a. mint az előző, számmal
--source-port VAGY --sport : a csomagok forrásportja
--destination-port VAGY --dport : a csomagok cél portjának meghatározása
22:80 : port tartomány megadása, a két port közötti összes port
:22 : 22 és az összes alacsonyabb port megadása
80: : 80 és az összes magasabb portszám beállítása
-m multiport --dports 22,25,80 : egy szabályban több CÉLport definiálása
-m multiport --sports 22,25,80 : egy szabályban több FORRÁSport definiálása
Célok (target) avagy műveletek
Az adott szabályban a rá illeszkedő csomagra vonatkozó művelet meghatározása azaz -j "target"
ACCEPT : engedélyezés
DROP : eldobás válasz nélkül
RECEJT : eldobás, válasz küldéssel (pl. Destination Port Unreachable)
LOG : logolás
DNAT : destination NAT, célcímet módosítja. Port forwardhoz szokás alkalmazni
: a PREROUTING láncon a nat táblában.
--to-destination 192.168.1.253:80
: az adott IP-re és portra dobja át a forgalmat.
MASQUERADE : maszkolás dinamikusan. Pl PPPoE kapcsolathoz ahol nincs fix publikus IP cím.
: POSTROUTING láncon a nat táblában szokás használni
SNAT : source NAT, a forráscímet módosítja a megadottra, maszkoláshoz használatos
: Általában több publikus IP-vel rendelkező hálózatban van értelme,
: POSTROUTING láncon a nat táblában használható
--to-source 195.34.16.70
: vagyis az adott kimenő forráscímmel látja el a csomagot.
REDIRECT : lokális portra irányít át. Transzparens szűrésnél lehet értelme
: PREROUTING láncon, pl 110-re jövő forgalmat átirányítja a 8110-re.
-j -vel akár saját láncba is irányítható a forgalom, amennyiben a lánc létezik és a csomag a szabályra illeszkedik.
Folytatás később. Addig emésszétek! :)