Ga naar inhoud

UFW (Uncomplicated Firewall)

Achtergrondinformatie

  • UFW (Uncomplicated Firewall): ontwikkeld door Canonical (het bedrijf achter Ubuntu) als een eenvoudige interface bovenop iptables en tegenwoordig nftables.
    Het doel is om firewallbeheer voor systeembeheerders en eindgebruikers eenvoudiger te maken.

  • Firewall-functie: een firewall bepaalt welk netwerkverkeer wel of niet toegestaan wordt.
    UFW biedt een duidelijke syntax voor veelgebruikte taken zoals poorten openen/sluiten en services toestaan.

Alternatieven

  • firewalld (veel gebruikt op RHEL/CentOS/Fedora)
  • iptables/nftables (low-level, complexer, meer controle)

1. Controleren of UFW al aanwezig is

ufw version
# of
ufw --version
๐Ÿ“„ Voorbeeld output
 ufw 0.36.1
 Copyright 2008-2021 Canonical Ltd.

Handleiding

man ufw

2. Installatie

sudo apt update
sudo apt install -y ufw
Voorbeeld output
  Reading package lists... Done
  Building dependency tree       
  Reading state information... Done
  The following NEW packages will be installed:
    ufw
  0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
  Need to get 165 kB of archives.
  After this operation, 1,200 kB of additional disk space will be used.
  Selecting previously unselected package ufw.
  (Reading database ... 105000 files and directories currently installed.)
  Preparing to unpack .../archives/ufw_0.36-7.1_all.deb ...
  Unpacking ufw (0.36-7.1) ...
  Setting up ufw (0.36-7.1) ...
  Processing triggers for man-db (2.10.2-1) ...
  Processing triggers for systemd (249.11-0ubuntu3.6) ...

3. UFW beheren

Wanneer UFW is geรฏnstalleerd, moet de service geactiveerd en gestart worden zodat firewallregels toegepast worden. Hieronder zie je de belangrijkste commandoโ€™s en hun functie:

  • Commandoโ€™s

    sudo systemctl enable ufw
    
    - Zorgt ervoor dat UFW automatisch start bij het opstarten van het systeem.

    sudo systemctl start ufw
    
    - Start UFW direct, zodat je firewallregels meteen actief zijn.

    sudo systemctl status ufw
    
    - Controleert de huidige status van UFW en toont of deze actief draait.

  • Voorbeeld output

    systemctl enable ufw
    Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service โ†’ /lib/systemd/system/ufw.service.
    
    systemctl start ufw
    (geen directe output bij succes, de service wordt gewoon gestart)
    
    systemctl status ufw
    โ— ufw.service - Uncomplicated firewall
         Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
         Active: active (running) since Mon 2023-01-10 12:34:56 UTC; 10s ago
       Main PID: 2345 (ufw)
          Tasks: 1 (limit: 1111)
         Memory: 1.5M
         CGroup: /system.slice/ufw.service
                 โ””โ”€2345 /lib/ufw/ufw-init start quiet
    

4. UFW gebruiken

Met UFW kun je eenvoudig firewallregels beheren om toegang tot services, poorten of IP-adressen te regelen.

Toestaan of blokkeren van applicaties die in UFW zijn geregistreerd (bijv. OpenSSH, Apache, Nginx).

sudo ufw allow OpenSSH
sudo ufw deny Apache

Handig om te weten

Bekijk beschikbare applicatieprofielen met:

sudo ufw app list

Toestaan of blokkeren van verkeer op specifieke poorten.

sudo ufw allow 80/tcp
sudo ufw deny 25/tcp

Praktisch voorbeeld: - Poort 80 (HTTP) toestaan
- Poort 25 (SMTP) blokkeren

Beperk toegang per bron-IP-adres.

sudo ufw allow from 192.168.1.50
sudo ufw deny from 10.0.0.5

Voorbeeld: - Alleen 192.168.1.50 mag verbinden
- Verkeer van 10.0.0.5 wordt geblokkeerd

Stel de standaardregels in voor inkomend en uitgaand verkeer.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Uitleg: - deny incoming blokkeert standaard al het inkomende verkeer, tenzij expliciet toegestaan.
- allow outgoing laat standaard al het uitgaande verkeer toe.

Controleer de huidige status van UFW:

sudo ufw status

Voor meer details:

sudo ufw status verbose

Voorbeeld output
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
25/tcp                     DENY        Anywhere
Anywhere                   DENY        10.0.0.5
Anywhere                   ALLOW       192.168.1.50
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
25/tcp (v6)                DENY        Anywhere (v6)

Extra nuttige commandoโ€™s (UFW)

Toon alle regels met een nummer, handig voor verwijderen of wijzigen:

sudo ufw status numbered

Voorbeeld output

Status: active

     To                         Action      From
--                         ------      ----
[ 1] 22/tcp                     ALLOW       Anywhere
[ 2] 80/tcp                     ALLOW       Anywhere
[ 3] 25/tcp                     DENY        Anywhere

Verwijder een regel op basis van het nummer uit de lijst:

sudo ufw delete 3

Dit verwijdert regel 3 uit het overzicht.

Pas alle wijzigingen direct toe:

sudo ufw reload

Zet UFW tijdelijk uit:

sudo ufw disable

Herstel UFW naar de standaardinstellingen (alle regels worden verwijderd):

sudo ufw reset

Waarschuwing

Dit verwijdert alle bestaande firewallregels. Gebruik dit alleen als je helemaal opnieuw wilt beginnen.

Zet logging van UFW aan voor troubleshooting:

sudo ufw logging on

Controleer de logbestanden in:

/var/log/ufw.log

Als je niet wilt dat de server reageert op pings:

sudo ufw deny proto icmp from any to any

Logging en Debugging (UFW)

Wanneer je problemen hebt met UFW of firewall-regels die niet werken zoals verwacht, kan logging en debugging je helpen.

sudo ufw status verbose
Voorbeeld output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

Standaard staat logging vaak uit. Zet het aan met:

sudo ufw logging on

Niveaus zijn off, low, medium, high, en full:

sudo ufw logging high
Voorbeeld output
Logging enabled

De UFW-logs vind je hier:

sudo less /var/log/ufw.log

Of live meekijken:

sudo tail -f /var/log/ufw.log
Voorbeeld output
Aug 30 12:11:45 server kernel: [ 1234.567890] [UFW BLOCK] IN=eth0 OUT= MAC=aa:bb:cc:dd:ee:ff SRC=192.168.1.50 DST=192.168.1.10 LEN=60 ...

Omdat UFW gebruikmaakt van netfilter/iptables, logt het ook via systemd:

journalctl -u ufw -f

Om precies te zien welke regels actief zijn:

sudo iptables -L -v -n

Of inclusief pakket- en byte-tellingen:

sudo iptables -S
Waarom iptables?

UFW is een frontend voor iptables. Bij twijfel kun je altijd met iptables zien welke regels werkelijk geladen zijn.


Configuratiebestanden (UFW)

Het hoofdconfiguratiebestand van UFW.
Hier stel je o.a. in: - Of UFW bij het opstarten automatisch geactiveerd moet worden (ENABLED=yes/no) - Basisinstellingen voor logging en firewallstatus

Handige check

Als je wijzigingen maakt, zorg dat je UFW herlaadt:

sudo ufw reload

Hier vind je de standaard UFW-instellingen.
Bijvoorbeeld: - Standaardbeleid voor inkomend verkeer (DEFAULT_INPUT_POLICY) - Standaardbeleid voor uitgaand verkeer (DEFAULT_OUTPUT_POLICY) - IPV6-ondersteuning (IPV6=yes/no)

Bevat configuratiebestanden voor toepassingsprofielen.
Deze profielen maken het makkelijker om verkeer toe te staan of te blokkeren per applicatie.
Voorbeelden: - OpenSSH - Apache - Nginx

Gebruikbare commandoโ€™s:

sudo ufw app list
sudo ufw allow "Nginx Full"

Het logbestand waarin alle firewallacties van UFW worden geregistreerd.
Hier zie je o.a. welke verbindingen zijn toegestaan of geblokkeerd.

Voorbeeld output
Aug 25 10:22:41 server kernel: [12345.678901] [UFW BLOCK] IN=eth0 OUT= MAC=...
SRC=192.168.1.20 DST=192.168.1.10 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=54321 ...

UFW volledig verwijderen (Debian/Ubuntu)

Ja, het is technisch mogelijk om UFW (Uncomplicated Firewall) volledig te verwijderen,
maar dit wordt alleen aangeraden als je een alternatief firewall-systeem gebruikt (bijv. iptables of nftables)
of helemaal geen firewall nodig hebt (alleen in een testomgeving).

Als je UFW verwijdert zonder alternatief, kan je server onbeveiligd worden.

Verwijder het pakket

sudo apt purge --auto-remove ufw

Verwijder configuratiebestanden

sudo rm -rf /etc/ufw/
sudo rm -rf ~/.ufw/

Verwijder logbestanden

sudo rm -f /var/log/ufw.log*

Let op

Het verwijderen van UFW kan leiden tot een onbeveiligde server.
Overweeg dit alleen in een testomgeving of wanneer je zeker weet dat je een alternatief
(zoals iptables of nftables) hebt geconfigureerd.


Hardening Tips

Aanbevelingen voor extra veiligheid

  • Standaardbeleid instellen
    Zorg dat alleen expliciet toegestane verbindingen worden geaccepteerd:

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    

  • Alleen noodzakelijke poorten openstellen
    Sta enkel verkeer toe dat รฉcht nodig is, bijvoorbeeld alleen SSH en HTTP/HTTPS:

    sudo ufw allow 22/tcp
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    

  • Beperk toegang per IP-adres
    Laat bijvoorbeeld alleen een specifiek IP toe tot SSH:

    sudo ufw allow from 192.168.1.100 to any port 22
    

  • Gebruik applicatieprofielen
    Controleer welke applicaties beschikbaar zijn en sta ze gericht toe:

    sudo ufw app list
    sudo ufw allow "Nginx Full"
    

  • Logging inschakelen
    Zet logging aan om verdachte pogingen bij te houden:

    sudo ufw logging on
    tail -f /var/log/ufw.log
    

  • Rate limiting gebruiken
    Bescherm tegen brute-force SSH-aanvallen door limieten te activeren:

    sudo ufw limit ssh
    

  • IPv6 configureren
    Als je server IPv6 gebruikt, zorg dat /etc/ufw/ufw.conf dit ondersteunt:

    IPV6=yes
    

  • Controleer en test regels regelmatig
    Bekijk de status in detail:

    sudo ufw status verbose
    


โœ… Met deze maatregelen is je firewall strakker beveiligd en beperk je risicoโ€™s tot het minimum.
Na elke wijziging altijd even controleren:

sudo ufw reload
sudo ufw status numbered