OpenBSD aktiivne/passiivne tulemüürilahendus
Sisukord
Sissejuhatus
OpenBSD aktiivne/passiivne tulemüürilahendus koosneb kahest samasuguseste omadustega tulemüüridena ettevalmistatud arvutist, kusjuures
- igal ajahetkel toimub liiklus läbi ühe või teise, vastavalt nimetatakse ühte aktiivseks ja teist passiivses pooleks
- liiklust saab ümber lülitada, ümberlülitus toimub sekundite jooksul ning nt läbi tulemüüri käivad TCP ühendused säilivad
Alltoodud joonisel on kujutatud arvutitest kalake ja tuvike koosnev aktiive/passiivne tulemüürilahendus, lisaks on näidatud ära tulemüüriga kohtvõrgu poolt kokku puutuv töökohaarvuti ning avaliku võrgu poolt internetiühenduse teenusepakkuja ruuter. Kui nö sel kuul on aktiivne kalake ja pasiivne tuvike, siis pöördudes töökohaarvutist avalikus võrgus asuva www.loomaaed.tartu.ee veebikoha poole käib liiklus läbi kalakese, tuvikesest ei käi liiklust üldse läbi.
www.loomaaed.tartu.ee | avalik võrk | _|_ | | |___| isp ruuter | | ---|-----------------|----------------------|--- | | | | _|_ _|_ | | kalake tuvike | | | | | | |___| |___| | | | | | | ---|-----------------|----------------------|--- | --|--------------------------------|----- | _|_ kohtvõrk | | töökoht |___|
Aktiivne/passiive lahendus
- ei paku suuremat jõudlust
- pakub paremat käideldavust selles mõttes, et ühe tulemüüri riknemisel lülitub automaatselt asemele teine
- tõstab kaudselt turvalisust kuivõrd ühe tulemüüri uuendamine ei sega teenuse pakkumist ja vajadusel saab viimati töötanule tagasi lülituda
Akiivse/passiive lahenduse tööpõhimõte
Mainime meeldetuletuseks, et nö tavalisel juhul toimub ethernet'is st praktiliselt ühe subneti piires osaliste vahel andmevahetus kasutades mac aadresse. Kusjuures ühe arvuti (00:03:47:9b:76:56, 172.16.0.254) esmakordse pöördumisel teise (00:02:55:ee:1a:58, 172.16.0.250) poole teise arvuti IP aadressi järgi tehakse ARP protokolli abil esmalt kindlaks teise arvuti mac aadress. Näiteks kuulates esimesel arvutil ühes aknas võrku pealt ning öeldes samal ajal 'ping 172.16.0.250' paistab selline liiklus võrgus
# tcpdump -nettti fxp2 arp or icmp tcpdump: listening on fxp2, link-type EN10MB Jun 23 11:45:41.144188 00:03:47:9b:76:56 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 172.16.0.250 tell 172.16.0.254 Jun 23 11:45:41.144304 00:02:55:ee:1a:58 00:03:47:9b:76:56 0806 60: arp reply 172.16.0.250 is-at 00:02:55:ee:1a:58 Jun 23 11:45:41.144320 00:03:47:9b:76:56 00:02:55:ee:1a:58 0800 98: 172.16.0.254 > 172.16.0.250: icmp: echo request Jun 23 11:45:41.144601 00:02:55:ee:1a:58 00:03:47:9b:76:56 0800 98: 172.16.0.250 > 172.16.0.254: icmp: echo reply
- esimene pakett on arp braodcast, mis jõuab kõigi osalistene selles subnetis
- broadcastile vastab vaid see arvuti, kellel on ip aadress 172.16.0.250, et tema mac aadress on 00:02:55:ee:1a:58
- edasi kasutatakse suhtlemiseks mac aadresse ja andmevahetus toimub otse
Akviine/passiivne tulemüürilahendus põhineb CARP protokolli kasutamisel, mis üldiselt võimaldab ühe subneti piires sellist asjakorraldust, et mitmele arvutile on omistatud üks virtuaalne mac aadress ja üks virtuaalne ip aadress, kuid igal ajahetkel vastab kõnealustest arvutitest vaid üks neile virtuaalsetele aadressidele.
Skeemil on kujutatud
avalik võrk | | ---|-----------------|----------------------|--- | tulemüüri avalik ip: 192.168.1.254 | | avalik mac: 00:00:5e:00:01:01 | | | 192.168.1.11 _|_ _|_ 192.168.1.12 00:03:47:e0:1d:1c | | kalake tuvike | | 00:0e:0c:ba:4b:28 | |------------------------------------| | |___| 172.16.0.11 172.16.0.12 |___| 10.0.0.12 10.0.0.11 | | 00:c0:26:27:4d:fe 00:e0:4c:02:89:18 | | | tulemüüri sisemine ip 10.0.0.254 | | sisemine mac: 00:00:5e:00:01:02 | ---|-----------------|----------------------|------------------------ | | kohtvõrk
Eesmärgiks on saavutada selline asjakorraldus, et mitu OpenBSD operatsioonisüsteemiga arvutit töötaksid nii, et neil on hulga peale üks nö teenusega seotud ip aadress ning igal ajahetkel täpselt üks osaline tegeleb selle aadressiga soetud pakettidega, st teenindab selle aadressiga seotud teenustele tulnud päringuid.
Üldiselt on olemas mitu protokolli, mis sellist asjakorraldust võimaldavad, OpenBSD puhul soovitatakse kasutada CARP (Common Address Redundancy Protocol) protokolli ja vastavaid operatsioonisüsteemi vahendeid.
Tulemusena peaks tekkima sellise skeemi alusel töötav süsteem
___ ___ | | kalake | | tuvike |___| |___| | 192.168.1.11 | 192.168.1.12 | | ----|-------------------------|--------------|---- teenuse ip 192.168.1.10 | _|_ gw: 192.168.1.254 | | |___| | | ..
kus
- 192.168.1.11 ja 192.168.1.12 on arvutitele kalake ja tuvike vastavad nö päris ip aadressid
- 192.168.1.10 on teenuse ip aadress, mis on samuti mõlema arvutiga seostatud, kuid samaaegselt vaid üks saab paketid (tänu CARP abil korraldatud nö ARP taseme viguritele)
- 192.168.1.254 on gateway, kui eemalt avalikust võrgust tulevad päringud, siis need satuvad nö aktiivse realserveri peale gw kaudu
Osaliste seadistamine
Olgu tegu kahe teenust pakkuva arvutiga kalake ja tuvike, milles on kummastki üks võrgukaart ning ühe tavapärasel moel seadistatud vaikelüüsiga, nad on ühendatud sama switchi külge nii nagu eelmises punktis skeemil kujutatud. Olgu vaikimisi kalake (192.168.1.11) teenust pakkuv arvuti ja tuvike (192.168.1.12) nn hot stand-by.
Arvutite võrk on seadistatud tavapäraselt, kuid lisaks on tekitatud spetsiifilised nn carp seadmed. Selleks tuleb öelda kalakeses
# ifconfig carp1 create # ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd 192.168.1.10 netmask 255.255.255.0
ning tuvikeses
# ifconfig carp1 create # ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd advskew 128 192.168.1.10 netmask 255.255.255.0
Pange tähele, et tuvikeses on lisatud "advskew 128", mis tähendab, et normaalses olekus on kalake teenust pakkuv arvuti.
Tulemusena on näha selline ifconfig väljund kalakeses
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:01 carp: MASTER carpdev em0 vhid 1 advbase 1 advskew 0 groups: carp inet6 fe80::200:5eff:fe00:101%carp1 prefixlen 64 scopeid 0x8
ning selline tuvikeses
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:01 carp: BACKUP carpdev em0 vhid 1 advbase 1 advskew 128 groups: carp inet6 fe80::200:5eff:fe00:101%carp1 prefixlen 64 scopeid 0xa
Selleks, et peale arvuti alglaadimist sarnased seadmed tekkiksid peavad olema arvutites vastavalt sellised failid moodustatud
kalake# cat /etc/hostname.carp1 inet 192.168.1.10 255.255.255.0 192.168.1.255 vhid 1 carpdev em0 pass lanpasswd
ja
tuvike# cat /etc/hostname.carp1 inet 192.168.1.10 255.255.255.0 192.168.1.255 advskew 128 vhid 1 carpdev em0 pass lanpasswd
Paketifiltri seadistamine iseärasused
Seda milline osaline parasjagu teenust pakub kontrollitakse CARP protokolli abil, arusaadavalt peab siis paketifilter lubaba läbi vastavat liiklust.
pass quick on $ext_if proto carp keep state
Teenuste seadistamise iseärasused
Teenuste seadistamise puhul on mõnus see, et teenusega seotud ip aadress on arvuti kogu aeg olemas ja sellele saab teenuse ära bindida. Ning kui madalas kihis töötava CARP protokolli tegevuse tulemusena hakkavad paketid laekuma, siis algabki teenindamine.
Arvuti realserveri ip aadressi on aga haldustegevuste jaoks hea kasutada, teenuse pakkumise seisukohalt ei ole see vajalik ja võib omistamata jätta.
Arusaadavalt peab tagama muude vahenditega, et teenust pakkuvates arvutites on andmed sisulises osas sobivas seisundis, CARP sellega ei tegele. Nt võib olla vajalik peale kasutajate kalakeselt tuvikesele lülitamise andmebaasid sünkroniseerida vms.
Haldamine
Kui selles arvutis, mis parasjagu tegeleb teenuse pakkumisega on tarvis teha hooldustööd, siis kasutajate ümbersuunamiseks teisele arvutile tuleb öelda carp seadmele down
# ifconfig carp1 down
Ja hooldustöö lõppemisel jällegi up
# ifconfig carp1 up
Teine võimlalus on muuta carp grupi demote (ingl. k. madalamale ametikohale viima) väärtust, mida suurem see väärtus on, seda ebatõenäolisemalt on vastavasse gruppi kuuluvad seadmed master'id, vaikimisi on väärtus null
# ifconfig -g carp carpdemote 50
Ning tagasi viimiseks
# ifconfig -g carp -carpdemote 50
CARP lahenduse kasutamine tulemüüris ja pfsync
Lisaks sellele, et niisama nt http või smtp teenust pakkuvate arvutite juures saab kasutada CARP'i on võimalik kasutada seda ka tulemüüri juures. Kusjuures tulemüüris on reeglina mitu võrgukaarti, iga kaardiga on seotud nn realserveri aadress ning teenust pakkuv aadress vastava carp seadmega. Teenust pakkuv aadress on siis tulemüüri puhul reeglina vastava subneti arvutite jaoks vaikelüüsi aadressiks.
Lisaks on pf paketifiltri puhul võimalus spetsiaalse pfsync protokolli ja seadme abil sünkroniseerida pf olekutabeli sisu kahe arvuti vahel. Selle tulemusena säilivad peale arvutite ümberlülitust kasutajate tcp sessioonid jms.
pfsync kasutamiseks tuleb kaks arvutit omavahel soovitavalt ainult selleks mõeldud võrgukaarte pidi risti keerupaari kaabliga ühendada ning öelda kalakeses
# ifconfig em1 10.10.10.11 netmask 255.255.255.0 # ifconfig pfsync0 syncdev em1 # ifconfig pfsync0 up
ning tuvikeses
# ifconfig em1 10.10.10.12 netmask 255.255.255.0 # ifconfig pfsync0 syncdev em1 # ifconfig pfsync0 up
Ehk lisaks tavapärasel moel võrguseadmete seadistamisele moodustada fail /etc/hostname.pfsync0
up syncdev em1
Lisaks on tarvis paketifiltriga lubada läbi mõlemas arvutis vastavat liiklust, näiteks reaga
pass on em1 proto pfsync
Märkused
- CARP seadme võib moodustada füüsilise seadme asemel ka vlan võrguseadmele
- CARP seadmel võib olla mitu ip aadressi, neid omistatakse nii nagu tavalisele seadmele, nt käsuga
# ifconfig carp1 alias 192.168.1.9 netmask 255.255.255.0 # ifconfig carp1 alias 192.168.1.8 netmask 255.255.255.0
- ifstated programmi abil saab korraldada vastavalt sellele, kas arvuti omandas MASTERi või BACKUPi oleku automaatselt programmide käivitamist