Erinevus lehekülje "Mitme välisühendusega tulemüür" redaktsioonide vahel
(→Tulemüürist läbipääs) |
(→Tulemüürist läbipääs) |
||
95. rida: | 95. rida: | ||
* smtp, 172.16.2.0/24 -> 192.168.102.35:25/tcp -> 10.0.6.200:25/tcp | * smtp, 172.16.2.0/24 -> 192.168.102.35:25/tcp -> 10.0.6.200:25/tcp | ||
* ssh, 172.16.2.0/24 -> 10.0.6.0/24:22/tcp | * ssh, 172.16.2.0/24 -> 10.0.6.0/24:22/tcp | ||
+ | |||
+ | ===Paketifiltri seadistusfaili põhimõtteskeem=== | ||
+ | |||
+ | Paketifiltri kirjutamisel tuleb teha tavaliselt kopromiss täpsuse ja üldisuse vahel. Nii võiks tekkida piisavalt turvaline tulemüür ja mille keerukus võimaldab teda veel hallata. | ||
+ | |||
+ | Kahe välisühendusega aadressteisendava tulemüüri puhul tuleks tähelepanu pöörata sellistele asjaoludele | ||
+ | |||
+ | * tulemüür kasutab ühte ruutingutabelit ja tulemüüril endale on seadistatud iseenesest üks vaikelüüs teenusepakkuja ruuteri R1 kaudu | ||
+ | * teenusepakkuja R2 kaudu käivat liiklust ruuditakse paketifiltri abil | ||
+ | * kohtvõrgust saab kasutada avalikke teenuseid otse st vastav liiklus ei käib ringiga läbi teenusepakkuja võrgu (KOHTVORK -> R2 -> R1 -> TOODANG) | ||
+ | * tulemüüri enda haldus toimub läbi avaliku võrgu ruuteri R1 kaudu | ||
+ | |||
+ | Ülesande lahendamiseks sobib kasutada sellise ülesehitusega paketifiltri seadistusfaili | ||
+ | |||
+ | # MACROS and LISTS | ||
+ | include "/etc/pf.macros-and-lists" | ||
+ | |||
+ | # TABLES | ||
+ | include "/etc/pf.tables" | ||
+ | |||
+ | # OPTIONS | ||
+ | include "/etc/pf.options" | ||
+ | |||
+ | ######### TRANSLATION ########## | ||
+ | # | ||
+ | # et kõigist privaatsetest võrkudest avalikku vorku minevatel pakettidel oleks sobivad avalikud src aadressid | ||
+ | # reeglid kasutavad pakettidel olevaid silte | ||
+ | nat-anchor nat_to_avalik on $if_avalik | ||
+ | load anchor nat_to_avalik from "/etc/pf.anchor-nat_to_avalik" | ||
+ | |||
+ | # et toodangu vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega | ||
+ | nat on $if_toodang from $carp_toodang:network:0 tagged TO_TOODANG -> $carp_toodang:0 | ||
+ | # et arenduse vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega | ||
+ | nat on $if_arendus from $carp_arendus:network:0 tagged TO_ARENDUS -> $carp_arendus:0 | ||
+ | # et testi vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega | ||
+ | nat on $if_test from $carp_test:network:0 tagged TO_TEST -> $carp_test:0 | ||
+ | |||
+ | # koigil seadmetel RDR-teisendused pakettide toodangukeskkonna serveritele jõudmiseks | ||
+ | # reeglid rakendavad pakettidele sildi TO_TOODANG | ||
+ | rdr-anchor rdr_to_toodang on seadmed | ||
+ | load anchor rdr_to_toodang from "/etc/pf.anchor-rdr_to_toodang" | ||
+ | |||
+ | # koigil seadmetel RDR-teisendused pakettide arenduskeskkonna serveritele jõudmiseks | ||
+ | # reeglid rakendavad pakettidele sildi TO_ARENDUS | ||
+ | rdr-anchor rdr_to_arendus on seadmed | ||
+ | load anchor rdr_to_arendus from "/etc/pf.anchor-rdr_to_arendus" | ||
+ | |||
+ | # koigil seadmetel RDR-teisendused pakettide testkeskkonna serveritele jõudmiseks | ||
+ | # reeglid rakendavad pakettidele sildi TO_TEST | ||
+ | rdr-anchor rdr_to_test on seadmed | ||
+ | load anchor rdr_to_test from "/etc/pf.anchor-rdr_to_test" | ||
+ | |||
+ | # koigil seadmetel RDR-teisendused pakettide halduskeskkonna serveritele jõudmiseks | ||
+ | # reeglid rakendavad pakettidele sildi TO_HALDUS | ||
+ | rdr-anchor rdr_to_haldus on seadmed | ||
+ | load anchor rdr_to_haldus from "/etc/pf.anchor-rdr_to_haldus" | ||
+ | |||
+ | ######### FILTER ########## | ||
+ | # TULEMÜÜRI ENDASSE SISSEPÄÄS | ||
+ | # | ||
+ | # ssh kaugligipaas tulemüüri endasse, tulemüüri haldamiseks | ||
+ | pass in quick on $if_avalik inet proto tcp from <kontor> to $if_avalik port 22 label "JSavalik_from_kontor" | ||
+ | |||
+ | # vaikimisi blokeeritakse igasugust liiglust läbi tulemüüri seadmete | ||
+ | block all | ||
+ | |||
+ | # pingida on lubatud piiramatult | ||
+ | pass quick on seadmed inet proto icmp icmp-type echoreq label "JSVsmd_proto_icmp" | ||
+ | |||
+ | # TULEMÜÜRIST LÄBIPÄÄS | ||
+ | # | ||
+ | # lubatakse sisse RDR-teisendusest saadud siltidega pakette | ||
+ | pass in quick on seadmed tagged TO_TOODANG label "JSsmd_to_toodang" | ||
+ | pass in quick on seadmed tagged TO_ARENDUS label "JSsmd_to_arendus" | ||
+ | pass in quick on seadmed tagged TO_TEST label "JSsmd_to_test" | ||
+ | pass in quick on seadmed tagged TO_HALDUS label "JSsmd_to_haldus" | ||
+ | |||
+ | # lubatakse välja RDR teisendusest ja PASS_IN_FROM_SEADMED_TO_VORK ankrutest saadud TO_* tagidega | ||
+ | # liiklust kontreetsetest seadmetest | ||
+ | pass out quick on $if_toodang tagged TO_TOODANG label "JVtoodang" | ||
+ | pass out quick on $if_arendus tagged TO_ARENDUS label "JVarendus" | ||
+ | pass out quick on $if_test tagged TO_TEST label "JVtest" | ||
+ | pass out quick on $if_haldus tagged TO_HALDUS label "JVhaldus" | ||
+ | pass out quick on $if_avalik tagged TO_AVALIK label "JVavalik" | ||
+ | |||
+ | # lubatakse sisse ja sildistatakse kõigist võrkudest konkreetsesse võrku suunduvat liiklust | ||
+ | # selline iseloom on koigist vorkudest avalikku vorku mineval liiklusel, nt ntp ja ocsp teenus | ||
+ | # rakendadakse silt TO_AVALIK | ||
+ | anchor pass_in_from_seadmed_to_avalik on seadmed | ||
+ | load anchor pass_in_from_seadmed_to_avalik from "/etc/pf.anchor-pass_in_from_seadmed_to_avalik" | ||
+ | |||
+ | # lubatakse sisse ja sildistatakse konkreetsetest vorgudest kõigisse võrkudesse suunduvat liiklust | ||
+ | # selline iseloom on nt monitooringul ja varundamisel; selle abil saab rangemalt piirata ka vorkude | ||
+ | # kaupa avalikku internetti pääsemist erineval määral | ||
+ | # sildistatakse lähtevork, nt FROM_HALDUS | ||
+ | anchor pass_in_from_haldus_to_seadmed on $if_haldus label "JShaldus_from_haldus_to_seadmed" | ||
+ | load anchor pass_in_from_haldus_to_seadmed from "/etc/pf.anchor-pass_in_from_haldus_to_seadmed" | ||
+ | |||
+ | # kõigist seadmetest lubatakse välja FROM_* siltidega liiklust | ||
+ | pass out quick on seadmed tagged FROM_HALDUS label "JVsmd_from_haldus_to_seadmed" | ||
+ | |||
+ | # | ||
+ | # TULEMÜÜRIST ENDAST VÄLJAPÄÄS | ||
+ | # | ||
+ | # et tulemüüri kellaaeg oleks õige | ||
+ | pass out on $if_avalik inet proto udp to $ntp port 123 label "JVavalik_ntp" | ||
+ | # et tulemüüri sees nimelahendus töötaks | ||
+ | pass out on $if_avalik inet proto { tcp, udp } to $dns port 53 label "JVavalik_to_dns" | ||
+ | # et haldusteated saaksid välja | ||
+ | pass out on $if_avalik inet proto tcp to $smtp port 25 $tcpopts label "JVavalik_to_smtp" | ||
+ | # et tulemüüri saaks tarkvara lisada | ||
+ | pass out on $if_avalik inet proto tcp to $ftp port 80 $tcpopts label "JVavalik_to_ftp" | ||
+ | |||
+ | # tulemüürist endast on ei ole küll põhimõtteliselt vaja saada kõigisse arvutitesse pöörduda, | ||
+ | # aga praktiliselt on see võimalus hea | ||
+ | |||
+ | pass out quick on $if_arendus inet from $if_arendus to $if_arendus:network:0 label "JVarendus_from_tulemuur_ise_to_arendus" | ||
+ | pass out quick on $if_test inet from $if_test to $if_test:network:0 label "JVtest_from_tulemuur_ise_to_test" | ||
+ | pass out quick on $if_haldus inet from $if_haldus to $if_haldus:network:0 label "JVhaldus_from_tulemuur_ise_to_haldus" |
Redaktsioon: 26. detsember 2009, kell 12:50
Sisukord
Eesmärk
Olgu eesmärgiks ühendada ühe tulemüüri abil internetiga kaks privaateset võrku, kusjuures üks privaatne võrk kasutab ühte ja teine teist nö välisühendust
.......................... TEENUSEPAKKUJA | VÕRK ...................... __|__ | | | | | R1 | teenusepakkuja ruuter | |_____| __|__ | gw - 192.168.102.33 | | | | R2 | | |_____| teenusepakkuja ruuter | | | internet (AVALIK_TOODANG) | gw - 192.168.103.25 -|-------------------------------|- | 192.168.102.32/28 | internet (AVALIK_KOHTVORK) | | -|-----------------------------------|-- | | 192.168.103.24/29 | | 192.168.102.34 - em0 _|___|_ em1 - 192.168.103.26 | | | | | | | | |_______| 10.0.6.1 - em2 | | em3 - 172.16.2.1 | | | | KOHTVORK - 172.16.2.0/24 | -|--------------------|------------|-- TOODANG - 10.0.6.0/24 | | | -------|---------|---------------|- __|__ __|__ | | | | | | __|__ __|__ |_____| |_____| | | | | intraneti www töökohaarvuti |_____| |_____| 172.16.2.143 172.16.2.200 www smtp .6.90 .6.200
Mitme välisühenduse puhul lisanduvad nö tavalise tulemüüri seadistamisele lisaks sellised küsimused
- millisest sisemisest võrgust lähtuvad paketid väljuvad millise avaliku interneti poolse võrguseadme kaudu
- kas pöördudes kohtvõrgust toodangu teenuse poole vastava avaliku aadressiga käib liiklus otse läbi tulemüüri või ringiga läbi avaliku interneti
Olgu antud juhul otsustatud, et läbi tulemüüri toimub liiklus selliselt
- TOODANG - toodanguvõrk, kus asuvad avalikke teenuseid pakkuvad serverid
- AVALIK_TOODANG - internetist serverite poole pöördumine ja serveritest internetti pöördumine ruuditakse läbi selle võrgu ja teenusepakkuja R1 ruuteri
- KOHTVORK - töötajate töökohaarvutite ja kohtvõrgu serverite võrk
- AVALIK_KOHTVORK - kohtvõrgust internetti pöördumine ja internetist kohtvõrgu serverite poole pöördumine ruuditakse läbi selle võrgu ja teenusepakkuja R2 ruuteri
Tulemüür on liikluse lähte või sihtpunkt
Sissepääs tulemüüri, R1 kaudu
- haldusligipääs ssh, 22/tcp, piiratud ip aadressidelt
Väljapääs tulemüürist, R1 kaudu
- kellaaeg ntp, 123/udp
- nimeteenus, 53/udp,tcp
- süsteemsed teated smtp, 25/tcp
- tarkvara paigaldamine ftp serverist, 80/tcp
Tulemüüri vaikelüüs on R1, 192.168.102.33.
Tulemüürist läbipääs
Läbipaas TOODANG võrgust AVALIK võrku (ja R1 ruuteri kaudu internetti)
- kellaaeg ntp, 192.168.38.1:123/udp
- nimeteenus, 192.168.96.222:53/udp,tcp
- süsteemsed teated smtp, 192.168.32.85:25/tcp
- ocsp, 192.168.42.42:80/tcp
Läbipääs AVALIK võrgust (ja R1 ruuteri kaudu internetist) TOODANG võrku
- www, 192.168.102.35:80,443/tcp -> 10.0.6.90:80,443/tcp
- smtp, 192.168.102.35:25/tcp -> 10.0.6.200:25/tcp
Läbipääs KOHTVORK võrgust AVALIK_KOHTVORK võrku (ja R2 ruuteri kaudu internetti)
- kellaaeg ntp, 192.168.38.1:123/udp
- nimeteenus, 192.168.96.222:53/udp,tcp
- süsteemsed teated smtp, 192.168.32.85:25/tcp
- ocsp, 192.168.42.42:80/tcp
Läbipääs AVALIK_KOHTVORK võrgust (ja R2 ruuteri kaudu internetist) KOHTVORK võrku
- intraneti www, 192.168.103.26:443/tcp -> 172.16.2.143:443/tcp
Läbipääs KOHVORK võrgust otse tulemüüri kaudu TOODANG võrgu teenustele ning TOODANG teenuste keskkonnale haldusligipääs
- www, 172.16.2.0/24 -> 192.168.102.35:80,443/tcp -> 10.0.6.90:80,443/tcp
- smtp, 172.16.2.0/24 -> 192.168.102.35:25/tcp -> 10.0.6.200:25/tcp
- ssh, 172.16.2.0/24 -> 10.0.6.0/24:22/tcp
Paketifiltri seadistusfaili põhimõtteskeem
Paketifiltri kirjutamisel tuleb teha tavaliselt kopromiss täpsuse ja üldisuse vahel. Nii võiks tekkida piisavalt turvaline tulemüür ja mille keerukus võimaldab teda veel hallata.
Kahe välisühendusega aadressteisendava tulemüüri puhul tuleks tähelepanu pöörata sellistele asjaoludele
- tulemüür kasutab ühte ruutingutabelit ja tulemüüril endale on seadistatud iseenesest üks vaikelüüs teenusepakkuja ruuteri R1 kaudu
- teenusepakkuja R2 kaudu käivat liiklust ruuditakse paketifiltri abil
- kohtvõrgust saab kasutada avalikke teenuseid otse st vastav liiklus ei käib ringiga läbi teenusepakkuja võrgu (KOHTVORK -> R2 -> R1 -> TOODANG)
- tulemüüri enda haldus toimub läbi avaliku võrgu ruuteri R1 kaudu
Ülesande lahendamiseks sobib kasutada sellise ülesehitusega paketifiltri seadistusfaili
# MACROS and LISTS include "/etc/pf.macros-and-lists" # TABLES include "/etc/pf.tables" # OPTIONS include "/etc/pf.options" ######### TRANSLATION ########## # # et kõigist privaatsetest võrkudest avalikku vorku minevatel pakettidel oleks sobivad avalikud src aadressid # reeglid kasutavad pakettidel olevaid silte nat-anchor nat_to_avalik on $if_avalik load anchor nat_to_avalik from "/etc/pf.anchor-nat_to_avalik" # et toodangu vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega nat on $if_toodang from $carp_toodang:network:0 tagged TO_TOODANG -> $carp_toodang:0 # et arenduse vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega nat on $if_arendus from $carp_arendus:network:0 tagged TO_ARENDUS -> $carp_arendus:0 # et testi vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega nat on $if_test from $carp_test:network:0 tagged TO_TEST -> $carp_test:0 # koigil seadmetel RDR-teisendused pakettide toodangukeskkonna serveritele jõudmiseks # reeglid rakendavad pakettidele sildi TO_TOODANG rdr-anchor rdr_to_toodang on seadmed load anchor rdr_to_toodang from "/etc/pf.anchor-rdr_to_toodang" # koigil seadmetel RDR-teisendused pakettide arenduskeskkonna serveritele jõudmiseks # reeglid rakendavad pakettidele sildi TO_ARENDUS rdr-anchor rdr_to_arendus on seadmed load anchor rdr_to_arendus from "/etc/pf.anchor-rdr_to_arendus" # koigil seadmetel RDR-teisendused pakettide testkeskkonna serveritele jõudmiseks # reeglid rakendavad pakettidele sildi TO_TEST rdr-anchor rdr_to_test on seadmed load anchor rdr_to_test from "/etc/pf.anchor-rdr_to_test" # koigil seadmetel RDR-teisendused pakettide halduskeskkonna serveritele jõudmiseks # reeglid rakendavad pakettidele sildi TO_HALDUS rdr-anchor rdr_to_haldus on seadmed load anchor rdr_to_haldus from "/etc/pf.anchor-rdr_to_haldus" ######### FILTER ########## # TULEMÜÜRI ENDASSE SISSEPÄÄS # # ssh kaugligipaas tulemüüri endasse, tulemüüri haldamiseks pass in quick on $if_avalik inet proto tcp from <kontor> to $if_avalik port 22 label "JSavalik_from_kontor" # vaikimisi blokeeritakse igasugust liiglust läbi tulemüüri seadmete block all # pingida on lubatud piiramatult pass quick on seadmed inet proto icmp icmp-type echoreq label "JSVsmd_proto_icmp" # TULEMÜÜRIST LÄBIPÄÄS # # lubatakse sisse RDR-teisendusest saadud siltidega pakette pass in quick on seadmed tagged TO_TOODANG label "JSsmd_to_toodang" pass in quick on seadmed tagged TO_ARENDUS label "JSsmd_to_arendus" pass in quick on seadmed tagged TO_TEST label "JSsmd_to_test" pass in quick on seadmed tagged TO_HALDUS label "JSsmd_to_haldus" # lubatakse välja RDR teisendusest ja PASS_IN_FROM_SEADMED_TO_VORK ankrutest saadud TO_* tagidega # liiklust kontreetsetest seadmetest pass out quick on $if_toodang tagged TO_TOODANG label "JVtoodang" pass out quick on $if_arendus tagged TO_ARENDUS label "JVarendus" pass out quick on $if_test tagged TO_TEST label "JVtest" pass out quick on $if_haldus tagged TO_HALDUS label "JVhaldus" pass out quick on $if_avalik tagged TO_AVALIK label "JVavalik" # lubatakse sisse ja sildistatakse kõigist võrkudest konkreetsesse võrku suunduvat liiklust # selline iseloom on koigist vorkudest avalikku vorku mineval liiklusel, nt ntp ja ocsp teenus # rakendadakse silt TO_AVALIK anchor pass_in_from_seadmed_to_avalik on seadmed load anchor pass_in_from_seadmed_to_avalik from "/etc/pf.anchor-pass_in_from_seadmed_to_avalik" # lubatakse sisse ja sildistatakse konkreetsetest vorgudest kõigisse võrkudesse suunduvat liiklust # selline iseloom on nt monitooringul ja varundamisel; selle abil saab rangemalt piirata ka vorkude # kaupa avalikku internetti pääsemist erineval määral # sildistatakse lähtevork, nt FROM_HALDUS anchor pass_in_from_haldus_to_seadmed on $if_haldus label "JShaldus_from_haldus_to_seadmed" load anchor pass_in_from_haldus_to_seadmed from "/etc/pf.anchor-pass_in_from_haldus_to_seadmed" # kõigist seadmetest lubatakse välja FROM_* siltidega liiklust pass out quick on seadmed tagged FROM_HALDUS label "JVsmd_from_haldus_to_seadmed" # # TULEMÜÜRIST ENDAST VÄLJAPÄÄS # # et tulemüüri kellaaeg oleks õige pass out on $if_avalik inet proto udp to $ntp port 123 label "JVavalik_ntp" # et tulemüüri sees nimelahendus töötaks pass out on $if_avalik inet proto { tcp, udp } to $dns port 53 label "JVavalik_to_dns" # et haldusteated saaksid välja pass out on $if_avalik inet proto tcp to $smtp port 25 $tcpopts label "JVavalik_to_smtp" # et tulemüüri saaks tarkvara lisada pass out on $if_avalik inet proto tcp to $ftp port 80 $tcpopts label "JVavalik_to_ftp" # tulemüürist endast on ei ole küll põhimõtteliselt vaja saada kõigisse arvutitesse pöörduda, # aga praktiliselt on see võimalus hea pass out quick on $if_arendus inet from $if_arendus to $if_arendus:network:0 label "JVarendus_from_tulemuur_ise_to_arendus" pass out quick on $if_test inet from $if_test to $if_test:network:0 label "JVtest_from_tulemuur_ise_to_test" pass out quick on $if_haldus inet from $if_haldus to $if_haldus:network:0 label "JVhaldus_from_tulemuur_ise_to_haldus"