Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Vatrozid s ufw i nftables

Modul 5: Zaštita mreže · Vrijeme čitanja: 12 minuta

Cilj učenja: Nakon ove lekcije moći ćete postaviti vatrozid koji propušta samo ono što je potrebno, za IPv4 i za IPv6, a da sami sebi ne zaključate pristup. Znat ćete i od čega Vas vatrozid na poslužitelju ne štiti.

Ključni pojmovi: filtar paketa, netfilter, nftables, iptables-nft, ufw, zadana pravila, allow, deny, reject, limit, IPv6 u ufw-u, vatrozid pružatelja usluge, firewalld, Docker i vatrozid

Što radi vatrozid

Vatrozid na Vašem poslužitelju je filtar paketa: za svaki dolazni mrežni paket provjerava popis pravila i odlučuje smije li paket proći. U Linuxu se taj filtar nalazi u jezgri i zove se netfilter. Postavljate ga pomoću programa:

  • nftables (naredba nft) je današnji alat. Debian ga standardno koristi od verzije Debian 10.
  • iptables je stari alat. Na modernim sustavima iptables je obično samo prijevod na nftables (iptables-nft), tako da stare upute i dalje rade.
  • ufw (Uncomplicated Firewall) je jednostavan sloj iznad toga, standardno prisutan na Ubuntuu i jednom naredbom instaliran na Debianu. Za jedan poslužitelj ufw je najjednostavniji izbor. Ova lekcija koristi ufw, a zatim pokazuje kako ista pravila izgledaju u nftablesu.

Vatrozid je Vaš drugi sloj obrane. Prvi je da servisi slušaju samo na ispravnoj adresi (lekcija 5.1). Zajedno osiguravaju da pogreška u jednom sloju ne postane odmah otvorena vrata.

Najprije: kako ćete se vratiti ako nešto pođe po zlu?

Klasična pogreška: uključite vatrozid, zaboravite propustiti SSH i veza se prekine. Tada više ne možete pristupiti putem SSH-a. Prije nego što počnete:

  1. Provjerite kako se otvara konzola Vašeg pružatelja usluge (lekcija 1.2). Ona radi mimo mreže, dakle i kada vatrozid sve zatvori. Ondje se prijavite i upišite ufw disable.
  2. Ako niste sigurni, izradite snimku stanja (snapshot).
  3. Ostavite trenutačnu SSH sesiju otvorenom i testirajte s drugom sesijom.

ufw u pet koraka

Korak 1: instalacija i odabir zadanih pravila.

anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw default deny incoming
Default incoming policy changed to 'deny'
anna@web1:~$ sudo ufw default allow outgoing
Default outgoing policy changed to 'allow'

Zadana pravila vrijede za sve za što ne postoji posebno pravilo. "Deny incoming" znači: sve što dolazi je zabranjeno, osim onoga što u nastavku dopustite. To je jedina sigurna osnova. Odlazni promet (Vaš poslužitelj koji preuzima ažuriranja) dopuštate.

Korak 2: propustite SSH prije nego što uključite vatrozid.

anna@web1:~$ sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)

OpenSSH je aplikacijski profil koji ufw poznaje (odgovara priključku 22/tcp). Ako SSH radi na drugom priključku, upotrijebite broj: sudo ufw allow 2222/tcp. Obratite pozornost na "Rules updated (v6)": ufw izrađuje pravilo i za IPv6. To radi zato što u /etc/default/ufw stoji redak IPV6=yes, što je zadana postavka. Svakako to provjerite: ako je postavljeno na no, Vaš vatrozid vrijedi samo za IPv4.

Korak 3: ostalo što Vam treba.

anna@web1:~$ sudo ufw allow 80/tcp
anna@web1:~$ sudo ufw allow 443/tcp
anna@web1:~$ sudo ufw allow 443/udp       # samo ako koristite HTTP/3

Pravilo možete ograničiti na jednu izvornu adresu, na primjer za administracijski priključak kojem se smije pristupati samo iz Vašeg ureda:

anna@web1:~$ sudo ufw allow from 198.51.100.20 to any port 9090 proto tcp

Korak 4: uključivanje.

anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Korak 5: provjera. Otvorite drugi prozor i ponovno se prijavite. Ako to uspije, SSH je ispravno postavljen. Zatim pregledajte pravila:

anna@web1:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)

Pravilo se uklanja pomoću brojeva: sudo ufw status numbered, a zatim sudo ufw delete 3.

deny, reject i limit

  • deny tiho odbacuje paket: izvana se vidi "filtrirano" (lekcija 5.1).
  • reject šalje natrag odbijanje: izvana se vidi "zatvoreno". To je urednije za Vaše vlastite servise, ali otkriva da poslužitelj postoji.
  • limit propušta vezu, ali blokira adresu koja unutar 30 sekundi pokuša uspostaviti vezu šest ili više puta. Korisno za SSH: sudo ufw limit OpenSSH umjesto allow. Metoda je gruba (broji veze, a ne neuspjele prijave); fail2ban (lekcija 5.3) je precizniji.

Ista pravila u nftablesu

ufw u pozadini zapisuje pravila za netfilter. Ako želite raditi bez ufw-a, sami pišete datoteku za nftables. Na Debianu se nalazi u /etc/nftables.conf, a učitavate je servisom nftables:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        ct state invalid drop
        iif "lo" accept
        meta l4proto { icmp, ipv6-icmp } accept
        tcp dport { 22, 80, 443 } accept
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Čitajte je ovako. Tablica se zove filter i pripada obitelji inet: jedna tablica za IPv4 i IPv6 istodobno, tako da IPv6 ne možete zaboraviti. U lancu input zadano pravilo je drop. Zatim: odgovori na već postojeće veze smiju se vratiti (established,related), sve na loopbacku je dopušteno, ICMP je dopušten (potreban je, među ostalim, za IPv6 i za poruke o pogreškama u veličini paketa), a dopušteni su i priključci 22, 80 i 443.

anna@web1:~$ sudo nft -c -f /etc/nftables.conf    # provjera bez učitavanja
anna@web1:~$ sudo systemctl enable --now nftables
anna@web1:~$ sudo nft list ruleset

Koristite ili ufw ili vlastitu datoteku za nftables, ne oboje: oba zapisuju u isti netfilter i mogu jedno drugome smetati u pravilima.

Od čega Vas vatrozid ne štiti

  • Servisi koje sami propustite. Priključak 443 otvoren je za Vašu web-stranicu; ranjivost u Vašoj web-stranici stoga je i dalje dostupna. Vatrozid štiti samo priključke koji su zatvoreni.
  • Docker. Kada pomoću Dockera objavite priključak (-p 5432:5432), Docker postavlja vlastita pravila za netfilter koja preusmjeravaju promet prije nego što se primijene pravila ufw-a. Dokumentacija Dockera doslovno navodi da Docker i ufw ne idu dobro zajedno. Priključak kontejnera tako može biti otvoren izvana, a da ga ufw status ne prikazuje. Rješenje (objava na 127.0.0.1) naučit ćete u lekciji 9.3.
  • Odlazni promet. Uz "allow outgoing" hakirani program može slati podatke bilo kamo. Za većinu malih poslužitelja to je prihvatljiv izbor; strogo zaštićena okruženja ograničavaju i odlazni promet.

Vatrozid Vašeg pružatelja usluge

Mnogi pružatelji usluga imaju i vatrozid u mreži, ispred Vašeg poslužitelja, koji postavljate u korisničkom sučelju (ponekad se zove "cloud firewall" ili "security group"). To je odličan dodatni sloj, a radi i ako na samom poslužitelju nešto pogrešno postavite. Ali on ne zamjenjuje vatrozid na poslužitelju: ako preselite poslužitelj ili promijenite pružatelja usluge, on ne ide s Vama, a ne nudi ga ni svaki pružatelj usluge. Zato uvijek zadržite vatrozid na samom poslužitelju.

Na AlmaLinuxu i Rocky Linuxu

Ondje je firewalld standardno uključen, sa zonama. Najvažnije naredbe:

[root@web1 ~]# firewall-cmd --list-all
[root@web1 ~]# firewall-cmd --permanent --add-service=http --add-service=https
[root@web1 ~]# firewall-cmd --reload

Bez --permanent promjena vrijedi samo do sljedećeg ponovnog pokretanja; s --permanent vrijedi tek nakon --reload. SSH je u zadanoj zoni već otvoren.

U praksi

Ako ipak sami sebi zaključate pristup na VPS-u kod WebOké, na zaslonu VPS-a otvorite konzolu, prijavite se i isključite vatrozid (ufw disable) ili poništite posljednje pravilo. Kod drugih pružatelja usluga taj se izlaz u nuždi također zove konzola, VNC ili rescue. Saznajte gdje se nalazi taj gumb prije nego što Vam zatreba.

Sažetak

  • Vatrozid je Vaš drugi sloj nakon načela "slušaj samo gdje je potrebno"; nftables je alat u jezgri, a ufw jednostavan sloj iznad njega.
  • Počnite s default deny incoming, propustite SSH prije ufw enable, testirajte s drugom sesijom i upoznajte konzolu svog pružatelja usluge.
  • Provjerite pokriva li ufw i IPv6 (IPV6=yes); u nftablesu to odjednom rješava obitelj inet.
  • deny izvana daje "filtrirano", reject daje "zatvoreno"; limit usporava ponovljene pokušaje povezivanja.
  • Priključci Dockera zaobilaze ufw (lekcija 9.3); vatrozid Vašeg pružatelja usluge dodatni je sloj, a ne zamjena.

Kviz

1. Kojim redoslijedom prvi put uključujete ufw na poslužitelju na koji ste prijavljeni putem SSH-a?



2. Nakon ufw enable Vaša web-stranica više ne radi preko IPv4-a, ali SSH radi. Koji je najvjerojatniji uzrok?



3. Pomoću Dockera objavite priključak 5432 kontejnera s bazom podataka. ufw status ne prikazuje pravilo za 5432. Je li baza podataka dostupna izvana?



4. Zašto primjer za nftables koristi tablicu obitelji inet?



5. Vaš pružatelj usluge ima mrežni vatrozid u korisničkom sučelju. Trebate li tada još i vatrozid na poslužitelju?



Zadatak

Zadatak O5.2: Postavite svoj vatrozid. Na svom poslužitelju uključite vatrozid s ufw-om (ili nftablesom, ili firewalldom na AlmaLinuxu/Rockyju): standardno sve dolazno zatvoreno, SSH te ono što Vam stvarno još treba. Testirajte s drugom sesijom, provjerite je li IPv6 pokriven i izvana pomoću nc provjerite je li nedopušteni priključak zatvoren ili filtriran. Ispunite kontrolni popis i zalijepite svoj ufw status verbose (ili nft list ruleset); za svaki otvoreni priključak navedite čemu služi.

Zadatak O5.2: Postavite svoj vatrozid

Ovaj zadatak rješavate sami; nitko ga ne provjerava. Označite što ste napravili i označite zadatak kao završen.



Vaše kvačice i bilješke ostaju samo u ovom pregledniku; ne šaljemo ih nikamo. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak završili.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…