Skip to content

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 ufw za 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.

1. Preglej, kateri servisi trenutno poslušajo

Kaj narediš

Na strežniku naredi inventuro odprtih portov.

Ukazi

ss -tulpen
Mikro razlaga ukazov

Ukaz 1: ss -tulpen

  • Razčlenitev sintakse:
  • Ukaz ss -tulpen izvedi 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

sudo apt update
sudo apt upgrade -y
Mikro razlaga ukazov

Ukaz 1: sudo apt update

  • Razčlenitev sintakse:
  • sudo ukaz izvede z administratorskimi pravicami.
  • apt je upravljalnik paketov na Debian/Ubuntu sistemih.
  • update ne 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:
  • upgrade posodobi že nameščene pakete na novejše različice.
  • -y samodejno 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

sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
Mikro razlaga ukazov

Ukaz 1: sudo apt install ufw -y

  • Razčlenitev sintakse:
  • install namesti navedene pakete: ufw.
  • -y samodejno 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 systemd in 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: ali failed.

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

sudo ufw enable
sudo ufw status numbered
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

sudo nano /etc/ssh/sshd_config
sudo systemctl restart ssh
Mikro razlaga ukazov

Ukaz 1: sudo nano /etc/ssh/sshd_config

  • Razčlenitev sintakse:
  • nano odpre 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:
  • restart ustavi in ponovno zažene enoto ssh. 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

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3

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

sudo journalctl -u ssh --since "10 minutes ago"
sudo ufw status verbose
Mikro razlaga ukazov

Ukaz 1: sudo journalctl -u ssh --since "10 minutes ago"

  • Razčlenitev sintakse:
  • journalctl bere sistemske dnevnike.
  • -u ssh filtrira zapise za enoto ssh.
  • --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
  1. Kaj je napadalna površina?
  2. Zakaj je politika deny incoming smiselna?
  3. Zakaj “deluje” še ne pomeni “varno deluje”?
  4. 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.