Chapter 3 · 3.4
Een firewall met ufw (of nftables)
This article hasn't been translated yet. You're reading the Dutch version.
Op het netwerk van WebOké staat al het inkomende verkeer naar je VPS open. Wat er binnenkomt, bepaal je zelf met een firewall op je server. Daarmee laat je alleen toe wat nodig is, zoals SSH en je website.
Let op: Zet SSH open voordat je de firewall aanzet. Doe je dat niet, dan sluit je jezelf buiten. Gebeurt het toch, dan zet je de firewall uit via de console (zie Buitengesloten: je komt niet meer op je server).
ufw op Debian en Ubuntu
ufw is een eenvoudige laag boven de firewall van Linux. Op Ubuntu staat hij er al, op Debian installeer je hem:
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)
Alles wat je niet toestaat, wordt geweigerd. De regels gelden vanzelf ook voor IPv6. Poort 80 en 443 heb je alleen nodig voor een website (hoofdstuk 5). Gebruik je Caddy met HTTP/3, zet dan ook sudo ufw allow 443/udp open.
Handige ufw-commando's
| Commando | Wat doet het? |
|---|---|
sudo ufw status numbered | De regels met een nummer |
sudo ufw delete 3 | Regel 3 weghalen |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Een poort alleen voor één IP-adres openzetten |
sudo ufw limit OpenSSH | Een adres dat binnen 30 seconden 6 of meer verbindingen begint, tijdelijk weigeren |
sudo ufw disable | De firewall uitzetten (bijvoorbeeld via de console als je buitengesloten bent) |
Zonder ufw: nftables
Op Debian is nftables de firewall onder de motorkap. Wil je geen ufw, dan schrijf je de regels zelf in /etc/nftables.conf. Een kleine basis voor IPv4 en IPv6 samen:
#!/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
Met nft -c controleer je het bestand eerst. Gebruik ufw of nftables, niet allebei tegelijk.
Op AlmaLinux en Rocky Linux staat firewalld er al: sudo firewall-cmd --permanent --add-service=http --add-service=https en sudo firewall-cmd --reload. SSH staat daar standaard open.
Tip: Gebruik je Docker? Poorten die je met Docker publiceert, gaan langs ufw heen. Lees daarom Docker en de firewall: poorten veilig publiceren.
