Bij het werken met netwerken in Linux kan het nodig zijn een netwerkpoort te openen of te sluiten. Poortbeheer is essentieel voor de beveiliging: hoe minder poorten een systeem open heeft, hoe minder potentiële aanvalsvectoren er zijn. Bovendien kan een aanvaller geen informatie verzamelen over de service die op een specifieke poort draait als deze gesloten is.
Deze gids legt uit hoe je poorten opent of sluit en hoe je open poorten controleert op Linux-distributies zoals Ubuntu/Debian en CentOS/RHEL met behulp van firewalls zoals ufw, firewalld en iptables.
We demonstreren dit proces op twee Linux-distributies: Ubuntu 22.04 en CentOS 9, draaiend op een Hostman VPS. Alle hier gegeven commando’s werken op elke Debian- of RHEL-gebaseerde distributie.
Poorten worden gebruikt om toegang te krijgen tot specifieke applicaties en protocollen. Een server kan bijvoorbeeld zowel een webserver als een database hosten — poorten leiden het verkeer naar de juiste service. Technisch gezien is een netwerkpoort een niet-negatief geheel getal tussen 0 en 65535.
Gereserveerde poorten (0–1023): Gebruikt door bekende protocollen en netwerkservices zoals SSH (poort 22), FTP (poort 21), HTTP (poort 80) en HTTPS (poort 443).
Geregistreerde poorten (1024–49151): Kunnen worden gebruikt door specifieke applicaties voor communicatie.
Op Debian-gebaseerde systemen (Ubuntu, Debian, Linux Mint, enz.) kun je ufw (Uncomplicated Firewall) gebruiken.
ufw
is vooraf geïnstalleerd op de meeste APT-gebaseerde distributies. Controleer of het is geïnstalleerd:
ufw version
Als een versie wordt weergegeven, is ufw
geïnstalleerd. Zo niet, installeer het dan met:
apt update && apt -y install ufw
Standaard is ufw
inactief, wat betekent dat alle poorten open zijn. Je kunt de status controleren met:
ufw status
Om het te activeren:
ufw enable
Je moet bevestigen met y
. Houd er rekening mee dat het inschakelen van ufw
actieve SSH-verbindingen kan onderbreken. Standaard blokkeert ufw
al het inkomende verkeer en staat al het uitgaande verkeer toe.
Om het standaardbeleid te controleren:
cat /etc/default/ufw
Om een poort te openen:
ufw allow <port_number>
Voorbeeld — poort 22 openen voor SSH:
ufw allow 22
Je kunt meerdere poorten openen door ze te scheiden met komma’s en het protocol (tcp
of udp
) te specificeren:
ufw allow 80,443,8081,8443/tcp
ufw allow 80,443,8081,8443/udp
In plaats van poortnummers kun je ook de servicenaam gebruiken (zoals gedefinieerd in /etc/services
).
Voorbeeld — Telnet (poort 23) openen:
ufw allow telnet
Opmerking: Je kunt niet meerdere servicenames tegelijk specificeren; anders geeft ufw
een foutmelding:
Om een poortbereik te openen:
ufw allow <start_port>:<end_port>/<protocol>
Voorbeeld:
ufw allow 8000:8080/tcp
Om een poort te sluiten:
ufw deny <port_number>
Voorbeeld — poort 80 sluiten:
ufw deny 80
Je kunt ook de servicenaam gebruiken. Voorbeeld — FTP (poort 21) sluiten:
ufw deny ftp
Om alle open en gesloten poorten te tonen:
ufw status
Of voor een gedetailleerdere weergave:
ufw status verbose
RHEL-gebaseerde distributies (CentOS 7+, RHEL 7+, Fedora 18+, OpenSUSE 15+) gebruiken standaard firewalld
.
Controleer of firewalld
is geïnstalleerd:
firewall-offline-cmd -V
Als een versie wordt weergegeven, is firewalld
geïnstalleerd. Zo niet, installeer het:
dnf install firewalld
Standaard is firewalld
uitgeschakeld. Controleer de status:
firewall-cmd --state
Om het in te schakelen:
systemctl start firewalld
Poort 8080 openen voor TCP:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
--zone=public
: specificeert de zone voor de regel.--add-port=8080/tcp
: specificeert de poort en het protocol.--permanent
: slaat de regel permanent op.Je kunt ook een service openen door de naam te gebruiken, bijvoorbeeld HTTP (poort 80):
firewall-cmd --zone=public --add-service=http --permanent
Wijzigingen toepassen:
firewall-cmd --reload
Om een poort te sluiten op nummer:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
Of op servicenaam:
firewall-cmd --zone=public --remove-service=http --permanent
Herlaad altijd na wijzigingen:
firewall-cmd --reload
Om alle open poorten te tonen:
firewall-cmd --list-ports
In tegenstelling tot ufw
en firewalld
is iptables
vooraf geïnstalleerd op veel distributies (Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux).
Om poort 8182 te openen voor inkomende verbindingen:
iptables -A INPUT -p tcp --dport 8182 -j ACCEPT
-A INPUT
: voegt een regel toe aan de INPUT-keten.-p tcp
: specificeert het protocol.--dport 8182
: specificeert de te openen poort.-j ACCEPT
: staat verkeer via deze poort toe.Voor uitgaande verbindingen:
iptables -A OUTPUT -p tcp --dport 8182 -j ACCEPT
Om een poortbereik te openen:
iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j ACCEPT
Om een poort te sluiten:
iptables -A INPUT -p tcp --dport 8182 -j DROP
Een poortbereik sluiten:
iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j DROP
Standaard zijn iptables
-regels alleen van kracht tot de server opnieuw wordt opgestart. Om ze permanent op te slaan, installeer iptables-persistent
:
Voor APT-gebaseerde systemen:
apt update && apt -y install iptables-persistent
Voor DNF-gebaseerde systemen:
dnf -y install iptables-persistent
Huidige regels opslaan:
iptables-save
De regels worden automatisch opnieuw geladen bij de volgende herstart.
Alle huidige regels en open poorten weergeven:
iptables -L -v -n
Alleen IPv4-regels tonen:
iptables -S
IPv6-regels tonen:
ip6tables -S
In deze gids hebben we laten zien hoe je netwerkpoorten opent en sluit in Linux en hoe je de momenteel open poorten controleert met drie verschillende tools: ufw, firewalld en iptables. Een goed poortbeheer vermindert het risico op potentiële netwerkaanvallen en helpt informatie over de services die deze poorten gebruiken te verbergen.