User Tools

Site Tools


pf

=====Packet Filter===== ====Indítása=== ===OpenBSD alatt=== OpenBSD 4.6-os előtti verziók esetén a ///etc/rc.conf.local// fájlba vegyük fel a következőt: pf= A rendszer a szabályokat a ///etc/pf.conf// fájlból tölti be. 4.6 verziótól kezdve a csomagszűrő alapértelmezetten be van kapcsolva, így nincs más dolgunk, mint a ///etc/pf.conf// fájlt nekünk tetsző módon beállítani. Amennyiben ki szereténk kapcsolni a csomagszűrőt, a következőt vegyük fel a ///etc/rc.conf.local// fájlba: pf=NO ===FreeBSD alatt=== FreeBSD esetén a következő beállításokat kell elvégezni: \\ Az /etc/rc.conf fájlba írjuk be a következő sorokat: pf_enable="YES" # a PF engedélyezése (a modul betöltése, ha kell) pf_rules="/etc/pf.conf" # a pf szabályait tartalmazó állomány pf_flags="" # a pfctl indításához szükséges további paraméterek pflog_enable="YES" # a pflogd elindítása pflog_logfile="/var/log/pflog" # hol tartsa a pflogd az naplóit pflog_flags="" # a pflogd indításához szükséges paraméterek Ezzel nagyjából készen is lennénk, hacsak nem akarunk [[:unix:ALTQ|ALTQ-t]] használni. Ha igen új kernelt kell forgatnunk, amiben a következőket kell bedrótozni: options ALTQ options ALTQ_CBQ # osztályozás alapú besorolás (Class Bases Queuing, CBQ) options ALTQ_RED # véletlen korai észlelés (Random Early Detection, RED) options ALTQ_RIO # RED befele/kifele options ALTQ_HFSC # hiearchikus csomagütemező (Hierarchical Packet Scheduler, HFSC) options ALTQ_PRIQ # prioritásos besorolás (Priority Queuing, PRIQ) options ALTQ_NOPCC # az SMP esetén kell ====Üzemeltetés==== ===Naplózás=== A log fájlt a következő módon tudjuk interaktív módon olvasni: % tcpdump -n -e -ttt -i pflog0 Ha csak lepörgetni szeretnénk a fájlt használjuk következő parancsot: % tcpdump -n -e -ttt -r /var/log/pflog ===Szabálybetöltés=== Az eddigi szabályok törlése és újak beolvasása az /etc/pf.conf.proba fájlból: % pfctl -F all -f /etc/pf.conf.proba Az /etc/pf.conf állomány ellenőrzése a benne levő szabályok betöltése nélkül: % pfctl -vnf /etc/pf.conf A pftop nevű programmal pedig top-szerűen figyelhetjük az aktuális kapcsolatokat. A ports fából könnyen telepíthető. % pftop -s1 ===Forgalomfigyelés=== Az aktuális szabályok és az csomagok száma amire alkalmazták őket: % pfctl -v -s rules Ezt szűrhetjük az alkalmazott szabályokra is: % pfctl -v -s rules | grep -B 1 "Packets: [1-9]" ===Szabályalkotás=== ====Trükkök==== ===fail2ban=== A GNU/Linuxos körökben elterjedt és igen kedvelt, illetve hasznos script, a fail2ban funkcionalitása igen könnyen megvalósítható a PF segítségével. Először is létre kell hoznunk egy táblát, amiben a kizárt IP címeket tárolja a csomagszűrő. table <ssh_bruteforce> persist A persist kapcsoló azt jelenti, hogy a tábla akkor is létrejön, ha nem tartalmaz IP címet, így menet közben fel lehet tölteni. Másodszor felvesszük azt a tiltó szabályt, ami a táblában szereplő IP címeket teljesen kizárja. block in log quick from <ssh_bruteforce> A quick kapcsoló segítségével érjük el azt, hogy a szabály további elemeit ne vizsgálja azokra az IP-kre, amik a táblában vannak, így mindenképpen tiltásra kerülnek. Harmadszor összeállítjuk a szabályt, ami a figyelendő portot engedélyezi és a meghatározott csatlakozások esetén tiltja a bejövő IP címet. pass in quick on $ext_if inet proto tcp from any to $ext_if port 22 flags S/SA synproxy state (max-src-conn-rate 3/60, overload <ssh_bruteforce> flush global) Ez a szabály 60 másodpercenként 3 kapcsolódást engedélyez a 22-es tcp portra. Amelyik IP ezt meghaladja az bekerül az ssh_bruteforce táblába. A flush global opció a táblába töltéskor törli az összes olyan elő kapcsolatot, amelyiknek köze van az imént kitiltott IP címhez, így biztosítva azt, hogy nem marad kiskapu a támadónak. A tiltott IP címeket az alábbi paranccsal tudod kilistázni. pfctl -t ssh_bruteforce -vTshow Kitiltott IP címet az alábbi paranccsal tudsz törölni. pfctl -t ssh_bruteforce -vTdelete [IP] ====Hibák==== FreeBSD alatt előfordulhat, hogy még sem indul el rendszerindításkor a PF tűzfal. Ennek egyik oka lehet, hogy a sysctrl-ban az [[IPFW]] van beállítva indítandó tűzfalként. Ha ez így van az /etc/sysctl.conf-fájba írjuk be: net.inet.ip.fw.enable=0 ====Minta beállítás==== [[:file:pfconf|példa pf.conf]]

pf.txt · Utolsó módosítás: 2010/04/19 13:35 szerkesztette: scout3r