Erinevus lehekülje "OpenBSD tulemüür" redaktsioonide vahel

Allikas: Kuutõrvaja
(Teemad)
(Teemad)
 
(ei näidata 2 kasutaja 36 vahepealset redaktsiooni)
3. rida: 3. rida:
 
Järgnevad tekstid eeldavad, et ollakse tuttav OpenBSD kui operatsioonisüsteemi kasutamisega ning on olemas mõõdukas ettekujutus TCP/IP protokollist.
 
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õltvualt konkreetsetest vajadustest võib OpenBSD tulemüüril olla selliseid funktsioone
+
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, relayd
 
* koormusjaotur - pf, relayd
* tulemüüri kluster - mitmest erinevast füüsilisest arvutist koosnev üks loogiline tulemüür (carp, pfsync)
+
* tulemüüri kluster - mitmest erinevast füüsilisest arvutist koosnev üks loogiline tulemüür (nn active/passive või active/active režiimis; carp, pfsync)
* statistika ja andmete analüüsiks kogumine (pfctl, pftop, tcpstat, pflogd, tcpdump, symon, syweb)
+
* statistika ja andmete analüüsiks kogumine (pfctl, pftop, tcpstat, pflogd, tcpdump, symon, syweb, netflow)
* VPN - IPsec, OpenVPN, Stunnel, SSH
+
* Sild (ingl. k. bridge)
* redundantse tulemüüri klustri võimalus -
+
* ruutinguprotokollide bgp ja ospf kasutamine
* sild (ingl. k. bridge)
 
  
===Teemad===
+
Muude populaarsete tulemüürilahenduste seas paistab OpenBSD paketifilter (tulemüür) silma sellistes aspektides
  
* Tulemüüri kasutamise vajadus
+
* 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 ettevalmistamiseks vajalik riistvara ja tarkvara
+
* 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
* Ühe võrgukaardiga tulemüür
+
* tulemüüri paketifiltri tegevuste logimine - saab täpselt logida, millised pakette on lubatud läbi või milliseid on takistatud, label'ite kasutamine
* Kahe võrgukaardiga ruutiv tulemüür
+
* synproxy - tulemüür tekitab tulemüüri taga töötava serveri eest ära 3-way tcp handshake, et kaitsta serverit syn-floodi eest
* Kahe võrgukaardiga aadressteisendav tulemüür
+
* tcpcookies kasutamise võimalus puudub
* Enam kui kahe võrgukaardiga tulemüür
+
* 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
* Liikluse prioritiseerimisega tulemüür
+
* 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
* Mitme välisühendusega tulemüür
+
* 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)
* Passive-active tulemüürikluster
+
* 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)
* Active-active tulemüürikluster
+
* 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
* Sild
 
  
===Ülesandepüstitus===
+
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
  
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
+
Lisaks saab sõltuvalt vajadusest tulemüüril kasutada nt selliseid teenuseid, mis küll iseenesest ei tulemüürimisega seotud
  
                  internet
+
* dhcp server
    2 Mbit/s download |  default gw, 172.16.1.18
+
* nimeserver - bind
    768 kbit/s upload |
+
* VPN - IPsec, OpenVPN
                      |  fxp0, 172.16.1.17/30
+
* veebivahendaja - squid
                    __|__ 
+
* greylisting tarkvara - spamd
                  |    |  rl0, 10.0.100.254/24
+
* tftp
                  |    |------ DMZ 10.0.100.0/24 -----
+
* ntp
                  |_____|
 
                      |
 
                      |  nfe0, 192.168.100.254/24
 
                      |
 
                      |
 
                      |_______ KALAKE - 192.168.100.0/24 _________
 
  
ning peavad olema täidetud sellised nõuded
+
===Teemad===
  
# Tulemüüri KALAKE ja DMZ võrkude liidestel töötab nimeteenus.
+
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.
# 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===
+
* [[:Tulemüüri kasutamise vajadus]]
 
+
* Tulemüüri ettevalmistamiseks vajalik riistvara ja tarkvara
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)
+
* [[Packet Filter]] - OpenBSD tulemüüritarkvara PF süntaksi tutvustus
 
+
* [[OpenBSD v. 4.7 paketifilter]]
# cat /etc/hostname.fxp0
+
* [[:Kahe võrgukaardiga ruutiv tulemüür]]
inet 172.16.1.17 255.255.255.252 NONE
+
* [[:Kahe võrgukaardiga aadressteisendav tulemüür]]
# cat /etc/hostname.rl0
+
* [[:Enam kui kahe võrgukaardiga aadressteisendav tulemüür]]
inet 10.0.100.254 255.255.255.0 NONE
+
* [[:Liikluse prioritiseerimine tulemüüris]]
# cat /etc/hostname.nfe0
+
* [[:Mitme välisühendusega tulemüür]]
inet 192.168.100.254 255.255.255.0 NONE
+
* Passive-active tulemüürikluster
# cat /etc/mygate
+
* Active-active tulemüürikluster
172.16.1.18
+
* Sild
# cat /etc/resolv.conf
+
* [[:Ruuting domeenid]]
lookup file bind
+
* [[:FTP kasutamine OpenBSD paketifiltriga]]
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.
 
 
 
[[Pilt:Pftop-kalake-dmz-up-altq.gif]]
 
 
 
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.
 
 
 
[[Pilt:Pftop-kalake-dmz-up-view-long.gif]]
 
 
 
pfctl programmi manuaalis (man pfctl) on ammendavalt kirjeldatud programmi kasutamise võimalusi, muu seas on võimalik
 
 
 
* 'pfctl -sa' - kuvada kõikvõimalikud andmed lühidalt
 
* '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
 
 
 
# tcpstat -i fxp0 1
 
 
 
===Sild===
 
 
 
Silla tekitamiseks tuleb esmalt osalevad füüsilised seadmed üles tõsta
 
 
 
  # cat /etc/hostname.fxp0
 
  up
 
 
 
  # cat /etc/hostname.fxp1
 
  up
 
 
 
ning öelda
 
 
 
  # sh /etc/networks fxp0
 
  # sh /etc/networks fxp1
 
 
 
Silla seadistusfaili sisu võiks olla näiteks selline
 
 
 
  # cat /etc/bridgename.bridge0
 
  add fxp0
 
  add fxp1
 
  blocknonip fxp0 blocknonip fxp0
 
  up
 
 
 
ja silla üles tõstmiseks öelda
 
 
 
  # sh /etc/netstart bridge0
 
 
 
Silla omadusi saab vaadata öeldes
 
 
 
  # brconfig bridge0       
 
  bridge0: flags=41<UP,RUNNING>
 
        priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
 
        designated: id 00:00:00:00:00:00 priority 0
 
        fxp1 flags=3<LEARNING,DISCOVER>
 
                port 2 ifpriority 0 ifcost 0
 
        fxp0 flags=7<LEARNING,DISCOVER,BLOCKNONIP>
 
                port 1 ifpriority 0 ifcost 0
 
        Addresses (max cache: 100, timeout: 240):
 
 
 
Silla saab hävitada öeldes
 
 
 
  # ifconfig bridge0 destroy
 
 
 
Silla kasutamisel peab paketifilter liiklust üle silla lubama
 
  
 
===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

Viimane redaktsioon: 20. mai 2010, kell 20:23

OpenBSD tulemüür

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
  • NAT - mitte-avalike aadressidega arvutite interneti ühendamine
  • liikluse prioritiseerimine - altq
  • koormusjaotur - pf, relayd
  • tulemüüri kluster - mitmest erinevast füüsilisest arvutist koosnev üks loogiline tulemüür (nn active/passive või active/active režiimis; carp, pfsync)
  • statistika ja andmete analüüsiks kogumine (pfctl, pftop, tcpstat, pflogd, tcpdump, symon, syweb, netflow)
  • Sild (ingl. k. bridge)
  • ruutinguprotokollide bgp ja ospf kasutamine

Muude populaarsete tulemüürilahenduste seas paistab OpenBSD paketifilter (tulemüür) silma sellistes aspektides

  • 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

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

Lisaks saab sõltuvalt vajadusest tulemüüril kasutada nt selliseid teenuseid, mis küll iseenesest ei tulemüürimisega seotud

  • dhcp server
  • nimeserver - bind
  • VPN - IPsec, OpenVPN
  • veebivahendaja - squid
  • greylisting tarkvara - spamd
  • tftp
  • ntp

Teemad

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.

Märkused

  • Paketifiltri abil ei saa kirjutada ümber OpenBSD arvutis lokaalselt genereeritud paketi dst ip aadressi ja porti.

Kasulikud lisamaterjalid