Skip to content

M08 Verkon segmentointi ja palomuurit

Takaisin opintojakson aikatauluun

Opetusvideot

Microsoft Stream (sharepoint) video

Tausta

Alunperin tietoverkot suunniteltiin mahdollistamaan saatavuus viestiä lähettävien tahojen kesken... olosuhteista riippumatta (esim. ydinsota). Reitti tahojen välille voitiin aina muodostaa dynaamisen reitityksen avulla.

Valitettavasti tämä saatavuus ei ole aina tervetullutta. Vuosien varrella on tullut oppeja, ettei kaikkien päätelaitteiden tarvitse yhteydessä kaikkiin päätelaitteisiin.

Tätä saatavuutta rajoittaa yleensä palomuuri tietoverkoissa.

Palomuurit (ja niiden säännöstöt) ovat klassinen esimerkki kyberturvallisuudesta. Ja tämän vuoksi termin tunnistaa moni kuluttaja.

Tietoturvallisuus myös vaikutti tähän ilmiöön, koska Tietoa piti turvata kaikissa sen olomuodoissa elinkaaren aikana:

  • Käytössä
    • paperilla
    • tietokoneen näytöllä
  • Liikkeellä
    • tietoverkoissa !!!
  • Levossa
    • kovalevyillä
    • USB -tikuilla

Palomuurit asettavat suojauksen verkojen rajoille eli verkkosegmenttien reunoille, jossa ne voivat suodattaa läpimenevää liikennettä. Tämä ei ole juuri poikkeavaa kaupungin muureista, maan rajoista tai rakennusten kulunvalvonnasta, jossa voidaan pakottaa suodatussääntöjä perustuen passeihin/kulkulupiin.

Näitä suodatuspäätöksiä asennetaan yleensä palomuurin sääntötauluun.

Varoitus: Palomuurit eivät voi tehdä mitään näistä, jos liikenne ei kulje/reititetä sen laitteen lävitse!

Tämä tarkoittaa että tietoverkon ylläpitäjän pitää pystyä käsittelemään (ja reitittämään) tietoverkon liikennettä palomuuriin!

Palomuurit sallivat verkon:

  • Kielletään (eng. Deny)
  • Sallitaan (eng. Permit)
  • Estetään(eng. Reject), Lähettämällä TCP RST tai ICMP port unreachable viesti lähettäjälle
  • Salataan/puretaan salaus (esim. VPN -yhteydessä)
  • Autentikoidaan (e.g. pakotetaan kirjautumisportaaliin)
  • Priorisoidaan (Lisätään palvelunlaadun merkkaus esim. TOS or DSCP)
  • Jonotetaan (Lisätään liikenne jonoon ja annetaan jonotusalgoritmin purkaa jonot)
  • Suodatetaan (esim. pyyhitään haitallisia ohjelmia liikenteestä)
  • ja tarkkaillaan (logitetaan ja monitoroidaan liikenettä)

...liikennettä alueelta toiselle

Verkkosegmentit eli vyöhykeet (eng. Zones)

Hyvin usein eri palomuurit käyttävät termiä verkkosegmentti(eng. network segments) tai politiikkavyöhykkeet (eng. (policy) zones). Tässä aiheessa ei ole standardoitua terminologiaa palomuureille, joten termit vaihtuvat per palomuurivalmistaja.

Onko sääntö englanniksi permit, allow vai accept?

Verkkosegmentti (eng. Network Segment) on yleensä aliverkko (tai yliverkko) osoitteita.

Politiikkavyöhyke (eng. (policy) zones) on ryhmä Verkkosegmenttejä

Esimerkki tästä olisi esim. LabraNet:n luokat. Käytetään luokkia D330, D331 ja D334 esimerkkinä. Kaikissa näissä luokissa on monia tietokoneita ja jokaisessa on oma aliverkko:

  • D330, 192.168.xx.0/24
  • D331, 192.168.yy.0/24
  • D334, 192.168.zz.0/24

Oletettakoon että LabraNet:ssä on myös palvelimia (esim. student.labranet.jamk.fi)

  • servers, 192.168.kk.0/24

The topology would look like this.

!a

Palomuurin sääntötaulu näyttäisi tältä:

Index Mistä Mihin Protokolla Toimenpide
01 D330 Servers HTTP Accept
02 D331 Servers HTTP Accept
03 D334 Servers HTTP Accept
04 Any Any Any Deny

Toimenpide ons ama kaikille luokille. Täten Array:n (suom. rivin/taulukon) luonti on kätevää.

Array:t on osa ohjelmointia

Classrooms = [D330, D331, D334]

Joten tämä kategorisointi verkkosegmenttejä näyttäisi alapuolisessa kuviossa

!a

Johtaen palomuurisääntötauluun

Index Mistä Mihin Protokolla Toimenpide
01 Classrooms Servers HTTP Accept
02 Any Any Any Deny

Mieti kuinka monta sääntöriviä säästyy, jos puhutaan kaikista eri luokista IT-dynamo -rakennuksessa?

Vyöhykkeistäminen johtaa paljon luettavampaan/ymmärrettävämpään palomuurisääntötauluun

Palomuurityyppejä

Päätelaite palomuurit

Useita eri palomuurituotteita on markkinoilla päätelaitteille. Usein kaupallisia tuotteita myydään termillä Endpoint Protection, jossa palomuurin lisäksi on paljon muita toiminnallisuuksia kuten virustorjunta, tiedonvuotamisenesto (eng. data loss preventation) ja niin edelleen.

Kuitenkin perusominaisuutena kaikissa käyttöjärjestelmissä on pohjimmillaan palomuuri.

Toiminnallisuus joka sallii ohjelmistojen keskustella tietoverkon kanssa, johon olet kytkeytynyt.

Windows palomuuri

Windows palomuuri (eng. Windows Firewall) tutustutettiin Windows XP Service Pack 1:ssä ja on sen myötä jalkautunut täysin toimivaksi ratkaisuksi Windows -ympäristöissä.

Kuvankaappaus Windows Defender Firewall, Windows 10, elokuu 2020

!a

iptables

IPtables on yleisin palomuuriratkaisu Linux käyttöjärjestelmissä.

Quote

 iptables is the userspace command line program used 
 to configure the Linux 2.4.x and later packet filtering
 ruleset. It is targeted towards system administrators.

The iptables package also includes ip6tables. ip6tables
is used for configuring the IPv6 packet filter. 

Heikkous IPtables:ssa on että jokaisella protokollala pitää olla oma xyztables toteutus: arptables, ip6tables, iptables, ...

sudo iptables -L lubuntu.ova:sta
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-input  all  --  anywhere             anywhere            
ufw-before-input  all  --  anywhere             anywhere            
ufw-after-input  all  --  anywhere             anywhere            
ufw-after-logging-input  all  --  anywhere             anywhere            
ufw-reject-input  all  --  anywhere             anywhere            
ufw-track-input  all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ufw-before-logging-forward  all  --  anywhere             anywhere            
ufw-before-forward  all  --  anywhere             anywhere            
ufw-after-forward  all  --  anywhere             anywhere            
ufw-after-logging-forward  all  --  anywhere             anywhere            
ufw-reject-forward  all  --  anywhere             anywhere            
ufw-track-forward  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-output  all  --  anywhere             anywhere            
ufw-before-output  all  --  anywhere             anywhere            
ufw-after-output  all  --  anywhere             anywhere            
ufw-after-logging-output  all  --  anywhere             anywhere            
ufw-reject-output  all  --  anywhere             anywhere            
ufw-track-output  all  --  anywhere             anywhere            

Chain ufw-after-forward (1 references)
target     prot opt source               destination         

Chain ufw-after-input (1 references)
target     prot opt source               destination         
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-ns
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-dgm
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootps
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootpc
ufw-skip-to-policy-input  all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-input (1 references)
target     prot opt source               destination         

Chain ufw-after-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-after-output (1 references)
target     prot opt source               destination         

Chain ufw-before-forward (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ufw-user-forward  all  --  anywhere             anywhere            

Chain ufw-before-input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-logging-deny  all  --  anywhere             anywhere             ctstate INVALID
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
ufw-not-local  all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns
ACCEPT     udp  --  anywhere             239.255.255.250      udp dpt:1900
ufw-user-input  all  --  anywhere             anywhere            

Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-before-output (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             state RELATED,ESTABLISHED
ufw-user-output  all  --  anywhere             anywhere            

Chain ufw-logging-allow (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "

Chain ufw-logging-deny (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ctstate INVALID limit: avg 3/min burst 10
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-not-local (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type MULTICAST
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
ufw-logging-deny  all  --  anywhere             anywhere             limit: avg 3/min burst 10
DROP       all  --  anywhere             anywhere            

Chain ufw-reject-forward (1 references)
target     prot opt source               destination         

Chain ufw-reject-input (1 references)
target     prot opt source               destination         

Chain ufw-reject-output (1 references)
target     prot opt source               destination         

Chain ufw-skip-to-policy-forward (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-input (7 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-output (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-track-forward (1 references)
target     prot opt source               destination         

Chain ufw-track-input (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW

Chain ufw-track-output (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW

Chain ufw-user-forward (1 references)
target     prot opt source               destination         

Chain ufw-user-input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-user-limit (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-user-logging-forward (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-input (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-output (0 references)
target     prot opt source               destination         

Chain ufw-user-output (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
Iptables Android puhelimessa (rootattu cyanogenmod:lla)

!a

nftables

nftables on kilpailija iptables:lle.

nftables -komennot ovat erilaisia verrattuna iptables -komentoihin
nft add table ip nimi
nft add chain ip nimi forward { type filter hook forward priority 0\; }
nft add chain ip nimi forward { tcp dport 80 ip daddr 1.150.40.100 counter accept \; }
nft add rule ip nimi forward ct state established,related accept
nft insert rule ip nimi forward icmp type {echo-request} accept
nft add chain ip nimi forward { drop\; }

nft add chain ip nimi incoming { type filter hook input priority 0\; }
nft add chain ip nimi incoming { policy drop\; } 
nft add chain ip nimi incoming { icmp type {echo-request} accept\; }
nft add chain ip nimi incoming { tcp dport 22 accept\; }

nft list table nimi -a

Yksinkertainen palomuuri (eng. Uncomplicated Firewall)

Ubuntussa (~20.04) on oletuksena asennettuna ufw käyttäjille, jotka eivät halua opetella käyttämään iptables (tai nftables).

Esimerkki ufw säännöistä Raspberry Pi -tietokoneella

!a

Verkkopalomuurit

Vyos

Vyos on palomuurisuodattimia (eng. firewall filters) joilla voi asettaa rajoitteita liikenteelle aliverkkojen välillä.

PfSense

Pfsense on avoimen lähdekoodin palomuuritoteutus, jossa on graafinen käyttöliittymä säännöstön hallinnalle. Tämän vuoksi se on hyvin suosittu pienissä organisaatioissa, jotka tarvitsevat perus verkkopalomuurin toiminnallisuuksia.

Sophos

Sophos tarjoaa XG Firewall -tuotteeseen ilmaisia lisenssejä ajettavaksi virtuaalikoneilla.

Esimerkki Sophos -käyttöliittymästä ~2016 paikkeilta

!a

Lähde: Laboratory Exercise 3, Jare Ristimäki, Nikke Kettunen, Henri Huuskonen, Meeri Niiranen, Vesse Saastamoinen

Paloalto

Paloalto on palomuurituote jota käytetään LabraNet:ssä.

Esimerkki Paloalto:n käyttöliittymästä ~2018

!a

Tilallinen / Tilaton palomuuri

Palomuurin tilataulu on dynaaminen sääntötaulu, joka heijastaa läpipäästyn liikenteen kaksisuuntaisuutta.

Tarkoittaen että jos liikennettä sallitaan ulos verkosta, pitää se myös sallia sisäänheijastaen säännöstössä.

Annettuna alapuolinen topologia

!a

Sääntötaulu voisi olla

Index Mistä Mihin Protokolla Toimenpide
01 1.1.200.0/24 1.1.100.0/24 HTTP Accept
02 Any Any Any Deny

Tämä tarkoittaisi että pelkästään liikenne työasemalta olisi sallittuna palvelimelle.

Heijastamalla liikenne takaisin, tarkoittaa että dynaamisesti lisätään sääntötauluun rivi (seuraten tietoliikenteen tilallisuutta).

Index Mistä Mihin Protokolla Toimenpide
01 1.1.200.0/24 1.1.100.0/24 HTTP Accept
02 1.1.100.0/24 1.1.200.0/24 HTTP* Accept
03 Any Any Any Deny

Warning

Nämä tilataulut ovat hankalia synkronoida korkean saatavuuden ympäristöissä, vaatien heartbeat kaapeleita palomuurien välille synkronoidakseen tilataulut kahdennetun laitteen RAM muistien välillä.

Palomuurien sijoitus

Palomuurien sijoitus on hankala käsite. Syvyys puolustuksessa (eng. Depth in Defence) vaatii että päätelaitteilla on oma palomuuri käyttöjärjestelmässä ja sen yhteydessä käytetään vielä verkkopalomuuria tukena.

Eri suojaustasot vaativat useita eri verkkopalomuureja, jotta eri suojaustasollisten verkkosegmenttien välillä voidaan hallinnoida liikennettä.

Yhdyskäytäväohje, sorry only in finnish

!a

Konfiguroidaan Vyos palomuurilla

Ole varovainen kun konfiguroit palomuureja!

Onneksemme meillä on virtualisoinnin konsolit, josta voimme hallinnoida palomuurina toimivia virtuaalikoneita (vyoseja).

Tuotannossa kuitenkin pitää joskus konfiguroida palomuureja hallintayhteyden lävitse (esim. SSH ja HTTPS).

Jostain syystä kaikkien pitää kokea kun palomuuraa itsensä ulos laitteesta

Ihan sama kuinka monta varoitusta antaa, ole varovainen kun päätät lyödä sisään commit

Jotta meidän vyos:t ovat saavutettavissa. On hyvä globaalisti sallia ping palomuurin lävitse.

set firewall all-ping <enable/disable>

Tämän jälkeen voimme ruveta asettamaan vyöhykkeitä. Käytetään ympäristössämme 3 eri vyöhykettä:

  1. LAN
    • Rajapinnat jotka käyttävät yksityisiä IPv4 osoitteita
  2. WAN
    • rajapinta jossa on julkinen IPv4 osoite
  3. vyos
    • IPv4 osoitteet, jotka ovat paikallisia tälle vyos:lle
Klikkaa tästä, jotta näet tämän vyöhykkeistämisen visuaalisesti topologiakuvassa.

!a

Vyöhykkeet voidaan perustaa antamalla komento set zone-policy zone <name> default-action <drop/accept>.

Oletuksena (koska sääntötaulut yleensä aina sisältävät oletushylkäyksen) perustamme vyöhykkeet komennoilla:

set zone-policy zone LAN default-action drop
set zone-policy zone WAN default-action drop
set zone-policy zone vyos default-action drop

Tämän jälkeen meidän pitää sitoa mikä rajapinta on sidottuna mihinkäkin vyöhykkeeseen komennolla: set zone-policy zone <name> interface <interface>.

Tämä on tärkeää! Esim. useat eri VLAN:t voitaisiin sitoa yksittäiseen alueeseen

Olettaen että aliverkot kuuluvat kyseiseen vyöhykkeeseen (esim. classrooms)

Esimerkki meidän vyöhykkeillä (topologiakuvassa) olisi:

set zone-policy zone WAN interface eth0
set zone-policy zone LAN interface eth1
set zone-policy zone LAN interface eth2
set zone-policy zone vyos local-zone

Ole tarkka vyöhyke-rajapinta sidonnassa

esim. vif -rajapinnoilla komento olisi set zone-policy zone LAN interface eth2.20

Tämän jälkeen voimme ruveta tekemään säntötauluja perustuen mikä vyöhyke keskustelee minkäkin vyöhykkeen kanssa. Aloitetaan LAN->WAN.

Palomuuri: LAN->WAN

Haluamme sallia perusliikennöinnin opintojaksolla seuraavasti.

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 LAN WAN HTTP (tcp/80) Accept
11 LAN WAN HTTPS (tcp/443) Accept
20 LAN WAN ICMP Accept
30 LAN WAN SSH (tcp/22) Accept
40 LAN WAN DNS (udp/53) Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name LAN_to_WAN default-action drop
set firewall name LAN_to_WAN enable-default-log
set firewall name LAN_to_WAN rule 10 action accept
set firewall name LAN_to_WAN rule 10 destination port 80
set firewall name LAN_to_WAN rule 10 protocol tcp
set firewall name LAN_to_WAN rule 10 log enable
set firewall name LAN_to_WAN rule 11 action accept
set firewall name LAN_to_WAN rule 11 destination port 443
set firewall name LAN_to_WAN rule 11 protocol tcp
set firewall name LAN_to_WAN rule 11 log enable
set firewall name LAN_to_WAN rule 20 action accept
set firewall name LAN_to_WAN rule 20 protocol icmp
set firewall name LAN_to_WAN rule 20 log enable
set firewall name LAN_to_WAN rule 30 action accept
set firewall name LAN_to_WAN rule 30 destination port 22
set firewall name LAN_to_WAN rule 30 protocol tcp
set firewall name LAN_to_WAN rule 30 log enable
set firewall name LAN_to_WAN rule 40 action accept
set firewall name LAN_to_WAN rule 40 destination port 53
set firewall name LAN_to_WAN rule 40 protocol udp
set firewall name LAN_to_WAN rule 40 log enable

Palomuuri: WAN->LAN

Edetään WAN->LAN ja tehdään palomuurista tilallinen. Tämä tarkoittaa että kaikki liikenne joka sallitaan LAN->WAN sallii myös vastaukset takaisin WAN->LAN.

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 WAN LAN Established sessions Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name WAN_to_LAN default-action drop
set firewall name WAN_to_LAN rule 10 action accept
set firewall name WAN_to_LAN rule 10 state established enable
set firewall name WAN_to_LAN rule 10 state related enable

Palomuuri: LAN->vyos

LAN verkot tarvitsevat SSH yhteyden IP osoitteisiin joita vyos virtuaalikone käyttää. Tämä tarkoittaa rajapintojen IP-osoitteita vyos:lla. Myös reititysprotokolla pitää sallia, jotta dynaaminen reititys mahdollistuu.

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 LAN vyos SSH (tcp/22) Accept
20 LAN vyos OSPF Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name LAN_to_vyos default-action drop
set firewall name LAN_to_vyos rule 10 action accept
set firewall name LAN_to_vyos rule 10 destination port 22
set firewall name LAN_to_vyos rule 10 protocol tcp
set firewall name LAN_to_vyos rule 20 action accept
set firewall name LAN_to_vyos rule 20 protocol ospf

Palomuuri: vyos->LAN

SSH yhteydet pitää sallia takaisin ulos vyos:lta. Myös reititysprotokolla pitää sallia, jotta dynaaminen reititys mahdollistuu.

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 vyos LAN Established sessions Accept
20 vyos LAN OSPF Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name vyos_to_LAN default-action drop
set firewall name vyos_to_LAN rule 10 action accept
set firewall name vyos_to_LAN rule 10 state established enable
set firewall name vyos_to_LAN rule 10 state related enable
set firewall name vyos_to_LAN rule 20 action accept
set firewall name vyos_to_LAN rule 20 protocol ospf

Palomuuri: vyos->WAN

Tämä viimeinen accept voilla tarpeeton, mutta varmistamaan että muodostetut (eng. established) yhteydet on sallittu takaisin WAN:sta.

Tämän on myös tarkoitettu olemaan esimerkki kyberturvallisuudesta palomuureissa

Usein kun jotain on saatu toimimaan, ei välttämättä tarkasteta onko jokainen sääntö varmasti tarpeellinen...

Jos se jätetään tuotantoverkkoon käyttöön, se voi paljastaa turhan paljon pinta-alaa hyökkäykselle.

Voit testata tämän tarpeellisuuden itse harjoitustehtävässä!!!

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 vyos WAN Established sessions Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name vyos_to_WAN default-action drop
set firewall name vyos_to_WAN rule 10 action accept
set firewall name vyos_to_WAN rule 10 state established enable
set firewall name vyos_to_WAN rule 10 state related enable

Palomuuri: WAN->vyos

Jos vyostekee yhteyksiä ulkomaailmaan/WANiin (huom! niitä ei ole sallittu vyos->WAN), Me sallimme muodostetut yhteydet takaisin. Haluamme myös sallia ICMP:n jotta ping toimii WAN:sta ongelmanratkaisua varten.

Dokumentointu sääntötaulu:

Index Mistä Mihin Protokolla Toimenpide
10 WAN vyos Established sessions Accept
20 WAN vyos ICMP Accept
999 Any Any Any Deny

Joka olisi konfiguraationa

set firewall name WAN_to_vyos default-action drop
set firewall name WAN_to_vyos rule 10 action accept
set firewall name WAN_to_vyos rule 10 state established enable
set firewall name WAN_to_vyos rule 10 state related enable
set firewall name WAN_to_vyos rule 20 action accept
set firewall name WAN_to_vyos rule 20 protocol icmp

Lopulta sidotaan sääntötaulut käyttöön vyöhykkeiden välille

Tämän materiaalin ohjeistus säännöstöstä (toivottavasti) käy järkeen tähän pisteeseen asti. Valitettavasti sääntötaulujen nimeäminen, ja miten ne otetaan käyttöön, näyttää absurdilta seuraavassa komennossa:

set zone-policy zone <destination-zone> from <source-zone> firewall name <source_to_destination>

Mutta luota minuun, nämä toimivat jos tehdään seuraavasti:

set zone-policy zone LAN from WAN firewall name WAN_to_LAN
set zone-policy zone WAN from LAN firewall name LAN_to_WAN
set zone-policy zone vyos from LAN firewall name LAN_to_vyos
set zone-policy zone LAN from vyos firewall name vyos_to_LAN
set zone-policy zone WAN from vyos firewall name vyos_to_WAN
set zone-policy zone vyos from WAN firewall name WAN_to_vyos

Testataan toiminnallisuus ulkopuolisilla laitteilla

Warning

Palomuurit ovat hankalia todentaa.

  1. Tämä tarkoittaa että yhteytesi saatetaan katkaista/estää. Ja sinulla ei ole mitään hajua miksi
  2. Tämä tarkoittaa että yhteytesi saatetaan sallia/päästää lävitse. Ja sinulla ei ole *mitään hajua miksi

Eli vaatii paljon kärsivällisyyttä ja taitoa testatakseen palomuurin toimintaa.

Jos palomuuraat reititysprotokollasi -> ongelma voikin johtua reitittämättömyydestä

Ole varma että reitityksesi toimii ennenkuin rupeat syyttämään palomuuria.

Ole valmis piirtämään ilmiötä itsellesi auki uutena kuviona, kun varmistat palomuurin toiminnallisuutta.

Seuraavat toiminnallisuudet on testattu tässä topologiassa.

!a

Testataan HTTP LAN:sta WAN:iin

Aseta Lubuntu työasema johonkin LAN segmenttiin ja testaa yhteydellisyyttä HTTP:llä WAN:iin.

!a

Jos sivu latautuu... HTTP toimii!

Samaa voi testata wget -komennolla komentoriviltä.

lubuntu@lubuntu-virtualbox:~$ wget 25.0.0.3
--2020-08-26 09:31:38--  http://25.0.0.3/
Connecting to 25.0.0.3:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11010 (11K) [text/html]
Saving to: ‘index.html’

index.html                    100%[================================================>]  10,75K  10,3KB/s    in 1,0s    

2020-08-26 09:31:40 (10,3 KB/s) - ‘index.html’ saved [11010/11010]

lubuntu@lubuntu-virtualbox:~$ 

Jos index.html latautuu... HTTP toimii!

Vahvistetaan ping LAN:sta WAN:n

Käytä samaa Lubuntu -työsemaa ja pingaa WANiin.

lubuntu@lubuntu-virtualbox:~$ ping 25.0.0.3
PING 25.0.0.3 (25.0.0.3) 56(84) bytes of data.
64 bytes from 25.0.0.3: icmp_seq=1 ttl=62 time=2.25 ms
64 bytes from 25.0.0.3: icmp_seq=2 ttl=62 time=2.14 ms
64 bytes from 25.0.0.3: icmp_seq=3 ttl=62 time=2.49 ms
64 bytes from 25.0.0.3: icmp_seq=4 ttl=62 time=2.29 ms
^C
--- 25.0.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.140/2.291/2.491/0.127 ms
lubuntu@lubuntu-virtualbox:~$
Testaa traceroutea LAN:sta WAN:n

Oletuksena traceroute käyttää UDP -liikennöintiä ja se ei tule toimimaan, koska UDP ei ole sallittuna palomuurimme lävitse.

lubuntu@lubuntu-virtualbox:~$ traceroute 25.0.0.3
traceroute to 25.0.0.3 (25.0.0.3), 64 hops max
  1   192.168.10.254  1,356ms  1,284ms  0,856ms 
  2   10.0.2.2  1,584ms  1,205ms  1,026ms 
  3   *  *  * 
  4   *  *  * 
  5   *  *  * 
  6   *  *  * 
  7   *  *  * 
  8   * ^C
lubuntu@lubuntu-virtualbox:~$ 

Lisätään vipu --icmp ja traceroute lähtee toimimaan, koska ICMP on sallittuna palomuurin lävitse.

lubuntu@lubuntu-virtualbox:~$ traceroute --icmp 25.0.0.3
traceroute to 25.0.0.3 (25.0.0.3), 64 hops max
  1   192.168.10.254  1,351ms  0,688ms  1,086ms 
  2   10.0.2.2  1,499ms  1,419ms  1,310ms 
  3   25.0.0.3  1,447ms  1,302ms  1,283ms 
Testataan nmap:lla palomuurin toimivuutta

Käytä samaa Lubuntu työasemaa LAN:ssa nmappaamaan (network map) WAN:n osoite.

lubuntu@lubuntu-virtualbox:~$ sudo nmap -sS 25.0.0.3
[sudo] password for lubuntu: 
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-26 09:26 EEST
Nmap scan report for 25.0.0.3
Host is up (0.0020s latency).
Not shown: 997 filtered ports
PORT    STATE  SERVICE
22/tcp  closed ssh
80/tcp  open   http
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 5.05 seconds

Todennetaan toimivuus show -komennoilla

show log firewall name LAN_to_WAN esittää hyväksytyt paketit

Huomaa tulosteessa LAN_to_WAN-10-A joka viittaa rule 10 accepted

vyos@vyos:~$ show log firewall name LAN_to_WAN
Aug 21 12:29:16 vyos kernel: [18330.405794] [LAN_to_WAN-10-A] IN=eth2 OUT=eth3 
MAC=08:00:27:89:07:23:08:00:27:27:8e:31:08:00 SRC=192.168.10.9 DST=25.0.0.3 
LEN=52 TOS=0x00 PREC=0x00 TTL=62 ID=19840 DF PROTO=TCP SPT=59884 DPT=80 
WINDOW=501 RES=0x00 ACK FIN URGP=0 
show log firewall name LAN_to_WAN esittää tiputetut/kielletyt paketit

Huomaa tulosteessa LAN_to_WAN-default-D joka viittaa default-action dropped

Tämä oli traceroute joka käytti UDP/33438, mitä ei ollut sallittu palomuurisäännöstössämme.

vyos@vyos:~$ show log firewall name LAN_to_WAN
Aug 21 12:31:08 vyos kernel: [18442.659929] [LAN_to_WAN-default-D]IN=eth2 OUT=eth3 
MAC=08:00:27:89:07:23:08:00:27:27:8e:31:08:00 SRC=192.168.10.9 DST=25.0.0.3 
LEN=37 TOS=0x00 PREC=0x00 TTL=3 ID=42867 DF PROTO=UDP SPT=50269 DPT=33438 LEN=17 
vyos@vyos:~$ 

Jatka harjoituksiin!

Konfiguroi Palomuurit

Takaisin opintojakson aikatauluun?

Takaisin opintojakson aikatauluun


Lisenssi

Tämän opintojakson materiaalin on kirjoittanut Karo Saharinen ja se on lisensoitu Creative Commons Nimeä-EiKaupallinen-EiMuutoksia 4.0 Kansainvälinen -lisenssillä.

Creative Commons -lisenssi