OpenBSD aktiivne/passiivne tulemüürilahendus

Allikas: Kuutõrvaja
Redaktsioon seisuga 23. juuni 2008, kell 11:15 kasutajalt Imre (arutelu | kaastöö) (Sissejuhatus)

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

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