OpenBSD tulemüür
Sisukord
Sissejuhatus
OpenBSD operatsioonisüsteemi kasutamine võrgusõlmes on tema üheks oluliseks kasutusalaks. OpenBSD tulemüüril (ruuteril) on muu hulgas sellised omadused
- liikluse filtreerimine - pf, mitmesugustele tingimustele põhinevate piirangute seadmine sh automaatselt täituvad ja tühjenevad blacklistid, synproxy
- liikluse prioritiseerimine - altq
- koormusjaotur - pf
- statistika ja andmete analüüsiks kogumise vahendid (pfctl, pftop, pfstat, pflogd, tcpdump)
- VPN - IPsec, stunnel
- redundantse tulemüüri klustri võimalus - pfsync (koos sessioonide edasiandmisega)
Ülesandepüstitus
Tulemüüri seadistamine algab sellest, et võimalikult täpselt ette kujutada, millist tulemust saavutada soovitakse. Olgu käesoleva pala kontekstis tegu sellise ülesandepüstitusega, mida iseloomustab skeem
internet | default gw, 172.16.1.18 | | fxp0, 172.16.1.17/28 __|__ | | rl0, 10.0.1.254/24 | |------ DMZ 10.0.1.0/24 ----- |_____| | | em0, 192.168.1.254/24 | | |_______ KALAKE - 192.168.1.0/24 _________
ning peavad olema täidetud sellised nõuded
- Kohtvõrgu osast KALAKE, kus asuvad kasutajate töökohaarvutid pääseb piiramatult avalikku internetti ning DMZ võrku.
- Avalikust internetist peab pääsema ainult DMZ võrgus töötava veebiserveri juurde.
- DMZ võrgust ei saa algatada ühendusti kuskil suunas.
- Tulemüüri kohtvõrgu ja DMZ võrguliidestel töötab nimeserveri teenus.
- Tulemüüris tehakse NAT'i DMZ ning KALAKE võrgus paiknevatele arvutitele.
- DMZ ja KALAKE võrgu arvutite vaikelüüsiks ning nimeserveriks on vastavalt 10.0.1.254 ja 192.168.1.254.
Tulemüüri võrgu seadistamine
Peale tulemüüri paigaldamist, tuleks tulemüür füüsiliselt internetist lahti ühendada, seadistada käsitsi võrguseadmetele joonisel toodud aadressid, veel parem, veenduda, et eksisteerivad sellise sisuga järgnevad failid (et failidesse kirjutatud seadistused oleksid tänu nendele failidele kehtestatud, peaks peale failide muutmist arvutile tegema alglaadimise)
# cat /etc/hostname.fxp0 inet 172.16.1.17 255.255.255.240 NONE # cat /etc/hostname.rl0 inet 10.0.1.254 255.255.255.0 NONE # cat /etc/hostname.em0 inet 192.168.1.254 255.255.255.0 NONE # cat /etc/mygate 172.16.1.18 # cat /etc/resolv.conf lookup file bind 127.0.0.1 # cat /etc/sysctl.conf | grep net.inet.ip.forward net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets
Seejärel ühendada külge DMZ ja KALAKE kohtvõrgust mõni arvuti ning veenduda, et kui paketifilter on välja lülitatud
# pfctl -d
siis ruuting töötab. Seda võiks kontrollida nt ping programmi abil.
PF paketifiltri seadistamine
PF paketifiltri tööd juhitakse programmiga pfctl, mille abil saab lisaks paketifiltri sisse ja välja lülitamisele laadida tekstifailis kirjas olevad paketifiltri reeglid, tavaliselt pfctl seadistusfailiks /etc/pf.conf, põhjalik PF paketifiltri juhend asub aadressil http://www.openbsd.org/faq/pf/index.html.
Selleks, et liiklus läbiks tulemüüri võiks kõige lihtsamal olla süntaksiliselt korrektse /etc/pf.conf faili sisu
pass all
Reeglite laadimine toimub käsuga
# pfctl -f /etc/pf.conf
Ning vajadusel reeglite kehtestamine ehk sisselülitamine ning väljalülitamine vastavalt käskudega
# pfctl -e # pfctl -d
PF paketifiltri kontrolli all olevate parameetrite väärtusi saab vaadata käsuga, OpenBSD v. 4.1 vastav väljund on tootud illustratsiooniks, allpool on lühidalt seda väljundit kommenteeritud
# pfctl -sa FILTER RULES: pass all flags S/SA keep state No queue in use INFO: Status: Enabled for 0 days 00:00:02 Debug: Urgent State Table Total Rate current entries 0 searches 12 6.0/s inserts 0 0.0/s removals 0 0.0/s Counters match 12 6.0/s bad-offset 0 0.0/s fragment 0 0.0/s short 0 0.0/s normalize 0 0.0/s memory 0 0.0/s bad-timestamp 0 0.0/s congestion 0 0.0/s ip-option 0 0.0/s proto-cksum 0 0.0/s state-mismatch 0 0.0/s state-insert 0 0.0/s state-limit 0 0.0/s src-limit 0 0.0/s synproxy 0 0.0/s TIMEOUTS: tcp.first 120s tcp.opening 30s tcp.established 86400s tcp.closing 900s tcp.finwait 45s tcp.closed 90s tcp.tsdiff 30s udp.first 60s udp.single 30s udp.multiple 60s icmp.first 20s icmp.error 10s other.first 60s other.single 30s other.multiple 60s frag 30s interval 10s adaptive.start 6000 states adaptive.end 12000 states src.track 0s LIMITS: states hard limit 10000 src-nodes hard limit 10000 frags hard limit 5000 tables hard limit 1000 table-entries hard limit 200000 OS FINGERPRINTS: 696 fingerprints loaded