Kapitel 3 · 3.4
En brandvägg med ufw (eller nftables)
I WebOkés nätverk är all inkommande trafik till din VPS öppen. Vad som släpps in bestämmer du själv med en brandvägg på din server. Med den tillåter du bara det som behövs, till exempel SSH och din webbplats.
Obs: Öppna SSH innan du slår på brandväggen. Gör du inte det låser du ute dig själv. Händer det ändå stänger du av brandväggen via konsolen (se Utelåst: du kommer inte längre in på din server).
ufw på Debian och Ubuntu
ufw är ett enkelt lager ovanpå Linux brandvägg. På Ubuntu finns det redan, på Debian installerar du det:
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)
Allt som du inte tillåter blockeras. Reglerna gäller automatiskt även för IPv6. Port 80 och 443 behöver du bara för en webbplats (kapitel 5). Använder du Caddy med HTTP/3 öppnar du även sudo ufw allow 443/udp.
Praktiska ufw-kommandon
| Kommando | Vad gör det? |
|---|---|
sudo ufw status numbered | Reglerna med nummer |
sudo ufw delete 3 | Ta bort regel 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Öppna en port för bara en IP-adress |
sudo ufw limit OpenSSH | Blockera tillfälligt en adress som startar 6 eller fler anslutningar inom 30 sekunder |
sudo ufw disable | Stänga av brandväggen (till exempel via konsolen om du är utelåst) |
Utan ufw: nftables
På Debian är nftables brandväggen under huven. Vill du inte använda ufw skriver du reglerna själv i /etc/nftables.conf. En liten grund för IPv4 och IPv6 tillsammans:
#!/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 kontrollerar du filen först. Använd ufw eller nftables, inte båda samtidigt.
På AlmaLinux och Rocky Linux finns firewalld redan: sudo firewall-cmd --permanent --add-service=http --add-service=https och sudo firewall-cmd --reload. SSH är öppet där som standard.
Tips: Använder du Docker? Portar som du publicerar med Docker går förbi ufw. Läs därför Docker och brandväggen: publicera portar säkert.
