Kapitel 3 · 3.4
En firewall med ufw (eller nftables)
På WebOkés netværk er al indgående trafik til din VPS åben. Hvad der kommer ind, bestemmer du selv med en firewall på din server. Med den tillader du kun det, der er nødvendigt, som SSH og din hjemmeside.
Bemærk: Åbn for SSH, før du slår firewallen til. Gør du ikke det, låser du dig selv ude. Sker det alligevel, slår du firewallen fra via konsollen (se Låst ude: du kan ikke længere komme ind på din server).
ufw på Debian og Ubuntu
ufw er et enkelt lag oven på Linux' firewall. På Ubuntu er den allerede installeret, på Debian installerer du den:
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)
Alt, hvad du ikke tillader, bliver afvist. Reglerne gælder automatisk også for IPv6. Port 80 og 443 skal du kun bruge til en hjemmeside (kapitel 5). Bruger du Caddy med HTTP/3, skal du også åbne sudo ufw allow 443/udp.
Nyttige ufw-kommandoer
| Kommando | Hvad gør den? |
|---|---|
sudo ufw status numbered | Reglerne med et nummer |
sudo ufw delete 3 | Fjern regel 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Åbn en port kun for én IP-adresse |
sudo ufw limit OpenSSH | Afvis midlertidigt en adresse, der starter 6 eller flere forbindelser inden for 30 sekunder |
sudo ufw disable | Slå firewallen fra (for eksempel via konsollen, hvis du er låst ude) |
Uden ufw: nftables
På Debian er nftables firewallen under motorhjelmen. Vil du ikke bruge ufw, skriver du selv reglerne i /etc/nftables.conf. Et lille grundlag for IPv4 og IPv6 samlet:
#!/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
Med nft -c kontrollerer du filen først. Brug ufw eller nftables, ikke begge på samme tid.
På AlmaLinux og Rocky Linux er firewalld allerede installeret: sudo firewall-cmd --permanent --add-service=http --add-service=https og sudo firewall-cmd --reload. SSH er åben som standard dér.
Tip: Bruger du Docker? Porte, som du udgiver med Docker, går uden om ufw. Læs derfor Docker og firewallen: udgiv porte sikkert.
