Hvad er UFW?
UFW er en kommandolinjegrænseflade til iptables, som er Linux-kernens pakkefiltreringsmotor. Du behøver ikke forstå iptables for at bruge UFW. Det er pointen.
Det er inkluderet i Ubuntu siden version 8.04 og er tilgængeligt på alle Debian-baserede distributioner: Debian, Raspberry Pi OS, Ubuntu Server. Pakken hedder ufw. Tjek om den er installeret:
sudo ufw version
# Bør returnere noget ala: ufw 0.36.1
Hvis den ikke er installeret:
sudo apt update && sudo apt install -y ufw
UFW er ikke aktiveret som standard. Kør sudo ufw status og du får sandsynligvis Status: inactive. Det ændrer vi.
sudo ufw allow ssh inden du kører sudo ufw enable. Springer du det over på en fjernserver, låser du dig selv ude og kan ikke komme ind igen uden fysisk adgang til maskinen.
Standard politik: afvis alt indgående
Udgangspunktet er to regler der dækker al trafik du ikke eksplicit åbner for:
sudo ufw default deny incoming # afvis alt indgående som standard
sudo ufw default allow outgoing # tillad alt udgående som standard
Disse to linjer er fundamentet. Alt hvad du tilføjer bagefter er undtagelser til den indgående regel.
Tillad SSH inden alt andet
Gør dette nu, inden du aktiverer firewallen:
# Kort form (bruger /etc/services til at slå port 22 op)
sudo ufw allow ssh
# Alternativt, eksplicit:
sudo ufw allow 22/tcp
Tillad de services du bruger
Åbn kun de porte du faktisk bruger. Eksempler:
# HTTP og HTTPS (webserver)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# DNS (Pi-hole eller AdGuard Home)
sudo ufw allow 53
# WireGuard VPN
sudo ufw allow 51820/udp
# AdGuard Home initial setup-port (kun nødvendig under opsætning)
sudo ufw allow 3000/tcp
Named profiles
UFW kan bruge navngivne profiler til kendte applikationer. Profilerne ligger i /etc/ufw/applications.d/. List hvad der er tilgængeligt:
sudo ufw app list
Åbn en profil:
sudo ufw allow "OpenSSH" # SSH via named profile
sudo ufw allow "Nginx Full" # HTTP + HTTPS via named profile
LAN-begrænsning: tillad kun fra dit lokale netværk
I stedet for at åbne en port for hele internettet, kan du begrænse adgangen til dit LAN-subnet. Det er god praksis for SSH, DNS og admin-interfaces:
# SSH kun fra 192.168.1.x
sudo ufw allow from 192.168.1.0/24 to any port 22
# DNS kun fra LAN
sudo ufw allow from 192.168.1.0/24 to any port 53
# Pi-hole admin (port 80) kun fra LAN
sudo ufw allow from 192.168.1.0/24 to any port 80
Tilpas 192.168.1.0/24 til dit faktiske subnet. Tjek dit subnet med ip route og se linjen der starter med dit LAN-interface (typisk eth0 eller wlan0).
Aktivér firewallen
Når dine regler er på plads:
sudo ufw enable
UFW spørger om bekræftelse. Svar y. Firewallen er nu aktiv og overlever genstart automatisk.
Tjek status og regler
sudo ufw status verbose
Output viser aktive regler, standardpolitikker og IPv6-status. verbose er mere informativt end blot status.
Fra en anden maskine på LAN kan du verificere med nmap:
nmap -p 22,53,80,443 [din-pi-ip]
Porte du har åbnet skal vises som open. Porte du ikke har åbnet skal vises som filtered.
Rate limiting på SSH
UFW kan begrænse SSH-forsøg: forbindelser der overskrider 6 forsøg pr. 30 sekunder fra samme IP blokeres midlertidigt. Én kommando:
sudo ufw limit ssh
Det er ikke en fuld erstatning for fail2ban, men det er langt bedre end ingen beskyttelse og kræver nul konfiguration.
Slet regler
Slet en regel med den præcise syntax du brugte til at tilføje den:
sudo ufw delete allow 80/tcp
Alternativt kan du slette via regelnummer:
sudo ufw status numbered # vis regler med numre
sudo ufw delete 3 # slet regel nummer 3
Logging
UFW kan logge blokeret trafik til /var/log/ufw.log:
sudo ufw logging on
Brug low, medium eller high for at styre mængden af log-output. on svarer til low. Overvåg loggen live:
sudo tail -f /var/log/ufw.log
IPv6
UFW understøtter IPv6. Tjek at IPV6=yes er sat i /etc/default/ufw. Det er standardindstillingen på nyere systemer, men værd at verificere:
grep IPV6 /etc/default/ufw
# Skal returnere: IPV6=yes
Når IPv6 er aktiveret, opretter UFW automatisk de tilsvarende IPv6-regler for de porte du åbner.
Komplet Pi-homelab eksempel
En Raspberry Pi der kører Pi-hole og SSH, tilgængeligt kun fra dit LAN. Fra bunden:
# Sæt standardpolitik
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH kun fra LAN (gør dette FØR enable)
sudo ufw allow from 192.168.1.0/24 to any port 22
# DNS fra LAN (Pi-hole/AdGuard)
sudo ufw allow from 192.168.1.0/24 to any port 53
# Pi-hole admin-interface fra LAN
sudo ufw allow from 192.168.1.0/24 to any port 80
# Rate limiting på SSH
sudo ufw limit ssh
# Logging
sudo ufw logging on
# Aktivér
sudo ufw enable
# Verificér
sudo ufw status verbose
sudo ufw delete allow 3000/tcp.
Hvad UFW ikke gør
UFW er et netværksfirewall-værktøj. Det er ikke et intrusion detection-system. Det inspicerer ikke pakkeindhold. Det ved ingenting om, om den trafik der passerer port 22 faktisk er SSH, eller om den er noget andet der bruger port 22.
Det beskytter dig ikke mod angreb fra maskiner på dit eget LAN. Har du LAN-regler åbne fra 192.168.1.0/24, kan alle på det netværk nå de porte.
Det erstatter ikke en VPN til fjernadgang. Skal du have sikker adgang til dit netværk udefra, er WireGuard det rette valg.
Kilder
- UFW – Ubuntu Community Documentation: officiel dokumentation med eksempler og avancerede use cases
- ufw(8) man page – Ubuntu Manpages: komplet kommandoreference for alle UFW-optioner
- Uncomplicated Firewall (ufw) – Debian Wiki: Debian-specifik opsætning og konfigurationsnuancer