Otthoni és irodai hálózatok a gyakorlatban - Labor: Tűzfal
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Laborvezető: Kovács Balázs, kovacsb@tmit.bme.hu
Segédanyag:
0. feladat
Állítsuk az INPUT chain policyjét DROP-ra.
=iptables -P INPUT DROP=
Ezzel elérjük, hogy minden bejövő csomagot eldobjon, ha nem talál rá vonatkozó szabályt.
A jelenlegi tűzfal beállításokat az =iptables -vnL= parancs listázza ki. Az =-L= kapcsoló jelenti a listázás parancsot, a =-v= engedélyezi a verbose módot, a =-n= letiltja a táblában lévő IP címekre a DNS feloldást (így gyorsabban megjelenik a lista).
A táblázat oszlopai:
- =pkts=: szabályra illeszkedő csomagok száma
- =bytes=: szabályra illeszkedő csomagok összmérete
- =target=: mit csinál a csomaggal (pl. ACCEPT, REJECT, DROP, LOG)
- =prot=: protokoll szűrés
- =opt=
- =in=
- =out=
- =source=: szűrés forrás címre vagy címtartományra
- =destination=: szűrés cél címre vagy címtartományra (akkor lehet szerepe, ha a host csomagok route-olására van beállítva)
- utolsó, fejléc nélküli oszlop: egyéb szűrők (pl. port vagy TCP státusz)
A listában található szabályokra sorban próbál illeszteni, és az első találat után megáll a feldolgozással.
1. feladat
Engedélyezzük a ping ICMP csomagokat.
iptables -A INPUT -p icmp -j ACCEPT
- =-A=: a szabály lista végére fűz egy új szabályt
- =INPUT=: az INPUT chain-t választja ki, azaz a szabály a bejövő forgalomra vonatkozik
- =-p icmp=: protokollra szűr
- =-j ACCEPT=: fogadja az érkező csomagot
Tesztelés: másik gépről ellenőrizhető, hogy megpingelhető-e az adott gép a bejegyzés felvétele előtt illetve után. A =route= parancs kilistázza, hogy az eth0 interfészen érhető el az Internet, kizárásos alapon az eth1 a lokális hálózat. A gép IP címét beállítottam 10.1.1.7/24-re (ifconfig eth1 10.1.1.7 netmask 255.255.255.0</code).
2. feladat
Engedélyezzük a belső hálózatról érkező TCP kapcsolatokat.
iptables -A INPUT -p tcp -s 10.1.1.0/24 -j ACCEPT
- =-s=: forrás cím és netmask
Tesztelés: a =netstat -taun= felsorolja az aktuálisan használt hálózati erőforrásokat, amiből kiderül, hogy pl. fut egy FTP szerver. A szerverhez csak a szabály beállítása után lehet csatlakozni másik gépről.
3. feladat
Állítsunk be szűrőt, hogy TCP kapcsolatot csak belülről lehessen kezdeményezni.
A TCP kapcsolatnak három fázisa van:
- NEW: kapcsolódási kérés
- RELATED: válasz a kapcsolódási kérésre
- ESTABLISHED: kiépült kapcsolat
Csak azokat a csomagokat fogadjuk el, amelyek az utóbbi két állapot valamelyikében vannak.
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
Tesztelés: belülről továbbra is lehet csatlakozni egy másik gép FTP szerveréhez, de ehhez a géphez kívülről nem lehet kapcsolatot kezdeményezni.
4. feladat
Utasítsuk el a külső hálózatból érkező TCP csomagokat ICMP visszajelzéssel.
A külső hálózat az eth0-n keresztül elérhető, arra szűrünk.
iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with icmp-proto-unreachable
Egyéb trükkök
Szabályok beszúrása, módosítása, törlése
- =iptables -I INPUT 3 [...]=: beszúrja a ... szabályt harmadiknak
- =iptables -R INPUT 2 [...]=: kicseréli a második szabályt ...-tal
- =iptables -D INPUT 1=: törli az első szabályt
Csomagok logolása
- =iptables -I INPUT 3 -j LOG=: logol minden csomagot, amire nem illeszkedett az első vagy a második szabály. A logolás nem állítja le a szabálylánc feldolgozását, mint az ACCEPT vagy a REJECT.
- A detektált csomagok paraméterei a =/var/log/messages= file-ba kerülnek.
Internet engedélyezése
- Próbáljunk meg letölteni egy weboldalt, és ellenőrizzük a logban, hogy milyen csomagokat akart volna küldeni a böngésző.
- Engedélyezni kell az eth0 interfész 80-as portjára bejövő TCP csomagokat:
=iptables -A INPUT -i eth0 -p tcp -sport 80 -j ACCEPT=
- Engedélyezni kell a DNS névfeloldást, ami az 53-as porton, UDP protokollon keresztül történik:
=iptables -A INPUT -i eth0 -p udp -sport 53 -j ACCEPT=
-- Peti - 2006.11.09.