Tulemüür - iptables, nmap, IPv6
Tulemüüri abil on võimalik filtreerida võrguliidese kaudu liikuvaid pakette. Võrguliikluse filtreerimiseks võetakse arvesse läbivate pakettide puhul näiteks nende IP-aadressi (nii lähte- kui sihtaadressi), porte (teenused on mingil kindla pordi kaudu kättesaadavad), ühenduse lippe (nt saab lubada ainult sisevõrgust algatatud TCP-ühendusi). Antud praktikumis vaatame, kuidas on võimalik iptables abil Linuxi kernelisse sisseehitatud tulemüüri seadistada. Võrguturbe teemal on meil ka olemas Tarmo Oja 2022 videoloengud: video1, video2. Videoloengute vaatamine ei ole kohustuslik edukaks sooritamiseks, kuid on siiski abiks teemast ja juhendist arusaamisel.
Ettevalmistus
Selle nädala praktikum toimub Linux Mint virtuaalmasinas. Hoolitsege selle eest, et virtuaalmasin oleks lokaalses võrgus näiteks: 192.168.10.1/24), selleks seadistage võrguadapteri tüübiks Bridged Adapter
. Järgnevalt paigaldame praktikumis vajaminevad programmid. NB! Käesolevas praktikumis on oluline, et teie virtuaalmasinal oleks IPv4 aadress.
Uuendage pakettide nimistut käsuga sudo apt update
. Juhul kui uuendamine jääb 0% juures seisma, siis veenduge, et teil on ühendus Internetiga ning eemaldage faili /etc/gai.conf
rea precedence ::ffff:0:0/96 100
eest kommentaari tähistav sümbol (#).
sudo apt update sudo apt install nmap netcat iptables conntrack telnet telnetd ssh postfix
Valige paigaldamisel vaikeväärtused.
Lülitage virtuaalmasin kloonimiseks välja (shutdown)
Väljaspool arvutiklassi praktikumi sooritamiseks on teil vaja kloonida enda virtuaalmasinaid, et saaksime paremini tulemüüri seadistamist testida. Need kellel on olemas eelnevast praktikumist virtuaalmasin ei pea uut klooni looma ja võib kasutada olemasolevat. VirtualBoxis valige parem klahviga Andmeturve
virtuaalmasinal clone
-> Linked Clone
ja Generate new MAC addresses for all network adapters
-> Clone
).
Kui teie füüsilises arvutis on piiratud koguses muutmälu RAM
(4 GB või vähem), andke Linux Mint virtuaalmasinale vähem mälu näiteks 1.5 GB ja sulgege füüsilises arvutis kõik üleliigsed programmid. Nüüd käivitage mõlemad Andmeturve virtuaalmasinad edaspidi viidatud kui Andmeturve virtuaalmasin
või põhi masin
ja Andmeturve kloon
või lihtsalt kloon
.
Selleks, et tegevused arusaadavamad oleks muutke ära kloonis
hostname kujule perenimi-kloon
ja muutke ära hosti nimi ja samuti hosts
failis.
sudo hostnamectl set-hostname perenimi-kloon sudo nano /etc/hosts
Samuti pange enda virtuaalmasinates Apache uuesti tööle, et kuulavaid porte oleks rohkem. Apache taaskäivitamisel küsitakse sertifikaadi parooli (vaikimisi oli selleks: "serveriparool
")
sudo service apache2 restart sudo service apache2 status
Kui teil apache2
millegipärast pole saate selle paigaldada käsuga sudo apt install apache2
, sudo a2enmod ssl
, sudo a2ensite default-ssl
Kui teil apache taaskäivitamiseg tekib probleeme, siis võite proovida installida ka endale hoopis nginx server. (Sammud 1-4) https://phoenixnap.com/kb/how-to-install-nginx-on-ubuntu-20-04#:~:text=1%20How%20to%20Install%20and%20Configure%20Nginx%20on,...%207%20Test%20Nginx.%20...%208%20More%20items
Selgitage välja (ja jätke meelde) oma arvuti IP-aadress (peaksite olema lokaalses võrgus: 192.168.10.1/24). /24
on lühikujul kirjutatud võrgumask, mis on pikal kujul 255.255.255.0
.
ip addr ls
Edasises praktikumijuhendis kui ei ole eraldi mainitud, et tegevust sooritada kloonis siis tegevusi teha enda peamises Andmeturve virtuaalmasinas.
Tulemüüri testimine
Käsu netstat
abil on võimalik uurida, millised TCP/UDP pordid on avatud ja millised võrguühendused on hetkel aktiivsed. Uuri järgmise kahe käsu väljundit.
sudo netstat -tua sudo netstat -tulpn
Teine programm, millega saab leida avatud porte on võrguskänner nmap
.
Installeerige nmap
sudo apt install nmap
Kasutage seda oma virtuaalmasina IP-aadressi peal:
sudo nmap -sV localhost sudo nmap -sV oma_masina_ip
PS! Pange tähele kuidas localhost
käsu vastuses on rohkem avatud porte kui teie välist IP-d kontrollides (teie enda masinast).
Nmap on mõeldud eelkõige teiste masinate skaneerimiseks. Proovige nmap
käsku Andmeturve kloon virtuaalmasinast teie põhi virtuaalmasina IP peal.
sudo nmap -sV oma_põhivirtuaalmasina_ip
Võrrelge saadud vastust põhi-virtuaalmasinas tehtud nmap käsu väljundiga, kas leidsite mingi erinevuse? Näidisvastus kloon masinast kontrollides oma põhimasina porte.
Järgnevalt katsetame nmap
käsu erinevaid parameetreid. Võrdle iseseisvalt erinevate käskude väljundeid ja loe man nmap
käsu abil mida vastavad võtmed muudavad nmap töös:
sudo nmap oma_põhivirtuaalmasina_ip sudo nmap -v -O oma_põhivirtuaalmasina_ip sudo nmap -v -A oma_põhivirtuaalmasina_ip
Iptables
Iptables on tööriist, mis võimaldab kasutajal manipuleerida Linuxi kernelisse ehitatud pakettide filtreerimise mehhanismiga. Meie kasutame seda lihtsa personaalse tulemüüri ehitamiseks.
Nii nagu iptables
nimi vihjab, toimub filtreerimine tabelite põhiselt. Vaikimisi kasutatakse tabelit filter, mis on mõeldud tavaliste tulemüüriga seotud filtreerimiste jaoks. Tabelid omakorda koosnevad ahelatest, mida mööda paketid liiguvad ja kus neid filtreeritakse. Meil huvitavad vaikimisi kasutatavad ahelad: INPUT, OUTPUT ja FORWARD.
Väga lihtsustatult (tegelikult on iptables palju keerulisem) võime ette kujutada, et arvutis on kaks ahelat, mida paketid läbivad: INPUT sisse tulevate pakettide jaoks ja OUTPUT väljuvate pakettide jaoks.
Ahelaid on võimalik ka juurde luua ning pakette erinevate ahelate vahel suunata. Iga ahelaga saame seostada pakettide filtreerimise reegleid. Reegli juures kirjeldame, milliste pakettide kohta see reegel kehtib ja mida paketiga teha, kui see vastab sellele reeglile. Tuleb aru saada, et reeglite järjekord on oluline ning sellest sõltub, kunas pakett välja filtreeritakse.
Tulemüüri toime sõltub sellest, kuidas ahelad ja reeglid on seadistatud. Kui sissetulev pakett suunatakse INPUT ahelasse, siis hakatakse sellele järjest reegleid rakendama (vastavalt reeglite järjestusele) ning kui reegel ütleb, et pakett on keelatud, siis visatakse see minema ning järgmiste reegliteni see pakett enam ei jõua (see on välja filtreeritud).
Iptables filtreerimiskäsu näide:
See reegel on seotud INPUT ahelaga (sissetulevad paketid), kehtib ainult pakettide kohta, mis tulevad eth0 võrguliidesesse ning määrab, et need paketid lükatakse tagasi. Teisisõnu blokeerib antud reegel kogu sissetuleva võrguliikluse eth0 võrguliidesel.
Tulemüüri skripti loomine
Selle praktikumi ülesandeks on kirjutada käsurea skript, mis sisaldab kõiki vajalikke käske iptables tulemüüri seadistamiseks. Iga kord, kui me soovime tulemüüri ümber seadistada, saame me muudatused kirjutada skripti ning siis selle uuesti käivitada.
Alustuseks looge uus skriptifail nimega skript.sh
(lihtne tekstifail) ning kirjutage selle skripti algusesse järgmised read:
#!/bin/sh iptables -F
#!/bin/sh
ütleb järgnevale skriptile millist shelli kasutada (siinkohal system shell). Käsu iptables -F
tulemusena eemaldatakse kõik olemasolevad reeglid ning taastab esialgse olukorra. Kõik iptables reeglite muutmise käsud peab edaspidi kirjutama sellese skripti. Iga kord kui soovite tulemüüri ümber seadistada, tuleb see skript käivitada nii:
sudo sh skript.sh
Selleks, et aru saada iptables käsu parameetritest uurige vastavat man lehte: man iptables
. Järgmiseks lisage logimisreeglid:
iptables -A INPUT -j LOG --log-prefix="input " iptables -A OUTPUT -j LOG --log-prefix="output "
Nende reeglite põhjal kirjutatakse iga vastuvõetud paketi kohta kirje /var/log/kern.log
failis asuvasse logisse.
Iptables'i kasutamise juures on filtreerimise käskude järjekord väga tähtis! Kui te soovite näha juba lisatud filtreerimise reegleid, siis saate selleks kasutada järgmist käsku:
sudo iptables -L -nv --line-numbers
Kasutage seda käsku edaspidi, et kontrollida kas tulemüür on seadistatud korrektselt.
Proovige kloon virtuaalmasinast enda põhi-virtuaalmasinasse sisse logida kasutades ssh
'd, ning otsige iptables logist ssh'ga seotud pakette:
sudo grep "DPT=22" /var/log/kern.log
Juhul kui SSH-ga ühendamine ei õnnestu, siis kontrollige kas virtuaalmasina SSH-teenus töötab (sudo service ssh status
). Kui see ei aita, siis kontrollige, et te pole iptables abil enda ühendusi ära blokeerinud ja vajadusel tehke iptables -F
.
Nüüd eemaldage praegused logimisreeglid ning keelake skriptis väljastpoolt masinasse uute ühenduste loomine kasutades järgmist nelja filtreerimise käsku:
1. Esimene reegel lubab kõik paketid, mis liiguvad läbi lo ehk loopback liidese. See on võrguliides, mida arvuti kasutab iseendale (localhost'le) pakettide saatmiseks.
iptables -A INPUT -i lo -j ACCEPT
2.Teine reegel lubab kõik vastuspaketid ehk paketid mis on seotud juba varasemalt lubatud ühendustega ehk aktiivsete seanssidega. Antud reegel lubab meil vältida varasemalt lubatud seanssidega seotud pakettide filtreerimist. Enamasti on tegu seest initsialiseeritud ühendustega näiteks veebilehitsejale mõeldud paketid koos veebilehe bittide ja baitidega, olukorras kus kasutaja on avaldanud veebilehitsejas soovi mingit veebilehte külastada. Sellest on oluline aru saada ning teil läheb seda reeglit vaja ka hiljem skripti koostamiseks!
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3. Kolmas reegel logib kõik ülejäänud paketid. Varasemate reeglite põhjal juba lubatud või keelatud pakettide kohta midagi logisse enam ei kirjutata.
iptables -A INPUT -j LOG --log-prefix "input-reject "
4. Neljas reegel keelab kõik ülejäänud paketid.
iptables -A INPUT -j REJECT
Aktiveerige muudatused (käivitage skript) ja pärast seda uurige iptables seadistust sudo iptables -L -nv --line-numbers
. Samuti uurige hetkel tulemüürile teada olevate seansside tabeli conntrack -L
sisu ja proovige sellest aru saada (tehke seda ka hiljem) - küsige, kui aru ei saa. Vihjeks niipalju, et see on seotud eelmise punkti 2. reegliga. Rohkem infot conntrack kohta leiab siit: http://www.faqs.org/docs/iptables/theconntrackentries.html.
Veenduge, et pärast seda ei saa enam kõrvalmasinast teie masinasse logida.
Proovige muuta ühenduste keelamise viisi ja üritage aru saada kuidas need üksteisest erinevad. Ühenduse keelamise viisi asendamiseks / täpsustamiseks muutke viimast keelamisrida, nii et -j REJECT
asemel kasutataks -j DROP
(pärast muudatust skriptifailis käivitage skript ja proovige kloon-masinast põhiarvutisse SSH abil sisse logida):
iptables -A INPUT -j DROP
Lugege iptables manuaali ja vaadake, missuguseid teisi valikuid saab kasutada koos - j REJECT --reject-with
parameetriga.
Proovige erinevate keelamisviiside mõju nmap
'i väljundile. (vajalik -Pn
, kuna ping
on meie reeglite järgi keelatud)
Nüüd modifitseerige skripti ning lubage ssh
porti (22) saabuvad paketid. Lisame ka sisenevate ssh
ühenduste logimiseks eraldi reegli. Pange järgnevad kaks reeglit skriptis iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
rea järgi.
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j LOG --log-prefix "ssh yhendused: " iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
Salvestage ja käivitage skript. Veenduge, et üle ssh ühenduse loomine ja logimine töötab kloon-arvutist põhivirtuaalmasinasse.
Tekitage reegel ping
(ICMP echo
) lubamiseks ja lisage SSH reeglite ette skriptis:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Täiendage ssh
ja icmp
reegleid nii, et nad lubaksid ühendusi ainult kindla IP-aadressi pealt IP-aadressi põhjal filtreerimiseks saab kasutada iptables käsu --source
või -s
lippu.
iptables -A INPUT -s 192.168.1.210,192.168.1.211 -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -s 192.168.1.210,192.168.1.211 -m state --state NEW -p tcp --dport 22 -j LOG --log-prefix "ssh yhendused: " iptables -A INPUT -s 192.168.1.210,192.168.1.211 -m state --state NEW -p tcp --dport 22 -j ACCEPT
NB! Testige, et lubatud õige
arvutist saab teie masinat ping
ida ning ssh
kaudu sisse logida, aga teistest arvutitest seda teha ei saa (muutke varasemalt lubatud arvuti IP skriptist valeks ja proovige uuesti).
Lisage veel juurde ka HTTP
port 80
, HTTPS
ja SMTP
serveri portide lubamine naaberarvutitest. Selleks peame teadma levinud teenuste kokkuleppelisi vaikimisi kasutatavaid pordinumbreid, mida on mugav meelde tuletada näiteks Wikipedia vastavast tabelist https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers . Õppejõu skripti näidiskood, mis ei sisalda HTTPS
ja SMTP
tulemüüri reegleid ja võiksite iseseisvalt lisada modifitseerides olemasolevaid näiteid.
#!/bin/sh iptables -F iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -s 192.168.1.210,192.168.1.211 -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -s 192.168.1.210,192.168.1.211 -m state --state NEW -p tcp --dport 22 -j LOG --log-prefix "ssh yhendused: " iptables -A INPUT -s 192.168.1.210,192.168.1.211 -m state --state NEW -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -j LOG --log-prefix "input-reject " iptables -A INPUT -j REJECT
Käivitage skript ja tutvuge iptables
olekuga kasutades käsku sudo iptables -L -nv --line-numbers
.
NB! Enne järgmise ülesande juurde minemist võiks teha koopia praegusest skriptist, et teil oleks võimalik praegust olukorda taastada, kui hiljem kogemata skripti ära lõhute.
Uute ahelate loomine
Sellisel viisil IP-põhiste reeglite lisamine on tihti vajalik, aga mis juhtub, kui naabreid on väga palju? Suure arvu lubatud IP-aadresside ja protokollide korral kasvab iptables reeglite arv väga kiiresti. Kümne protokolli ja pordi avamine 10 naabri jaoks nõuaks meilt 100 filtreerimise reeglit.
Selliste olukordade lihtsustamiseks saab kasutada uusi filtreerimise ahelaid. Kasutaja poolt defineeritud iptables ahelaid võib käsitleda sarnaselt funktsioonide või meetodite kasutamisele programmeerimises. Nendesse saab kokku koguda kõik teatud olukorras vajalikud reeglid ning selle olukorra tekkimisel saab paketid sinna ahelasse suunata, kus neid reegleid siis rakendatakse. Iptables ahelate kohta saate lugeda iptables manuaalist või näiteks viidatud blogipostitusest.
Meie soovime teatud hulgale naabriarvutitele lubada SSH, ICMP, HTTP, HTTPS ja SMTP protokolle. Selleks saame me luua uue NAABRID ahela ning sinna panna kõik nende protokollidega seotud filtreerimise reeglid. Edaspidi, kui pakett tuli naabri IP-aadressilt, saame selle paketi lihtsalt suunata sinna ahelasse (sarnaselt funktsiooni välja kutsumisega programmeerimises).
Modifitseerige iptables skripti nii, et koondada naabrite grupi jaoks mõeldud reeglid eraldi ühisesse NAABRID ahelasse, ning suunake kõik naabrite IP-aadressilt saabuvad paketid sinna ahelasse.
Järgmine reegel loob uue naabrite ahela (paigutage see skripti algusesse peale iptables -F
rida):
iptables -N naabrid
Lisage skripti algusesse peale iptables -F
rida ja enne eelnevat uuesti loomist ka reegel, mis eemaldab süsteemist naabrid
ahela, et teie skript saaks selle uuesti luua. See on vajalik, sest iptables -F
ei eemalda süsteemist naabrite ahelat ja kui teie skript üritaks seda uuesti luua siis saaksite igakord käivitamisel veateate (nüüd ainult skripti esimesel käivitamisel, et naabrid
nimeline ahel ei eksisteeri).
iptables -X naabrid
Liigutage kõik naabritele kehtivad reeglid (SSH, ICMP, HTTP, HTTPS ja SMTP) NAARBID ahelasse ning lisage ahela lõppu reegel, mis suunab paketid tagasi eelmisesse ahelasse (-j RETURN
abil):
iptables -A naabrid ... iptables -A naabrid ... iptables -A naabrid ... iptables -A naabrid ... iptables -A naabrid -j RETURN
Seejärel lisage INPUT ahelasse filtreerimise reeglid naabrite arvutitest pärit (IP järgi) pakettide suunamiseks NAABRID ahelasse:
iptables -A INPUT -s 192.168.XX.ZZZ,192.168.YY.XYZ -j naabrid
Lisage logimise reegel, mis logib kõik naabrite ahelasse saabunud paketid nii, et logimise teade oleks kujul: "Perenimi-NAABRID-ahel"
, kus siis "Perenimi" on asendatud teie nimega. NB! maksimaalne lubatud --log-prefix
parameetri väärtus on kuni 29 tähemärki, seega kui teil on väga pikk perenimi lühendage nime või sõnumit.
Tulemus võiks iptables
väljundis välja näha näiteks selline (ei pea olema täpselt sama, see on näidis vihjeteks ja enesekontrolliks).
NB! Testige kindlasti üle, et loodud skript töötab korrektselt. Ärge unustage, et iptables
kontrollib reegleid järjestikku, seega reeglite järjekord skriptis on väga oluline.
Kontrollige, et lubatud arvuti IP-lt saab teie masinat pingida ning SSH kaudu sisse logida ja
"valelt" IP-lt ei saa (modifitseerige varasemalt lubatud arvuti IP skriptis "valeks" ja proovige uuesti). Testimiseks kasutage kloon virtuaalmasinat.
Iseseisev ülesanne
- Praktikumist arvestuse saamiseks esitage:
Arvestus 1: Esitage oma skript.sh
tekstilisel kujul, mis sisaldab naabrite jaoks ühise ahela kasutamist ja vastab järgmistele nõuetele:
- INPUT ahel peab sisaldama lokaalsete ühenduste (-i lo) ning varasemalt juba lubatud ühenduste (-state ESTABLISHED,RELATED) reegleid.
- INPUT ahelas peavad olema reeglid naabrite ahelasse IP'de järgi suunamiseks.
- Naabrite ahelas peavad olema reeglid
ICMP
,SSH
,HTTP
,HTTPS
jaSMTP
lubamise kohta. - Skriptis peab olema logimise reegel, mis logib kõik naabrite ahelasse saabunud paketid nii, et logimise teade oleks kujul:
"Perenimi-NAABRID-ahel"
, kus siis "Perenimi" on asendatud teie nimega. NB! maksimaalne lubatud --log-prefix parameetri väärtus on kuni 29 tähemärki, seega kui teil on väga pikk perenimi lühendage nime või sõnumit. - Kõik teised ühendused/paketid peavad olema keelatud.
- Kui teil testimise käigus selgub et mõni port on puudu siis pordi
25
saate kui teete käsud:sudo apt remove postfix
,sudo apt purge postfix
,sudo apt install postfix
(valige vaikeväärtused paigaldades). Linuxisapt remove
eemaldab programmi binaarid aga mitte konfiguratsioonifailid.purge
eemaldab lisaks ka konfiguratsioonifailid, pärast mida saab programmi uuesti paigaldada. Pordid80
ja443
on apache veebiserveri teenindada, kui teil need pordid puudu on proovige apache veebiserver uuesti käima panna.
- NB! Testige kindlasti, et skript töötab. Selgelt vigase ja testimata skripti esitamise eest on tulemuseks 0 punkti!
Arvestus 2: Tehke ekraanitõmmis oma skripti testimise tõestuseks nii, et kahes kõrvutiolevas terminaliaknas oleks näha tegevused nii nagu need on järgnevas tabelis kirjeldatud.
Vasak terminaliaken | Parem terminaliaken |
---|---|
Andmeturve Linux Mint | Esialgu Andmeturve Linux Mint hiljem kloon virtuaalmasin |
teie IP-aadress käsuga hostname -I | |
käsk, mis eemaldab olemasolevad iptables reeglid sudo iptables -F | |
uurige millised pordid on kuulamas teie masinas sudo nmap -sV -O localhost | |
käivitage enda iptables skript sudo sh skript.sh | |
tehke ssh ühendus naabri ahelas olevasse IP-ga kloon virtuaalmasinasse X ssh kasutaja@kloon-VM-IP | |
kasutage nmap-i, et skaneerida arvutist X enda IP-ga seotud porte sudo nmap enda-ip-aadress | |
logige naabri ahela arvutist välja exit | |
Modifitseerige nano skript.sh käsuga tulemüüri seadistust nii, et klooni IP ei oleks naabrite ahelas | |
käivitage enda iptables skript sudo sh skript.sh uuesti | |
Kirjuta terminali käsureale enda eesnimi ja perenimi käsuga echo "Eesnimi Perenimi" | |
tehke ssh ühendus kloon virtuaalmasinasse, mis seekord pole naabrite ahelas ssh kasutaja@kloon-VM-IP | |
kasutage nmap-i, et skaneerida kloonist enda IP-ga seotud porte sudo nmap enda-ip-aadres | |
logige kloonist välja exit |
Ekraanipilt väiks välja näha midagi sellist:
IPv6 ja turvalisus
Käesolevas ja varasemates praktikumides oleme keskendunud peamiselt IPv4 võrguühenduse näidetele ja turvalisusele. Samas IPv6 on juba aastaid kasutusel ja enamik kaasaegseid operatsioonisüsteeme toetab IPv6. Enda valmisolekut IPv6 kasutamiseks saad mugavalt testida lehel http://test-ipv6.com . Õppejõul näiteks Windows põhiarvuti toetas kenasti IPv6 ühendust ja ühendusi, kuid Virtualbox virtuaalmasinad kasutavad enamasti IPv4 aadresse. Uuemad Virtualboxid on võimelised juba kasutama ka IPv6 aadresse. Kuigi IPv6 on iga päevaga järjest populaarsem on IPv6 veel siiski "uus" asi paljude jaoks ja isegi Interneti avarustest oli suhteliselt raske leida head kvaliteetset IPv6 turvalisust tutvustavat video. Samas väga paljud pahalased kasutavad viimastel aastatel just inimeste (k.a. IT-spetsialistide) vähest teadlikkust IPv6-st rünneteks ära.
Esimene video tutvustab pfsense (vabavaraline tulemüüri ja ruuteri tarkvara) näitel kuidas IPv6 kodustes tingimustes testida saab:
Teine video keskendub juba täpsemalt IPv6 turvanüannsidele, kuid eeldab osalejatelt varasemaid teadmisi IPv6 võrgundusest:
Lisalugemine:
- IPv6 Security Guide: Do you Have a Blindspot? https://www.varonis.com/blog/ipv6-security/
- Teadusartikkel: IPV4/IPV6 security and threat comparisons https://www.sciencedirect.com/science/article/pii/S187704281000902X
- IPv6 protokolli tutvustav tekst: https://www.geeksforgeeks.org/what-is-ipv6/
- Ka IPv6 üldse kunagi asendab IPv4 ? https://www.networkworld.com/article/3254575/what-is-ipv6-and-why-aren-t-we-there-yet.html
Vabatahtlik IPv6 lisamaterjal (tudengite saadetud soovitaslik IPv6 lingid):
- Cisco IPv6 Security: https://www.cisco.com/c/dam/global/en_sg/training-events/advantage_now/assets/pdfs/ipv6__security__ericvyncke.pdf
- See on hea kokkuvõtlik materjal Cisco ja NetAcadi võrgutehnoloogia tasulisest kursusest. Nagu agendas märgitud räägitakse algul IPv4 ja IPv6 ühistest murekohtadest ning siis minnakse edasi IPv6 turvalisusele. Materjalist saab ka sissejuhatuse IPv6-le ning räägib, miks see vajalik ja selle võimalustest.
- Cisco IPv6 Security Best Practices: https://www.cisco.com/web/SG/learning/ipv6_seminar/files/02Eric_Vyncke_Security_Best_Practices.pdf
- See on sisuliselt sama asi, mis eelnev materjal, kuid natuke põgusam teemade osas.
- Cisco Advanced IPv6 Security Threats and Mitigation slaidid: https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2020/pdf/BRKSEC-3200.pdf
- Video samal teemal - Advanced IPv6 Security Threats and Mitigation - BRKSEC 3200:
- Artiklis kirjeldatakse paljusid üldtuntud IPv4 ohte ning võrreldakse kuidas need või sarnased ohud võivad IPv6 võrku mõjutada. Lisaks on artiklis välja toodud ka uued IPv6-le omased ohud.
- Materjali algul tutvustatakse lühidalt ka teema tausta: räägitakse sellest, miks IPv6 üldse vajalik on; räägitakse, kuidas toimub üleminek IPv4-lt IPv6-le ning ka sellest, mida IPv6 endast üldse kujutab. Sissejuhatus on kompaktne, kuid ülevaatlik. Peale seda on ülevaatlikult tutvustatud erinevaid nõrkuseid ning võimalikke ründeid, mida IPv6 võimaldab. Kirjeldused ei ole liiga mahukad ega detailseid, kuid annavad siiski hea ülevaate. Lõpus on ka mainitud viise, mida saab nõrkuste kaitseks teha.
- IPv6 kommunikatsioonijuht kirjutab 30 leheküljel, mis on IPv6 võimalused ja turvalisuse eelised.
Pärast videode ja materjalidega tutvumist vasta interneti abiga järgmistele küsimustele.
PS! ChatGPT
kasutamine on lubatud vastamiseks, kuid vastused peavad olema teie poolt verifitseeritud ehk eesti keele lausestuse vead parandatud ja info kontrollitud teiste allikatega. (Näiteks minule andis chatGPT esimese küsimuse vastuseks "Aadressiruumi üleküllastamine (Address Space Exhaustion): IPv6 aadressiruum on märkimisväärselt suurem kui IPv4 aadressiruum, võimaldades ründajal saata väga suure hulga sõnumeid, mis põhjustab aadressiruumi üleküllastamist ja võib lõppkokkuvõttes põhjustada teenuste katkemist või kokkuvarisemist.", mille loeksime valeks vastuseks, sest on segane ja ebatäpne. Näidisvastus sisaldab õigeid märksõnu ja termineid, aga ChatGPT on põhjus-tagajärg seosed segamini ajanud.)
- Millised 3 uut rünnakut teeb IPv6 tehnoloogia võimalikuks võrreldes "IPv4 only" võrguga? (0.3p)
- IPv6 ei kasuta ARP tehnoloogiat IP-aadresside jagamiseks, seega ei saa teha ka ARP spoof rünnet (praktikum8). Mis nime kannab teie arvates ARP spoofile sarnane rünne IPv6 aadressiruumis? Põhjenda paari lausega (lisa viide millisele veebilehele/videole pärineb sinu vastus). (0.2p)
- Linux ja MacOS tulevad vaikimisi "avatud" või mitteaktiivse tulemüüriga võrreldes Microsoft Windows'iga, kus tulemüür on vaikimisi seadistatud "sissetulevatele ühendustele" (Enabled on incoming traffing). Leidke Internetist põhjendus ja kirjutage enda sõnadega paari lausega eesti keeles: Miks Linux ja MacOS on otsustanud vaikimisi tulemüüri mitte aktiviseerida sissetulevatele ühendustele võrreldes Windowsiga, kus tulemüür on vaikimisi aktiivne sissetulevatele ühendustele? (0.2p)
- Koostage ja esitage IPv6 tulemüüri seadistamise skript, mis lubab kõik ühendused kohalikust masinast, vastus paketid (
ESTABLISHED, RELATED
) ja ühendused veebiserverile ligipääsuks (pordid80
ja443
). Kõik ülejäänud sissetulevad ühendused keelakeDROP
. Väljuvaid ühendusi pole vaja filtreerida. (0.3p)
Boonus: Kui leiate Internetist vabalt kättesaadava (tasuta ja ei vaja sisselogimist) video või iseseisva lugemise IPv6 turvalisuse kohta, mida teie arvates võiks ülesande kirjelduses kasutada meie näidete asemele saatke link ja lühike kirjeldus materjali sisu kohta alo.peets@ut.ee ja võite teenida boonuspunkte.
Esitada Praktikum10:
Praktikumi ülesande lahendamine annab neli punkti ja esitamiseks on kaks nädalat alates praktikumi toimumisajast.
- Ülesanne 1: Esitage praktikumi juhendis kirjeldatud nõuetele vastav
skript.sh
tekstilisel kujul, mis sisaldab naabrite jaoks ühise ahela kasutamist. - 1p - Ülesanne 2: Tehke
ekraanitõmmis
nii, et kahes kõrvutiolevas terminaliaknas oleks näha tegevused nii nagu need on juhendis kirjeldatud (vt näidispilti ja kirjeldust). - 2p - Ülesanne 3: Õppevideode (või muu interneti materjali) põhjal vasta järgmistele
kontrollküsimustele
IPv6 ja tulemüüri kohta. - 1p
Otselink Moddle keskkonda esitamiseks: https://moodle.ut.ee/mod/assign/view.php?id=1276012
Vabatahtlik lisaülesanne - Väljuvate ühenduste piiramine
Kui te soovite piirata mingi kindla arvuti kasutaja pakette, siis saab kasutada sellist reeglit:
iptables -A OUTPUT -m state --state NEW -m owner --uid-owner=kasutaja -j DROP
Tekitage reeglid, et "kasutaja" saaks ainult veebi sirvida. (Millised erinevad võimalused selleks on? Nende puudused?)
NB! Veebisirvimise jaoks on vajalik ka nimelahenduse (DNS) lubamine - UDP port 53. Vaadake erinevate teenuste pordinumbreid failist /etc/services
Praktiline lisainfo - Tulemüüri seadistamine üle võrgu.
Praktikas tuleb tihti tulemüüri konfigureerida üle võrgu. Et vältida sellises olukorras kogemata enda süsteemist väljalukustamist (nagu ülevalolev käsk teeb), on mõistlik enne sellise reegli sisestamist paika panna varuvariant, mis eelneva olukorra automaatselt taastab.
Näiteks võib tekitada endale käivitatava skripti, sisuga iptables -F
, mis kõik olemas olevad iptables reeglid kustutab ning siis käivitada see viitega:
# at -f /täis/tee/skriptini.sh now+10 minutes
Sel juhul kui te ennast kogemata süsteemist välja lukustate, taastatakse esialgne olukord automaatselt 10 minuti möödudes.
Praktikumi masinates käsku at
ei ole, aga vastava paketi võib sinna paigaldada:
sudo apt install at
Lisainfo...
- iptables diagramm