Otthoni és irodai hálózatok a gyakorlatban - Labor: Tűzfal

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 22., 12:46-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|SohoLaborFirewall}} Laborvezető: Kovács Balázs, kovacsb@tmit.bme.hu <br> Segédanyag: {{InLineFileLink|Valaszthato|SohoLaborFirewall|s…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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:

Ezen a helyen volt linkelve a(z) soho_tuzfal.pdf nevű fájl ("Bevezető a tűzfalakról, részletes iptables leírás" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Valaszthato/SohoLaborFirewall oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)


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.