Kapittel 3 · 3.4
En brannmur med ufw (eller nftables)
På nettverket til WebOké er all innkommende trafikk til VPS-en din åpen. Hva som slipper inn, bestemmer du selv med en brannmur på serveren. Med den tillater du bare det som trengs, for eksempel SSH og nettstedet ditt.
Merk: Åpne SSH før du slår på brannmuren. Gjør du ikke det, stenger du deg selv ute. Skjer det likevel, slår du av brannmuren via konsollen (se Utestengt: du kommer ikke lenger inn på serveren din).
ufw på Debian og Ubuntu
ufw er et enkelt lag oppå brannmuren i Linux. På Ubuntu er den allerede installert, på Debian installerer du den selv:
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 du ikke tillater, blir avvist. Reglene gjelder automatisk også for IPv6. Port 80 og 443 trenger du bare for et nettsted (kapittel 5). Bruker du Caddy med HTTP/3, åpner du også sudo ufw allow 443/udp.
Nyttige ufw-kommandoer
| Kommando | Hva gjør den? |
|---|---|
sudo ufw status numbered | Reglene med nummer |
sudo ufw delete 3 | Fjern regel 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Åpne en port bare for én IP-adresse |
sudo ufw limit OpenSSH | Avvis midlertidig en adresse som starter 6 eller flere tilkoblinger innen 30 sekunder |
sudo ufw disable | Slå av brannmuren (for eksempel via konsollen hvis du er stengt ute) |
Uten ufw: nftables
På Debian er nftables brannmuren under panseret. Vil du ikke bruke ufw, skriver du reglene selv i /etc/nftables.conf. Et lite grunnoppsett 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. Bruk ufw eller nftables, ikke begge samtidig.
På AlmaLinux og Rocky Linux er firewalld allerede installert: sudo firewall-cmd --permanent --add-service=http --add-service=https og sudo firewall-cmd --reload. SSH er åpent der som standard.
Tips: Bruker du Docker? Porter du publiserer med Docker, går forbi ufw. Les derfor Docker og brannmuren: publiser porter på en trygg måte.
