|
|
(ei näidata 2 kasutaja 45 vahepealset redaktsiooni) |
1. rida: |
1. rida: |
− | ===Sissejuhatus=== | + | ===OpenBSD tulemüür=== |
| | | |
− | OpenBSD operatsioonisüsteemi kasutamine võrgusõlmes on tema üheks oluliseks kasutusalaks. OpenBSD tulemüüril (ruuteril) on muu hulgas sellised omadused | + | Järgnevad tekstid eeldavad, et ollakse tuttav OpenBSD kui operatsioonisüsteemi kasutamisega ning on olemas mõõdukas ettekujutus TCP/IP protokollist. |
| + | |
| + | OpenBSD operatsioonisüsteemi kasutamine võrgusõlmes on tema üheks oluliseks kasutusalaks. Sõltuvalt konkreetsetest vajadustest võib OpenBSD tulemüüril olla realiseeritud selliseid funktsioone |
| | | |
| * liikluse filtreerimine - pf, mitmesugustele tingimustele põhinevate piirangute seadmine sh automaatselt täituvad ja tühjenevad blacklistid, synproxy | | * liikluse filtreerimine - pf, mitmesugustele tingimustele põhinevate piirangute seadmine sh automaatselt täituvad ja tühjenevad blacklistid, synproxy |
− | * NAT - mitte-avalike aadressidega arvutitele interneti kättesaadavaks tegemine | + | * NAT - mitte-avalike aadressidega arvutite interneti ühendamine |
| * liikluse prioritiseerimine - altq | | * liikluse prioritiseerimine - altq |
− | * koormusjaotur - pf | + | * koormusjaotur - pf, relayd |
− | * statistika ja andmete analüüsiks kogumise vahendid (pfctl, pftop, tcpstat, pflogd, tcpdump)
| + | * tulemüüri kluster - mitmest erinevast füüsilisest arvutist koosnev üks loogiline tulemüür (nn active/passive või active/active režiimis; carp, pfsync) |
− | * VPN - IPsec, stunnel
| + | * statistika ja andmete analüüsiks kogumine (pfctl, pftop, tcpstat, pflogd, tcpdump, symon, syweb, netflow) |
− | * redundantse tulemüüri klustri võimalus - pfsync (koos sessioonide edasiandmisega) | + | * Sild (ingl. k. bridge) |
− | | + | * ruutinguprotokollide bgp ja ospf kasutamine |
− | Käesoleva teksti mõistmiseks on abiks mõõdukas ettekujutus TCP/IP protokollist.
| |
− | | |
− | ===Ü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
| |
− | 2 Mbit/s download | default gw, 172.16.1.18
| |
− | 768 kbit/s upload |
| |
− | | fxp0, 172.16.1.17/30
| |
− | __|__
| |
− | | | rl0, 10.0.100.254/24
| |
− | | |------ DMZ 10.0.100.0/24 -----
| |
− | |_____|
| |
− | |
| |
− | | nfe0, 192.168.100.254/24
| |
− | |
| |
− | |
| |
− | |_______ KALAKE - 192.168.100.0/24 _________
| |
− | | |
− | ning peavad olema täidetud sellised nõuded
| |
− | | |
− | # Tulemüüri KALAKE ja DMZ võrkude liidestel töötab nimeteenus.
| |
− | # KALAKE ja DMZ võrgu arvutite vaikelüüsiks ning nimeserveriks on vastavalt 192.168.100.254 ja 10.0.100.254.
| |
− | # Kohtvõrgu osast KALAKE, kus asuvad kasutajate töökohaarvutid pääseb piiramatult avalikku internetti ning DMZ võrku.
| |
− | # Tulemüüris tehakse NAT-teisendust DMZ ning KALAKE võrgus paiknevatele arvutitele.
| |
− | # Avalikust internetist pääseb ainult DMZ võrgus aadressil 10.0.100.1 portidel 80 ja 443 töötava veebiserveri juurde. Isegi juhul kui sellel veebiserveri arvutil ei pakuta muudel portidel teenuseid ei ole mingit põhjust lasta tulemüürist läbi asjasse mittepuutuvaid pakette tulemüüri tagust ethernetti risustama.
| |
− | # DMZ võrgust ei saa algatada ühendusti kuskil suunas va tulemüüri liidesel töötav nimeserver.
| |
− | # Välisühendusest võib DMZ kasutada kuni 256 kbit/s download'iks ning 384 kbit/s upload'iks (up on tulemüürist eemale ning down tulemüüri suunal, asudes antud juhul mõtteliselt välisseadmel; st 384 kbit/s kiirusega saavad kasutajad veebiserverist andmeid kopeerida ning 256 kbit/s veebiserverisse üles laadida)
| |
− | # Välisühendus kasutamine ei ole KALAKE võrgu jaoks praktiliselt piiratud.
| |
− | | |
− | ===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.252 NONE
| |
− | # cat /etc/hostname.rl0
| |
− | inet 10.0.100.254 255.255.255.0 NONE
| |
− | # cat /etc/hostname.nfe0
| |
− | inet 192.168.100.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.
| |
− | | |
− | ===Nimeserveri kasutamine===
| |
− | | |
− | Üldiselt töötavad võrku ühendatud arvutid paremini, kui nimesüsteem töötab korrektselt. Seepärast tuleb käivitada kohalikke nimeseid ja vastavaid pöördteisendusi lahendava ning nn cache'ivas rezhiimis töötava nimeserveri. Alustuseks sobib kävitada lihtsalt vaikimisi /var/named kataloogis olevate seadistustega nimeserver
| |
− | | |
− | # named
| |
− | | |
− | ning veendumaks, et ta töötab küsida
| |
− | | |
− | # dig @localhost localhost
| |
− | | |
− | Nimeserveri kasutamise kohta on üksikasjalikum juhend toodud palas 'OpenBSD levinud teenuste seadistamine ja käivitamine'.
| |
− | | |
− | ===pfctl programmi kasutamine===
| |
− | | |
− | PF paketifiltri töö juhtimiseks on programm pfctl, mille abil saab laadida tekstifailis kirjas olevad paketifiltri reeglid ning lisaks paketifiltri välja ja sisse lülitada. Tavaliselt on reeglid kirjas failis /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 ja kehtestamine toimub käsuga, nii tuleb öelda ka iga kord peale /etc/pf.conf faili muutmist muudatuste kehtestamiseks
| |
− | | |
− | # pfctl -f /etc/pf.conf
| |
− | | |
− | Vajadusel paketifiltri sisse-ning väljalülitamine toimub 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
| |
− | | |
− | Siinjuures tuleks tähele panna järgmisi sektsioone
| |
− | | |
− | * FILTER RULES - /etc/pf.conf failis sisalduv reegel kirjutati lahti 'pass all flags S/SA keep state', mis tähendab, et lisati juurde meie poolt ilmutatud kujul näitamata jäänud parameetrite vaikeväärtused
| |
− | * INFO - paketifilter on sisselülitatud olekus, 'Status: Enabled for 0 days 00:00:02'
| |
− | * TIMEOUTS - mitmesugused TCP/IP protokolli alusel toimuvale andmevahetusele mõju avaldavad timeout parameetrid
| |
− | * LIMITS - tulemüüri ressurssikasutusele seatud piirangud
| |
− | | |
− | ===PF paketifiltri reeglite kirjutamine===
| |
− | | |
− | MACROS sektsioonis on kirjeldatud edaspidi kasutavate muutujate väärtused.
| |
− | | |
− | OPTIONS sektsioonis on kirjeldatud tulemüüri tööd üldiselt mõjutavate parameetrite vaikeväärtused. Antud juhul on öeldud, et lo seadme liiklusele üldse mitte rakendada paketifiltrit.
| |
− | | |
− | NORMALIZATION sektsioonis on kirjas määrangud seoses IP pakettide korrastamisega, antud juhul, et tulemüüri sisenevat liiklust tuleb defragmenteerida (scrub in all).
| |
− | | |
− | FILTER RULES sektsioonis on kirjas paketifiltri reeglid, mille abil abil kontrollitakse tulemüüri erinevaid võrguseadmeid läbivat liiklust ja sellest tulenevalt ka tulemüüri läbivat liiklust. Filter reegli juures on kirjas
| |
− | | |
− | * muster, millega iga võrguseadet läbivat TCP/IP paketti sh tema liikumise suunda võrreldakse | |
− | * tegevus - pass või block
| |
− | | |
− | Pakette klapitatakse reeglitega nende seadistusfailis esinemise järjekorras, kusjuures viimasena paketiga klappinud reegli juures näidatud tegevus rakendatakse. Kui paketiga ei klapi ükski reegel, siis viimane ilmutamata kujul olev reegel lubab paketi läbi. Erandiks on quick parameetri kasutamine, mille puhul paketi klappimisel rakendatakse reegel kohemaid.
| |
− | | |
− | ALTQ sektsioonis on kirjeldatud liikluse prioritiseerimine. Liikluse prioritiseerimise üks põhjusi on kontrollida võrguseadmele vastava ühenduse täituvust, seega mõtet omab kontrollida seadmest välja suunduvat liiklust.
| |
− | | |
− | TRANSLATIONS RULES sektsioonis on näidatud, milliste pakettide puhul toimub IP aadresside NAT-teisendus, OpenBSD paketifiltri kontekstis tähendab see ip paketi SRC aadressi ja SRC pordi ümberkirjutust. Antud juhul ütleb reegel, et välist seadmest väljuvate pakettide puhul, mille src aadress ei ole välise interface'i aadress, tuleb SRC aadress muuta välise interface'i aadressiks.
| |
− | | |
− | Samuti on näidatud TRANSLATION RULES sektsioonis, milliste pakettide puhul toimub RDR-teisendus ehk port forwarding, OpenBSD paketifiltri kontekstis tähendab see ip paketi DST ip aadressi ja DST pordi ümberkirjutust. Antud juhul ütleb reegel, et välisest seadmest sisenevatel pakettidel, mille DST aadress on tulemüüri väline aadress ning DST port on 80 või 443 tuleb teha DST ip aadressi ümberkirjutus, DST port jääb samaks. Seejärel liiguvad paketid edasi uude sihtpunkti.
| |
− | | |
− | TRANSLATION RULES kasutamisel tuleb arvestada sellega, et rakendatakse esimesena paketiga klappiv reeglit ning FILTER RULES reegleid rakendatakse TRANSLATION RULES reeglite poolt ümber kirjutatud ip pakettidele.
| |
− | | |
− | Paketifiltri seadistusfailis on sektsioonide järjekord oluline, sektsioonid peavad järgnema nii nagu on näites esitatud.
| |
− | | |
− | # MACROS
| |
− | ext_if="fxp0"
| |
− | dmz_if="rl0"
| |
− | kalake_if="nfe0"
| |
− |
| |
− | # blacklist
| |
− | # table <blacklist> persist file "/etc/pf.table.blacklist"
| |
− | # yhenduste_piir="max-src-nodes 50000, max-src-conn 80, max-src-conn-rate 500 / 10, overload <blacklist> flush global"
| |
− |
| |
− | # OPTIONS
| |
− | set skip on lo
| |
− |
| |
− | # NORMALIZATION
| |
− | scrub in all
| |
− |
| |
− | # ALTQ
| |
− | altq on $ext_if cbq bandwidth 768Kb queue { up_dmz, up_kalake }
| |
− | queue up_kalake bandwidth 384Kb cbq(default,borrow)
| |
− | queue up_dmz bandwidth 384Kb
| |
− |
| |
− | altq on $kalake_if cbq bandwidth 2Mb queue { dn_kalake }
| |
− | queue dn_kalake bandwidth 2Mb cbq(default)
| |
− | altq on $dmz_if cbq bandwidth 256Mb queue { dn_dmz }
| |
− | queue dn_dmz bandwidth 256Kb cbq(default)
| |
− |
| |
− | # TRANSLATION RULES
| |
− | nat on $ext_if inet from !$ext_if -> $ext_if
| |
− | rdr on $ext_if inet proto tcp to $ext_if port { 80, 443 } -> 10.0.100.1
| |
− |
| |
− | # FILTER RULES
| |
− | # keelata seadmetest siseneda pakettidel, mis sealt kindlasti siseneda ei saaks
| |
− | # nt kui valisest seadmest sisenab kohtvorgu src ip aadressiga pakett
| |
− | # block in quick on $ext_if from <blacklist>
| |
− | antispoof quick for { $ext_if $dmz_if $kalake_if } inet
| |
− |
| |
− | # vaikimisi on igasugune liiklus keelatud
| |
− | # block log all
| |
− | block all
| |
− |
| |
− | # lubatud on igast seadmest valjuv liiklus
| |
− | # (piirangud rakendatakse sisenemisel, nii on alustuseks lihtsam ja piisavalt turvaline)
| |
− | pass out quick all
| |
− |
| |
− | # lubatud kohtvorgust sisenev suund
| |
− | pass in quick on $kalake_if queue up_kalake
| |
− |
| |
− | # lubatud internetist dmz veebiserverisse liiklus
| |
− | # pass in quick on $ext_if proto tcp to 10.0.100.1 port { 80, 443 } synproxy state ($yhenduste_piir) queue up_dmz
| |
− | pass in quick on $ext_if proto tcp to 10.0.100.1 port { 80, 443 } synproxy state queue up_dmz
| |
− |
| |
− | # lubatud dmz pealt esitada tulemyyrile nimeparinguid
| |
− | pass in quick on $dmz_if proto udp to 10.0.100.254 port 53
| |
− | | |
− | Toodud reeglite kehtestamisel paketifilter asendab muutujad nende väärtustega ning kirjutatakse ilmutult välja vaikeväärtused, tulemusena moodustatakse sellised reeglid ning (ilmuvad sarnased olekud, mis on kooskõlas allpool esitatud pftop piltidega)
| |
− | | |
− | TRANSLATION RULES:
| |
− | nat on fxp0 inet from ! 172.16.1.17 to any -> 172.16.1.17
| |
− | rdr on fxp0 inet proto tcp from any to 172.16.1.17 port = www -> 10.0.100.1
| |
− | rdr on fxp0 inet proto tcp from any to 172.16.1.17 port = https -> 10.0.100.1
| |
− |
| |
− | FILTER RULES:
| |
− | scrub in all fragment reassemble
| |
− | block drop all
| |
− | block drop in quick on ! fxp0 inet from 172.16.1.16/30 to any
| |
− | block drop in quick inet from 172.16.1.17 to any
| |
− | block drop in quick on ! rl0 inet from 10.0.100.0/24 to any
| |
− | block drop in quick inet from 10.0.100.254 to any
| |
− | block drop in quick on ! nfe0 inet from 192.168.100.0/24 to any
| |
− | block drop in quick inet from 192.168.100.254 to any
| |
− | pass out quick all flags S/SA keep state
| |
− | pass in quick on nfe0 all flags S/SA keep state queue up_kalake
| |
− | pass in quick on fxp0 inet proto tcp from any to 10.0.100.1 port = www flags S/SA synproxy state queue up_dmz
| |
− | pass in quick on fxp0 inet proto tcp from any to 10.0.100.1 port = https flags S/SA synproxy state queue up_dmz
| |
− | pass in quick on rl0 inet proto udp from any to 10.0.100.254 port = domain keep state
| |
− |
| |
− | ALTQ:
| |
− | queue root_fxp0 on fxp0 bandwidth 768Kb priority 0 cbq( wrr root ) {up_kalake, up_dmz}
| |
− | queue up_kalake on fxp0 bandwidth 384Kb cbq( borrow default )
| |
− | queue up_dmz on fxp0 bandwidth 384Kb
| |
− | queue root_nfe0 on nfe0 bandwidth 2Mb priority 0 cbq( wrr root ) {dn_kalake}
| |
− | queue dn_kalake on nfe0 bandwidth 2Mb cbq( default )
| |
− | queue root_rl0 on rl0 bandwidth 256Mb priority 0 cbq( wrr root ) {dn_dmz}
| |
− | queue dn_dmz on rl0 bandwidth 256Kb cbq( default )
| |
− |
| |
− | STATES:
| |
− | all tcp 192.168.1.254:22 <- 192.168.100.1:49173 ESTABLISHED:ESTABLISHED
| |
− | all tcp 192.168.100.1:49173 -> 172.16.1.17:63986 -> 192.168.1.254:22 ESTABLISHED:ESTABLISHED
| |
− | all tcp 10.0.100.1:80 <- 172.16.1.17:80 <- 172.16.1.18:4292 ESTABLISHED:ESTABLISHED
| |
− | all tcp 172.16.1.18:4294 -> 10.0.100.1:80 ESTABLISHED:ESTABLISHED
| |
− |
| |
− | INFO:
| |
− | Status: Enabled for 0 days 01:09:36 Debug: Urgent
| |
− |
| |
− | State Table Total Rate
| |
− | current entries 4
| |
− | searches 819078 196.1/s
| |
− | inserts 40 0.0/s
| |
− | removals 30 0.0/s
| |
− | | |
− | Veebiserveri suunal moodustatavate TCP ühenduste puhul kasutatakse SYN-proxy tehnikat, mis tähendab, et klient pöördub tulemüüri poole, kuid tulemüür käitub TCP kihis töötava proxyna, eriti oluline on seejuures, et tulemüür ei vahenda klienti ennem TCP 3-way handshake'ingu tegemist DMZ võrgus paiknevale veebiserverile.
| |
− | | |
− | ===Paketifiltri logimine===
| |
− | | |
− | Kui kasutada blokeerimiseks rida
| |
− | | |
− | block log all
| |
− | | |
− | siis ilmub blokeeritud ühenduse esimene pakett pflog0 seadmele, jälgimiseks sobib kasutada programmi tcpdump, näitekse selliselt
| |
− | | |
− | # tcpdump -nettti pflog0
| |
− | | |
− | Kui paketifilter käivitatakse bootimisel automaatselt, siis käivitatakse pflogd programm, mis salvestab logi faili /var/log/pflog. Seda faili saab lugeda samuti tcpdump programmi abil
| |
− | | |
− | # tcpdump -n -e -ttt -r /var/log/pflog
| |
− | | |
− | Sel juhul tuleks lisaks jälgida, et logimise tulemusena arvuti kõvaketas täis ei saaks. Logiside roteerimist juhub newsyslog, mille seadistusfail on /etc/newsyslog.conf.
| |
− | | |
− | Lisaks automaatselt moodustatud pflog0 seadmele saab kasutaja tekitada ise sarnaseid seadmeid, näiteks korraldada nii, et logitakse kõik veebiserverile laekunud ühendused. Seadme moodustatakse öeldes
| |
− | | |
− | # ifconfig pflog1 create
| |
− | | |
− | Seejärel tuleb paketifiltris tekitada reegel mis lubab ja mis logib
| |
− | | |
− | pass in log (to pflog1) quick on $ext_if inet proto tcp from any to 192.168.1.20 port 25
| |
− | | |
− | Ning faili logimiseks käivitada lisaks pflogd seadmel pflog1
| |
− | | |
− | # pflogd -i pflog1 -f /var/log/pflog1
| |
− | | |
− | Kusjuures selliselt logitakse ainult ühenduse moodustamisel esimese tcp paketi esimesed 116 baiti, sest selle reegliga klapib vaid see pakett. Järgnevad ühendust moodustavad paketid ei klapi reegli endaga otseselt vaid saavad läbi täna keep state nähtusele.
| |
− | | |
− | ===Tulemüüri tegevuse analüüsimine===
| |
− | | |
− | Kui tulemüüris on esialgseks kasutamiseks sobiv komplekti reegleid kirjeldatud ja paketifilter sisse lülitatud, siis lisaks tulemüüri ümber jäävate arvutitega teenustele ligipääsu katsetamisele st ligipääs KALAKE võrgust internetti ning internetist DMZ võrgus asuvale veebiserverile maksab uurida ka vahetult tulemüüris toimuvat. Selleks sobivad programmid
| |
− | | |
− | * pfctl
| |
− | * pftop
| |
− | * tcpstat
| |
− | * tcpdump
| |
− | | |
− | pftop manuaalis (man pftop) on üksikasjalikult kirjeldatud programmi kasutamise võimalusi, muu seas on võimalik käivitada programm interaktiivses rezhiimis ning seejärel
| |
− | | |
− | * klahvi V abil valida erinevate vaadete vahel
| |
− | * klahvi O abil järjestada ridu ümber | |
− | * klahvi P abil jätta parasjagu olev esitus seisma
| |
− | * tühiku klahvi abil värkendada esitust
| |
− | * PgUp ja PgDn või noolte abil kerida ridu üles või alla
| |
− | * klahvi Q abil väljuda programmist
| |
− | | |
− | või käivitada sobivate võtmetega mitte-interaktiivses rezhiimis, näiteks
| |
− | | |
− | # pftop -a -b | less
| |
| | | |
− | Pildil on kujutatud pftop väljund AltQ vaates, kust on näha, et nii KALAKE kui DMZ võrgust toimub upload (KALAKE võrgust on pöördutud välja scp abil ning internetist kopeeritakse wget abil DMZ veebiserveris asuvat faili) ning rakendus limiit, kusjuures DMZ kiirus on selline nagu on reeglitega talle garanteeritud. Samuti on näha, et varem on DMZ vajadus kanali järele olnud väike ning samal ajal on KALAKE DMZ käest ressurssi laenanud, nii nagu reeglitega on lubatud.
| + | Muude populaarsete tulemüürilahenduste seas paistab OpenBSD paketifilter (tulemüür) silma sellistes aspektides |
| | | |
− | [[Pilt:Pftop-kalake-dmz-up-altq.gif]]
| + | * reeglite kirjutamise efektiivsus - mitme pordi või aadressi näitamine ühes reeglis, tabeli konstruktsioon, include'id ja ankrud mitmete failide vahel jaotatud seadistuste kasutamiseks |
| + | * tulemüüri oleku jälgimise võimalus - pfctl utiliidi abil saab suvalisel ajahetkel täpselt kontrollida, millised ühendused tulemüürist läbi käivad ja millised paketifiltri reeglid on ühendusega seotud |
| + | * tulemüüri paketifiltri tegevuste logimine - saab täpselt logida, millised pakette on lubatud läbi või milliseid on takistatud, label'ite kasutamine |
| + | * synproxy - tulemüür tekitab tulemüüri taga töötava serveri eest ära 3-way tcp handshake, et kaitsta serverit syn-floodi eest |
| + | * tcpcookies kasutamise võimalus puudub |
| + | * aktiivne/passiivne kluster - kahest arvutist saab moodustada ühe loogilise tulemüüri, igal ajahetkel pakub teenust vaid üks klustri komponent, kusjuures ümberlülitumisel võetakse üle ka ühendused, st olemasolevad tcp ühendused ei katke |
| + | * aktiivne/aktiivne kluster - kahest arvutist saab moodustada ühe loogilise tulemüüri, nt src ip aadressi alusel käib kliendi ühendus tulemüüri taga oleva serveriga kas läbi ühe või teise tulemüüri |
| + | * automaatne blacklistimine - sõltuvalt allika iseloomust (nt kui palju ühendusi tehakse ajaühikus) saab korraldada allika ip aadressi täpsusega automaatse blacklistimise (sh blacklistist väljatoomise) |
| + | * tcp/ip protokolli nö fundamentaalsete omaduste kasutamine tulemüüri seadistamisel - nt saab kontrollida tcp ühenduse pidamisega seotud timeout väärtuste alusel tulemüüri olekuid (nt unustatakse ära olekud, mis on tekkinud syn pakettidest, millele ei järgnenud kliendi poolset ack'i ettenäidatud aja jooksul; või unustatakse ära olekud, millega seoses ei ole toimunud reaalset andmevahtust etteantud aja vältel) |
| + | * siltide (ingl. k. tag) kasutamine - tulemüüris on võimalik ühest seadmest sisenenud paketile lisada silt ning selle alusel teha otsustusi kui ta teisest seadmest väljub; tundub, et see ongi ainuvõimalik moodus turvalise (kontrollitakse sisenevat ja väljuvat liiklust), efektiivselt töötava ja efektiivselt hallatava tulemüüri moodustamiseks |
| | | |
− | Järgmisel pildil on kujutatud samadele ühendustele vastavad olekud (ingl. k. state), nagu näha on ühe ühendusega seotud kaks olekut, üks siseneva, teine väljuva võrguseadmega seoses.
| + | OpenBSD pf on seejuures täies mahus porditud ka FreeBSD peale seega töötab 99% siin palas leiduvast süntaksist ja näitematerjalist |
| + | erinevad on peamiselt vaid rajad ning mõned konkreetse süsteemi utiliidid |
| | | |
− | [[Pilt:Pftop-kalake-dmz-up-view-long.gif]]
| + | Lisaks saab sõltuvalt vajadusest tulemüüril kasutada nt selliseid teenuseid, mis küll iseenesest ei tulemüürimisega seotud |
| | | |
− | pfctl programmi manuaalis (man pfctl) on ammendavalt kirjeldatud programmi kasutamise võimalusi, muu seas on võimalik
| + | * dhcp server |
| + | * nimeserver - bind |
| + | * VPN - IPsec, OpenVPN |
| + | * veebivahendaja - squid |
| + | * greylisting tarkvara - spamd |
| + | * tftp |
| + | * ntp |
| | | |
− | * 'pfctl -sa' - kuvada kõikvõimalikud andmed lühidalt
| + | ===Teemad=== |
− | * 'pfctl -vvvsa' - sama, aga üksikasjalikumalt
| |
− | * 'pfctl -sr' - kuvada FILTER RULES
| |
− | * 'pfctl -rn' - kuvada TRANSLATION RULES
| |
− | * 'pfctl -ss' - kuvada olekud
| |
− | * 'pfctl -k src_host -k dst_host' - src_host ja dst_host suhtlemisele vastavate olekute eemaldamine tulemüürist
| |
− | * 'pfctl -a 'ftp-proxy/15272.22' -sr' - ftp-proxy ankru juures olevate reeglite vaatamine, 15272.22 ankru nime saab vaatada pftop väljundist
| |
| | | |
− | tcpstat programmi manuaalis (man tcpstat) on ammendavalt kirjeldatud programmi kasutamise võimalusi, näites saab selliselt esitada seadmega seoses iga sekundi järel võrguliikluse statistikat
| + | Käesolev käsitlus esineb pigem reaalselt tõenäoliselt esinevatele probleemidele sobivate lahenduste väljapakkumisena kui keskendub tähestikulises järjekorras erinevate programmide manuaalide (ingl. k. manpages) ümberjutustamisele. |
| | | |
− | # tcpstat -i fxp0 1
| + | * [[:Tulemüüri kasutamise vajadus]] |
| + | * Tulemüüri ettevalmistamiseks vajalik riistvara ja tarkvara |
| + | * [[Packet Filter]] - OpenBSD tulemüüritarkvara PF süntaksi tutvustus |
| + | * [[OpenBSD v. 4.7 paketifilter]] |
| + | * [[:Kahe võrgukaardiga ruutiv tulemüür]] |
| + | * [[:Kahe võrgukaardiga aadressteisendav tulemüür]] |
| + | * [[:Enam kui kahe võrgukaardiga aadressteisendav tulemüür]] |
| + | * [[:Liikluse prioritiseerimine tulemüüris]] |
| + | * [[:Mitme välisühendusega tulemüür]] |
| + | * Passive-active tulemüürikluster |
| + | * Active-active tulemüürikluster |
| + | * Sild |
| + | * [[:Ruuting domeenid]] |
| + | * [[:FTP kasutamine OpenBSD paketifiltriga]] |
| | | |
| ===Märkused=== | | ===Märkused=== |
| | | |
− | * Tundub, et PF abil ei saa kirjutada ümber OpenBSD arvutis genereeritud paketi dst ip aadressi ja porti. | + | * Paketifiltri abil ei saa kirjutada ümber OpenBSD arvutis lokaalselt genereeritud paketi dst ip aadressi ja porti. |
| | | |
− | ===Lingid=== | + | ===Kasulikud lisamaterjalid=== |
| | | |
| * http://home.nuug.no/~peter/pf/en/long-firewall.html | | * http://home.nuug.no/~peter/pf/en/long-firewall.html |
| * Pf ja iptables ning ipfilter testid | | * Pf ja iptables ning ipfilter testid |
| * http://www.benzedrine.cx/pf-paper.html | | * http://www.benzedrine.cx/pf-paper.html |
| + | * http://undeadly.org/cgi?action=article&sid=20060927091645 (kolmeosalise artikli esimene osas, viited teistele seal) |