IPFW

Allikas: Kuutõrvaja

Sissejuhatus

IP pakettide filtreerimine on üks tehnika, mille abil saab ehitada tulemüüri. Tavaliselt seatakse IP filter tööle masinas, millel on enam kui üks võrgukaarti ja millest võrguliiklus läbi käib. IP filter analüüsib iga IP paketi päist ning talitab vastavalt konfiguratsioonifailis näidatud reeglitele. Näiteks saab teatud aadressile suunatud pakette pillata.

IP filter võib, aga ei pea töötama koos NATiga.

Tuuma kompileerimine

IP filtreerimise kasutamiseks peab tuumas olema toetus, sellele vastavad read

options IPFIREWALL
options IPFIREWALL_VERBOSE

Vaikmisi on IP filter selliste omadustega, et keelatud on igasugune võrguliiklus. Soovides seda tuuma konfiguratsioonist muuta, lisage rida

options IPFIREWALL_DEFAULT_TO_ACCEPT

Üldiselt on see ebasoovitav.

IP filtri konfigureerimine

IP filtri konfigureerimine toimub programmiga Ipfw järgmise süntaksi alusel

ipfw command [index] action [log [logamount number]] proto from src to dst [interface-spec] [options]

Näiteks keelame arvutile ipfw.zoo.tartu.ee igasuguse ligipääsu võrgust 192.168.6.0

bash# ipfw add 100 deny all from 192.168.6.0/24 to ipfw.zoo.tartu.ee 

Näidatud moel võib anda mitmeid IP pakettide filtreerimise reegleid, vaikimisi suurenevad nende järjekorra numbrid saja kaupa. Samu reegleid arvestatakse IP pakettide läbilaskmisel kõigi võrguseadmete puhul ning neid kontrollitakse järgemööda alates väiksemast järjekorranumbrist. Kui pakett klapib reegliga, siis see reegel rakendatakse. Igale paketile rakendub võrguseadme läbimisel vaid üks reegel. Siit järeldub, et konkreetsema sisuga reeglid tuleb esitada varem. Vaikimisi on olemas järjekorranumbriga 65535 reegel, mis keelab igasuguse liikluse

65535 deny ip from any to any

Sisestatud reegleid saab vaadata käsuga

bash# ipfw -a list

Soovides järjekorranumbriga jrk reeglit kustutada, toimub see selliselt

bash# ipfw delete jrk

Soovides kustutada kõik reeglid kasutage käsku flush.

bash# ipfw -f flush

Võtme -f kasutamisel tehakse, ei küsita.

IP filtri kasutamine

IP filtreerimise reegleid saab aktiviseerida rc skriptidest. Vaikimisi on olemas fail /etc/rc.firewall, milles on juba defineeritud 6 võimalust

open - will allow anyone in 
client - will try to protect just this machine 
simple - will try to protect a whole network 
closed - totally disables IP services except via lo0 interface 
UNKNOWN - disables the loading of firewall rules. 
filename - will load the rules in the given filename (full path required) 

Soovides kasutada ühte valmis filtreerimise reeglistikku, näiteks open, peab näitama süsteemi konfiguratsioonifailis /etc/rc.conf read

firewall_enable="YES"
firewall_type="client"

Ilmselt on kõige paindlikum kasutada viimast, st näidata pika teega failinimi, kuhu on sisestatud just teie olukorrale sobivad filtreerimise käsud. Kui sobivad reeglid on aktiivsed, siis saab nad salvestada sobivas formaadis käsuga

bash# ipfw list

igale reale tuleb lisada ette add.

Loendur

Iga IP filreerimise reegliga on seostatud ka loendurid

paketiloendur 
baidiloendur 
logi loendur 
viimane filtri rakendumise aeg 

Loendurite näite saab vaadata käsuga

bash# ipfw -at show

Loendurite nullimiseks kasutage käsku zero ja näidake reegli järjekorranumber, näiteks nullime tuhandenda reegli loendurid

bash# ipfw zero 1000

Kui reegli järjekorranumber jätta näitamata, siis nullitakse kõikide reeglite kõik loendurid.

Logi

Et logimine toimuks, peab sisalduma tuumas vastav toetus

options IPFIREWALL_VERBOSE

Logimine roimub reegli kaupa Syslogi. Reegli juures peab olema samuti näidatud actioni taga parameeter log. Kui te soovite logida vaid näiteks esimest sadat paketti, millele see reegel rakendub, siis kasutage logi järel parameetrit logamount 100. Näiteks kirjutame reegli, mis logib arvutist kõikjale väljuvat esimest sadat telnetiga seotud paketti

bash# ipfw add accept log logamount 100 from ipfw.zoo.tartu.ee to any 23

Kui logitud pakettide arv sai täis ning te soovite veel logida, siis tuleb selle reegli logi loendur nullida

bash# ipfw zero jrk

Soovides salvestada IP filtreerimise logi eraldi faili /var/log/ipfw.log lisage faili /etc/syslog.conf read

!ipfw
*.*                                             /var/log/ipfw.log