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

Allikas: Kuutõrvaja
(PF paketifiltri reeglite kirjutamine)
(PF paketifiltri reeglite kirjutamine)
171. rida: 171. rida:
  
 
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.
 
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.
 +
 +
# vorguseadmete nimetamine
 +
ext_if="fxp0"
 +
dmz_if="rl0"
 +
kalake_if="em0"
 +
 +
# vaikimisi on igasugune liiklus keelatud
 +
block all
 +
 +
# lubatud on igast seadmest valjuv liiklus
 +
# (piirangud rakendatakse sisenemisel, nii on alustuseks lihtsam ja piisavalt turvaline)
 +
pass out quick all
 +
 +
# kohtvorgust sisenev suund
 +
pass in quick on $kalake_if

Redaktsioon: 5. august 2007, kell 00:21

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)

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
                     |   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

  1. Kohtvõrgu osast KALAKE, kus asuvad kasutajate töökohaarvutid pääseb piiramatult avalikku internetti ning DMZ võrku.
  2. Avalikust internetist peab pääsema ainult DMZ võrgus töötava veebiserveri juurde.
  3. DMZ võrgust ei saa algatada ühendusti kuskil suunas.
  4. Tulemüüri kohtvõrgu ja DMZ võrguliidestel töötab nimeserveri teenus.
  5. Tulemüüris tehakse NAT'i DMZ ning KALAKE võrgus paiknevatele arvutitele.
  6. 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.

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ööd juhitakse programmiga pfctl, mille abil saab laadida tekstifailis kirjas olevad paketifiltri reeglid ning lisaks paketifiltri välja ja sisse lülitamitada. Tavaliselt on reeglid kirjas failiks /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 sisaldub 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 sisse lülitatud olekus, 'Status: Enabled for 0 days 00:00:02'
  • TIMEOUTS - mitmesugused TCP/IP protokolli alusel töötavat andmevahetust reguleerivad timeout parameetrid
  • LIMITS - tulemüüri ressurssikasutusele seatud piirangud

PF paketifiltri reeglite kirjutamine

Paketifiltri reeglite failis on muude sektsioonide hulgas FILTER RULES sektsioon, 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.

  1. vorguseadmete nimetamine

ext_if="fxp0" dmz_if="rl0" kalake_if="em0"

  1. vaikimisi on igasugune liiklus keelatud

block all

  1. lubatud on igast seadmest valjuv liiklus
  2. (piirangud rakendatakse sisenemisel, nii on alustuseks lihtsam ja piisavalt turvaline)

pass out quick all

  1. kohtvorgust sisenev suund

pass in quick on $kalake_if