Požarni zid
Učni list 7: Požarni zid in osnovno utrjevanje strežnika¶
Namen vaje¶
Tvoja naloga je, da razumeš, da delujoč servis še ni nujno varen servis, in se naučiš osnovnega omejevanja dostopa ter utrjevanja sistema.
Kako brati mikro razlage¶
- razčlenitev sintakse — kaj pomeni posamezni del ukaza
- kaj se zgodi po pritisku Enter — neposredna posledica v sistemu ali omrežju
- na kaj ukaz vpliva — datoteka, proces ali port
- kaj pričakuješ kot rezultat — konkretna kontrolna točka
Cilj je, da ne ostaneš na ravni prepisal sem ukaz, ampak prideš do ravni vem, zakaj sem ga izvedel in kaj moram po njem preveriti.
Cilji¶
- znaš uporabiti
ufwza osnovni požarni zid - znaš dovoliti samo potrebne porte
- znaš pregledati, kateri servisi poslušajo
- razumeš tveganja root prijave in šibkih nastavitev
- znaš uporabiti dnevnike pri diagnostiki varnostnih sprememb
Potrebna oprema in predznanje¶
- vsaj SSH že deluje
- razumeš pojem port in omrežni servis
Teorija v ozadju¶
Požarni zid filtrira promet. Ne odloča, ali je servis dober ali slab, ampak ali določena komunikacija sme skozi.
Utrjevanje strežnika pomeni zmanjševanje napadalne površine: manj odprtih portov, manj nepotrebnih servisov, manj privilegijev in več preverjanja logov.
Tipična napaka začetnikov je, da gledajo samo “ali deluje”. Dober sistemec pa doda še vprašanje “kdo vse lahko do tega dostopa in pod kakšnimi pogoji?”.
Na kaj je treba paziti¶
- Preden omogočiš
ufw, vedno dovoli SSH. Drugače si lahko sam prekineš dostop. - Utrjevanje ni en sam ukaz. Je miselni vzorec: odstrani nepotrebno, omeji potrebno, preveri posledice.
- Ne odpiraj “vsega za vsak slučaj”. To je točno nasprotje smiselnega požarnega zidu.
Kako brati to vajo
Vsak korak ima tri plasti: kaj narediš, kaj ukaz pomeni in kaj se v ozadju zgodi v sistemu ali omrežju. Cilj ni slepo kopiranje ukazov, ampak razumevanje, zakaj posamezni korak obstaja.
Navodila po korakih¶
1. Preglej, kateri servisi trenutno poslušajo¶
Kaj narediš
Na strežniku naredi inventuro odprtih portov.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: ss -tulpen
- Razčlenitev sintakse:
- Ukaz
ss -tulpenizvedi natančno tako, kot je zapisan, nato pa preveri učinek na storitev, datoteko ali mrežno povezavo. - Kaj se zgodi po pritisku Enter: Pregleduješ stanje mrežnih vtičnic v jedru. Tako preveriš, ali je storitev res odprla pričakovani port.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: V izpisu vidiš pričakovani port in pravilni proces, ki posluša promet.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Preden karkoli omejuješ, moraš vedeti, kaj sploh teče. To je osnovna administrativna disciplina.
Kaj se dogaja v ozadju
Vsak poslušajoči port pomeni neko storitev ali proces, ki je potencialno dosegljiv prek omrežja.
Kaj moraš opaziti
Prepoznaj znane servise: SSH (22), DNS (53), HTTP (80), FTP (21), IMAP (143), NFS (2049) ipd.
Če ne dela, preveri
- Če vidiš port, ki ga ne razumeš, ga ne ignoriraj — poskusi ugotoviti, kateri proces ga uporablja.
2. Posodobi sistemske pakete¶
Kaj narediš
Pred utrjevanjem poskrbi za osnovno higiensko posodobitev.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo apt update
- Razčlenitev sintakse:
sudoukaz izvede z administratorskimi pravicami.aptje upravljalnik paketov na Debian/Ubuntu sistemih.updatene namešča programov; samo osveži lokalni seznam paketov iz repozitorijev.- Kaj se zgodi po pritisku Enter: Sistem osveži lokalne informacije o paketih. Ni še spremembe storitev, ampak priprava na korektno namestitev ali posodobitev.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo apt upgrade -y
- Razčlenitev sintakse:
upgradeposodobi že nameščene pakete na novejše različice.-ysamodejno potrdi vprašanje za nadaljevanje.- Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Staro in luknjasto programsko opremo je težko “požarnozidati” v varnost. Posodobitve so osnova.
Kaj se dogaja v ozadju
Veliko napadov meri na znane ranljivosti, ki imajo popravek že mesece ali leta.
Kaj moraš opaziti
Sistem posodobi nameščene pakete.
Če ne dela, preveri
- Po večjih posodobitvah je včasih smiseln ponovni zagon.
3. Namesti in inicializiraj UFW¶
Kaj narediš
Uporabi ufw kot poenostavljen vmesnik za požarni zid.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo apt install ufw -y
- Razčlenitev sintakse:
installnamesti navedene pakete:ufw.-ysamodejno potrdi namestitev.- Kaj se zgodi po pritisku Enter: Na sistem se namesti nov paket oziroma storitev. Ob tem se pogosto ustvarijo konfiguracijske datoteke, sistemska enota
systemdin včasih se servis zažene že sam. - Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Paket se namesti brez napake, na koncu pa ni vrstice tipa
E:alifailed.
Ukaz 2: sudo ufw default deny incoming
- Razčlenitev sintakse:
- Nastavi privzeto politiko: vse dohodne povezave so zavrnjene, razen če jih izrecno dovoliš.
- Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 3: sudo ufw default allow outgoing
- Razčlenitev sintakse:
- Nastavi privzeto politiko: odhodne povezave so dovoljene.
- Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Privzeta politika “deny incoming” pomeni, da se vhodni promet blokira, razen če ga izrecno dovoliš. To je varnejša privzeta nastavitev kot “vse je odprto”.
Kaj se dogaja v ozadju
UFW v ozadju upravlja pravila jedrnega požarnega zidu (netfilter/nftables/iptables, odvisno od sistema).
Kaj moraš opaziti
Pravila so pripravljena, a požarni zid še ni nujno omogočen.
Če ne dela, preveri
- Še enkrat: ne omogočaj ga, preden ne dodaš vsaj SSH pravila.
4. Dovoli samo nujne porte za laboratorij¶
Kaj narediš
Dodaj pravila za storitve, ki jih želiš obdržati dostopne.
Ukazi
sudo ufw allow OpenSSH
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 67/udp
sudo ufw allow 80/tcp
sudo ufw allow 2049/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:40010/tcp
sudo ufw allow 25/tcp
sudo ufw allow 143/tcp
Mikro razlaga ukazov¶
Ukaz 1: sudo ufw allow OpenSSH
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
OpenSSH. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo ufw allow 53/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
53/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 3: sudo ufw allow 53/udp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
53/udp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 4: sudo ufw allow 67/udp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
67/udp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 5: sudo ufw allow 80/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
80/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 6: sudo ufw allow 2049/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
2049/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 7: sudo ufw allow 21/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
21/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 8: sudo ufw allow 40000:40010/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
40000:40010/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 9: sudo ufw allow 25/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
25/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 10: sudo ufw allow 143/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
143/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Odpreš točno tiste porte, ki jih uporabljajo tvoje storitve. Ne več in ne manj.
Kaj se dogaja v ozadju
Tako požarni zid dopolni servisno konfiguracijo. Servis lahko teče, a požarni zid odloči, ali je dosegljiv od zunaj.
Kaj moraš opaziti
Pravila so zabeležena v konfiguraciji UFW.
Če ne dela, preveri
- Če določene storitve v laboratoriju ne uporabljaš, njenega porta ne rabiš odpreti.
5. Omogoči požarni zid in preveri stanje¶
Kaj narediš
Šele zdaj vklopi UFW.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo ufw enable
- Razčlenitev sintakse:
- Vklopi požarni zid UFW. Od tega trenutka začnejo pravila dejansko veljati.
- Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Pravila so aktivna in vidiš dovoljene porte za servise, ki jih dejansko uporabljaš.
Ukaz 2: sudo ufw status numbered
- Razčlenitev sintakse:
- Prikaže trenutno aktivna pravila in jih oštevilči, kar je priročno pri kasnejšem brisanju ali diagnostiki.
- Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Pravila so aktivna in vidiš dovoljene porte za servise, ki jih dejansko uporabljaš.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Ko enkrat vidiš pravila, lahko smiselno presodiš, kaj je odprto. To je veliko bolje kot slep vklop.
Kaj se dogaja v ozadju
Ob aktivaciji začne jedro aktivno filtrirati promet po definiranih pravilih.
Kaj moraš opaziti
Status mora pokazati Status: active in seznam pravil.
Če ne dela, preveri
- Če po tem izgubiš SSH povezavo, si verjetno pozabil na OpenSSH pravilo. Uporabi konzolo VM in popravi stanje.
6. Utrdi SSH nastavitve¶
Kaj narediš
Preglej oziroma dopolni osnovne zaščitne nastavitve v SSH.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo nano /etc/ssh/sshd_config
- Razčlenitev sintakse:
nanoodpre besedilno datoteko v terminalskem urejevalniku.- Odpira se datoteka
/etc/ssh/sshd_config. Če datoteka še ne obstaja, jo boš ob shranjevanju ustvaril. - Kaj se zgodi po pritisku Enter: Sprememba se še ne zgodi v teku storitve. Najprej spremeniš datoteko na disku; učinek nastopi šele po restartu ali reloadu storitve.
- Na kaj ta ukaz vpliva:
- Datoteke:
/etc/ssh/sshd_config - Procesi/storitve:
ssh - Porti:
22/TCP - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo systemctl restart ssh
- Razčlenitev sintakse:
restartustavi in ponovno zažene enotossh. To je potrebno po spremembi konfiguracije.- Kaj se zgodi po pritisku Enter: Proces storitve ponovno prebere konfiguracijo. Če je konfiguracija napačna, se storitev lahko ne zažene ali ostane v stanju napake.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Primer konfiguracije
Kaj ta korak pomeni
S tem omejiš neposreden root dostop, prisiliš prijavo s ključi in zmanjšaš število poskusov prijave.
Kaj se dogaja v ozadju
To ni popolna zaščita, je pa zelo smiselna osnova za laboratorijski strežnik.
Kaj moraš opaziti
Po spremembi preveri, da prijava s ključem še vedno deluje.
Če ne dela, preveri
- Če ključi niso pripravljeni, še ne izklapljaj
PasswordAuthentication.
7. Preglej dnevnike po spremembah¶
Kaj narediš
Preveri UFW in SSH dogodke.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo journalctl -u ssh --since "10 minutes ago"
- Razčlenitev sintakse:
journalctlbere sistemske dnevnike.-u sshfiltrira zapise za enotossh.--since "10 minutes ago"pokaže samo novejše zapise od navedenega časa dalje.- Kaj se zgodi po pritisku Enter: Bereš dnevniške zapise, zato se stanje sistema ne spremeni. To je diagnostični korak.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo ufw status verbose
- Razčlenitev sintakse:
- Pokaže aktivna pravila, privzete politike in dodatne podrobnosti o delovanju požarnega zidu.
- Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Pravila so aktivna in vidiš dovoljene porte za servise, ki jih dejansko uporabljaš.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Ko nekaj “ne dela”, so dnevniki in statusni izpisi prvi vir resnice. Ne ugibaj, preverjaj.
Kaj se dogaja v ozadju
Varnostne spremembe so dobre samo, če jih znaš tudi razložiti in diagnosticirati.
Kaj moraš opaziti
Videti moraš, da SSH še deluje, UFW pa ima aktivna pravila.
Če ne dela, preveri
- Če dostop odpove le z enega klienta, preveri, ali težavo povzroča požarni zid, DNS ali dejanski servis.
Preverjanje delovanja¶
- [ ] znaš izpisati poslušajoče porte
- [ ] UFW je omogočen
- [ ] odprti so samo potrebni laboratorijski porti
- [ ] SSH root prijava je onemogočena
- [ ] razumeš razliko med servisom in filtriranjem prometa
Vprašanja za razmislek¶
- Kaj je napadalna površina?
- Zakaj je politika
deny incomingsmiselna? - Zakaj “deluje” še ne pomeni “varno deluje”?
- Zakaj je dobro omejiti root prijavo prek SSH?
Dodatni izziv¶
Začasno odstrani dostop do HTTP (port 80), preveri da spletna stran ni več dosegljiva, nato pravilo vrni nazaj. Razloži razliko med “servis ne teče” in “servis teče, a je blokiran”.
Mini povzetek¶
Po tej vaji moraš znati na kratko razložiti, kaj je vloga servisa požarni zid in osnovno utrjevanje strežnika v omrežju, kateri proces ali konfiguracija ga omogoča in kako ga preverimo s klienta.