Poglavje 3 · 3.4
Požarni zid z ufw (ali nftables)
V omrežju WebOké je ves dohodni promet do Vašega VPS odprt. Kaj pride noter, določite sami s požarnim zidom na svojem strežniku. Z njim dovolite le to, kar je potrebno, na primer SSH in Vašo spletno stran.
Pozor: Preden vklopite požarni zid, odprite SSH. Če tega ne storite, se zaklenete ven. Če se to vseeno zgodi, požarni zid izklopite prek konzole (glejte Zaklenjeni ste: do svojega strežnika ne morete več dostopati).
ufw na Debianu in Ubuntuju
ufw je preprosta plast nad požarnim zidom Linuxa. Na Ubuntuju je že nameščen, na Debianu ga namestite:
anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw allow OpenSSH
anna@web1:~$ sudo ufw allow 80,443/tcp
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
anna@web1:~$ sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (v6) ALLOW IN Anywhere (v6)
Vse, česar ne dovolite, je zavrnjeno. Pravila samodejno veljajo tudi za IPv6. Vrata 80 in 443 potrebujete le za spletno stran (5. poglavje). Če uporabljate Caddy s HTTP/3, odprite tudi sudo ufw allow 443/udp.
Uporabni ukazi ufw
| Ukaz | Kaj naredi? |
|---|---|
sudo ufw status numbered | Pravila s številko |
sudo ufw delete 3 | Odstrani pravilo 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Odpre vrata samo za en naslov IP |
sudo ufw limit OpenSSH | Začasno zavrne naslov, ki v 30 sekundah vzpostavi 6 ali več povezav |
sudo ufw disable | Izklopi požarni zid (na primer prek konzole, če ste se zaklenili ven) |
Brez ufw: nftables
Na Debianu je nftables požarni zid v ozadju. Če ufw ne želite, pravila zapišete sami v /etc/nftables.conf. Majhna osnova za IPv4 in IPv6 skupaj:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 80, 443 } accept
}
}
anna@web1:~$ sudo nft -c -f /etc/nftables.conf
anna@web1:~$ sudo systemctl enable --now nftables
Z nft -c datoteko najprej preverite. Uporabljajte ufw ali nftables, ne obeh hkrati.
Na AlmaLinux in Rocky Linux je firewalld že nameščen: sudo firewall-cmd --permanent --add-service=http --add-service=https in sudo firewall-cmd --reload. SSH je tam privzeto odprt.
Nasvet: Uporabljate Docker? Vrata, ki jih objavite z Dockerjem, gredo mimo ufw. Zato preberite Docker in požarni zid: varna objava vrat.
