Elhűlve tapasztalom, hogy a Linux felhasználók nagy része azt hiszi nem kell tűzfal, sőt olyannal is találkoztam, aki nem értette minek is ez a nagy találmány : >, ez nem is baj, majd idővel megérti és megtanulja. Van aki érti, hogy kell, de nem tudja, hogy kezdjen neki, ilyenkor jönnek elő a különböző frontendek (egy program által nyújtott felület, elterjedten parancssoros eszköz grafikus felülete) pl. firestarter, guarddog és társai, de valljuk be, iptables fickósabb és elegánsabb, és előbb utóbb úgy is belefut mindenki, akit érdekel a Linux téma, gondoltam írok egy vázlatot róla.
Tűzfal: Röviden és tömören túl.kép úgy tudnám megfogalmazni, hogy kimenő és bejövő csomagok szűrése. Több csoportra oszthatók:
- Stateless /csomagszűrő/: Minden egyes csomagot megvizsgál és a keret információi alapján eldönti mi történjen a csomaggal.
- Statefull /állapotfigyelő/: Megvizsgálja az első csomagot a forrásból, majd az összetartozó csomagokra ugyan azt a szabályt alkalmazza mint az elsőre.
- Proxy-tűzfal/Tartalomfigyelő: Beengedi a csomagokat, összeállítja, majd ellenőrzi...
Iptables: A Linux kernel csomagszűrő tűzfal modulja.
Vágjunk is bele, az iptables előcsalogatható az iptables paranccsal. A működése, a csomagok keresztülhaladnak láncokon és ezeknek a szabályait, egyesével alkalmazzuk rájuk, ha a csomag nem felel meg az aktuális szabálynak tovább lép a láncban következő szabályhoz, amikor a csomag eléri a lánc utolsó szabályát és nem volt rá illeszkedő szabály definiálva, az úgynevezett alapértelmezett policy, amit alkalmazunk rá... Szabályok: illesztési feltételt tartalmaz és egy célt, hogy mi történjen a csomaggal, ha illeszkedik (ahhoz, hogy egy szabály illeszkedjen a csomagra, minden illesztési feltételnek teljesülnie kell), a cél végrehajtódik.
Láncok:
- PREROUTING: miután megérkezik egy hálózati interfészről
- POSTROUTING: még mielőtt kilépne egy hálózati interfészről
- INPUT: bejövő csomag, mielőtt helyi folyamathoz kerülne
- OUTPUT: mielőtt kimenne a csomag
- FORWARD: továbbítás (egyik interfészen beérkezik és azonnal kilép a másikon)
Táblák:
- Filter: A számítógépre beengedhető, átengedhető, kiengedhető forgalmat állítja be (alapértelmezetten ennek a táblának a láncait használja az iptables). Láncai: FORWARD, INPUT, OUTPUT
- Mangle: Csomagmanipulálásra használják. Láncai: FORWARD, INPUT, OUTPUT, POSTROUTING
- Nat: Címfordítás. Láncai: OUTPUT, POSTROUTING, PREROUTING
Célok:
- ACCEPT: Továbbengedi a csomagot.
- DROP: Eldobja a csomagot.
Parancsok:
- -A lánc: adott lánc végéhez új szabály
- -N lánc: új láncot hoz létre
- -L lánc: lánc kilistázása
- -F lánc: lánc kitörlése
- -P lánc: alapértelmezett policy
- -t tábla: ha nem az alapértelmezett táblát kívánjuk használni
Paraméterek:
- -p: csomagprotokoll
- -d: csomag cél
- -s: csomag forrás
- --dport : amelyik portra érkezik
- --sport : amelyik porton kilép
- -j: szabály megadása
- -i : bejövő interfész
- -o : kimenő interfész
Ennyi csak az egésznek kb. a főgerince, pár pl.:
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT #a 1863-as porton bejövő TCP csomagot elfogadja (M$N messanger)
iptables -A INPUT -p tcp --dport 6667 -j DROP #a 6667-es porton bejövő TCP csomagot eldobja (IRC)
iptables -P OUTOUT DROP #a kimenő csomagok esetében, ha nincs illeszkedés a láncon, a csomagot eldobja (alapértelmezett policy)
iptables -F INPUT #törli az INPUT lánc szabályait
jó tűzfalazást... Majd folytatom még a témát sztm és mélyebben belemegyek egy-egy részbe...