Ruutiv mitmeharuline tulemüür

Allikas: Kuutõrvaja
Redaktsioon seisuga 10. august 2011, kell 13:13 kasutajalt Jj (arutelu | kaastöö) (Lahendus ja pf.conf faili seadistus)
                                        Roheline.jpg Toores. Ehk seda pala võib täiendada.

Tulemüüri ja võrgu konseptsioon

On asutus Loomaaed mil domeen zoo.tartu.ee. Asutusele on ISP poolt terve C klass IP aadresse. See on omakorda jagatud veel mitmeks eri võrguks. On kontorivõrk, on serverite võrk, on majutatud serverite võrk (mitmesugused hobiteadlaste projektid, loodusuurijate serverid ja loomade jälgimise kaamerad jms). Lisaks kõigele sellele on olemas veel NATitud sisevõrk ning kasutust leiab uus edumeelne protokoll IPV6.

Asutusel on olemas server millel piisavalt CPU jõudlust ning kokku on masinas ülesannete täitmiseks neli võrgukaarti.

Võrgu poliitika

* Serverivõrk
 - seest välja ühendused oleksid kõik lahti
 - väljast sisse kõikühendused lahti va serveritele:
   - temperatuur.zoo.edu.ee ja monitoorija.zoo.edu.ee

(viimased kaks on vanad legacy serverid mille portidele ei tahaks lubada välismaad)

* Kontorivõrk
 - Seest välja ühendused kõik lahti
 - väljast sisse liikuvad kõik ühendused kinni va:
   - kontor.zoo.edu.ee
   - Serverivõrk

Lisaks ei jagaks DHCP teenus edaspidi enam läpakatele ja ajutistele arvutitele väliseid IP aadresse vaid sisemisi NATitavaid aadresse.

* Majutatud võrk
 - sees välja kõik lahti
 - väljas sisse kõik lahti

Lahendus ja pf.conf faili seadistus

kasutusel võimalikult palju tabeleid kuna tabelid tõenäoliselt eraldi reeglitest kiiremad. Vaja testida ALTQ lahendust, et piirata vajadusel majutatud võrgu masinate ühenduskiirusi. Blacklist kuhu saab "halbu" aadresse lisada.

NB! Tähele tasub panna, et võrreldes tavalise ühe võrgukaardiga tulemüüriga on reeglid nö tagurpidi. Järgnevalt kirjeldaks põgusalt reegleid mis neile võrkudele saab kirjutatud. Põhimõte oleks mitte kirjutada iga masina kohta käivaid piiranguid üldisesse tulemüüri vaid jätta spetsiifilised porte piiravad reeglid edasi olema igas masinas eraldi Kesksest tulemüürist kehtestatakse üldised piirangud - või lubamised.

PS!: Reeglite süntaks on järgmine:

[pass/block(drop/return)] [in/out] [log] [quick] [on interface] [inet/inet6] \
[proto <tcp/udp/icmp/icmp6>] [from src_addr [port src_port]] [to dst_addr [port dst_port]] \
[flags tcp_flags] [state]
 ext_if = "fxp0"
 server_if = "fxp1"
 kontor_if  = "fxp2"
 majutatud_if = "fxp3"

 # Optimiseerimised
 set optimization normal
 set block-policy drop
 set skip on lo0
 set limit states 1048576
 set state-policy if-bound
 
 #set state-defaults pflow
 # mitu erinevat remote ip aadressi saavad samaagselt state'isid pidada. 
 #See peaks olema koos state   limiidiga
 set limit src-nodes 30000
 
 scrub in all
 scrub out all random-id max-mss 1440
 
 # Ruuteri enda aadressid
 table <my_addresses> const { 193.40.45.2, 193.40.45.33, 193.40.45.77 }

 # Globaalne tabel kus olevad aadressid koheselt blokeeritakse
 table <global_block_in_from> { 0.0.0.0/8, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16,  240.0.0.0/4, fc00::/7 }

 # Blokeerime spämmarite ligipääsu postiserveritele
 table <smtp_block_in_from> persist

 # Serverite võrgu aadressid millele ligipääs blokeeritud
 table <server_block_out_to> const { 193.40.45.60, 193.40.45.61 }

 # Kontori aadressid millele lubatakse ligipääs väljast
 table <kontor_pass_out_to> const { 193.40.45.78 }

 # Serverite võrk lubatakse kontorivõrgule ligi
 table <kontor_pass_out_from> const { 193.40.45.33/26 }

 # Nat reegel kontori privaataadressidele
 nat on $ext_if inet from 192.168.0.0/16 to any -> ($kontor_if:0)

 # IPv6 link-local on lubatud
 pass quick to fe80::/10
 pass quick from fe80::/10

 #* Sisenev võrk
 #
 pass on $ext_if all
 
 # Nende masinatega internetist me ei suhtle
 block in log quick on $ext_if from <global_block_in_from> label "global_block_in"
 
 # Keelame mõnedele kirjade saatmise
 block in log quick on $ext_if proto tcp from <smtp_block_in_from> to any port 25 label "smtp_block_in"

 # Paarile serverile piirame ligipääsu
 block in log quick on $ext_if to <server_block_out_to> label "server_block_out"
 
 # Ruuterile piirame ligipääsu väljast
 block in log quick on $ext_if proto { tcp, udp } to <my_addresses> label "global_block_in"
 
 #* Serverivõrk
 #
 # - seest välja ühendused oleksid kõik lahti
 # - väljast sisse kõik ühendused lahti va:
 
 pass on $server_if all keep state
  
 #* Kontorivõrk
 #
 # - Seest välja ühendused kõik lahti
 # - väljast sisse liikuvad kõik ühendused kinni va:
 #   - serverivõrguga liiklus
 
 block log on $kontor_if all label "blocked_kontor"
 pass in on $kontor_if all keep state
 pass out on $kontor_if from $kontor_if to $kontor_if:network
 pass out on $kontor_if from <kontor_pass_out_from> keep state label "kontor_pass_out"
 pass out on $kontor_if to <kontor_pass_out_to> keep state label "kontor_pass_out"
 
 #* Majutatud võrk
 #
 # - seest välja kõik lahti
 # - väljast sisse kõik lahti:
 
 pass on $majutatud_if all keep state 
 
 # -- END --