SSD Nodes Learn
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-07-24

Wat is een port en hoe werkt dit in Linux?

Ontdek hoe ports werken op uw server. Leer met het ss commando zien welke services luisteren en maak het verschil tussen TCP en UDP protocollen.

Wat een port eigenlijk is

Een port is een nummer waarmee één server meerdere services tegelijkertijd kan draaien zonder dat het verkeer door elkaar raakt. Uw VPS heeft één IP-adres, maar kan tegelijkertijd een webserver, een SSH-server en een database draaien. Wanneer een pakket aankomt, moet het besturingssysteem weten voor welke service het is. Het portnummer geeft het antwoord. Webverkeer gaat naar port 443, SSH naar port 22. Het IP-adres brengt het pakket naar uw server; de port brengt het naar het juiste programma op die server.

Een port is een 16-bit nummer: 16 bits geven een bereik van 0 tot 65535. Omdat 0 gereserveerd is, lopen ports in de praktijk van 1 tot 65535. Ports onder de 1024 zijn de "well-known" ports en vereisen root-rechten om te openen. Daarom staan standaard services hier: 22 voor SSH, 80 voor HTTP, 443 voor HTTPS, 53 voor DNS. Alles boven 1024 is beschikbaar voor gewone programma's.

Er zijn twee soorten: TCP en UDP. Een portnummer in de ene is gescheiden van hetzelfde nummer in de andere. TCP is het verbinding-gebaseerde protocol dat de meeste services gebruiken, zoals SSH, HTTP en databases. UDP is verbodingsloos en wordt gebruikt voor zaken als DNS en sommige VPN's. Wanneer u een firewall instelt, geeft u meestal aan welke het betreft, bijvoorbeeld 22/tcp.

Listening betekent dat een programma wacht op een port

Een programma dat verbindingen wil ontvangen, vraagt de kernel om te "listen" op een port. Vanaf dat moment staat de port open op de machine en beantwoordt het programma alles wat daar aankomt, mits de firewall dit toestaat. Een port waar niets op luistert, weigert simpelweg verbindingen. De eerste vraag bij elke beveiligingscontrole is daarom: wat luistert er, en waar.

Het commando om dit te beantwoorden is ss:

sudo ss -tlnp

De flags betekenen: TCP (t), alleen listening sockets (l), numerieke ports (n, zodat u 22 ziet in plaats van ssh), en het eigende proces (p). Een typisch resultaat:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

De Process kolom vertelt u welk programma eigenaar is van elke port. Zo kunt u iets opsporen dat u niet per ongeluk heeft laten draaien.

De Local Address kolom is het belangrijkste onderdeel

Lees het adres voor elke port zorgvuldig, omdat dit bepaalt wie de service kan bereiken. Er zijn drie gevallen die u constant zult tegenkomen.

0.0.0.0:22 betekent "luister op elk IPv4-adres dat deze machine heeft", inclusief het publieke adres. De service is via IPv4 bereikbaar vanaf het internet, mits een firewall dit toestaat.

[::]:80 betekent hetzelfde voor IPv6: luister op elk IPv6-adres, inclusief het publieke adres. Veel programma's binden hier standaard naar, en op Linux accepteert een :: socket vaak ook IPv4.

127.0.0.1:5432 betekent "luister alleen op loopback". 127.0.0.1 is het adres dat een machine gebruikt om met zichzelf te communiceren; dit is niet routeerbaar vanaf elders. Een service die hieraan gebonden is, is alleen bereikbaar vanaf dezelfde server en nooit vanaf het internet, ongeacht uw firewall-instellingen. De Postgres-regel hierboven is dus veilig door ontwerp.

De praktische regel is hieruit af te leiden: een database, een cache of een admin-paneel dat alleen door uw eigen applicaties wordt gebruikt, moet binden aan 127.0.0.1 en niet aan 0.0.0.0. Als een service nooit luistert op een publiek adres, kan een aanvaller er niet bij.

Listening is niet hetzelfde als bereikbaar

Nog een onderscheid dat veel verwarring voorkomt. Een port die open staat op de machine (een programma luistert) is iets anders dan een port die bereikbaar is van buitenaf (de firewall staat het toe). Beide moeten waar zijn voordat een externe client kan verbinden.

Er zijn dus twee lagen van controle. U bepaalt wat luistert door het bind-adres van elke service in te stellen. En u bepaalt wat de buitenwereld kan bereiken met een firewall. Een goed beheerde server gebruikt beide: services binden alleen waar nodig, en een firewall weigert alles wat u niet expliciet heeft toegestaan. Het controleren wat er luistert met ss is stap één; bepalen wat de firewall toestaat is stap twee, behandeld in firewalls 101 met UFW.

Er is een detail waar mensen vaak de fout in gaan. IPv4 en IPv6 zijn gescheiden. Een firewall die alleen IPv4 dekt, laat de [::] services op IPv6 openstaan. Die specifieke valstrik heeft een eigen artikel: de IPv6 firewall valstrik.

FAQ

Hoe zie ik welke ports open staan op mijn Linux server?

Voer sudo ss -tlnp uit voor TCP of sudo ss -ulnp voor UDP. Dit toont elke listening socket, de port, het lokale adres waaraan deze gebonden is, en het proces dat de eigenaar is. Lees de Local Address kolom: 0.0.0.0 of [::] betekent dat de service blootgesteld is aan het netwerk, terwijl 127.0.0.1 betekent dat deze alleen op de machine zelf luistert.

Wat is het verschil tussen 0.0.0.0 en 127.0.0.1?

0.0.0.0 betekent "luister op alle IPv4-adressen", inclusief het publieke adres, zodat de service vanaf het netwerk bereikbaar is. 127.0.0.1 is loopback, het adres dat de machine gebruikt om met zichzelf te communiceren. Dit is niet routeerbaar vanaf elders, dus een service die hieraan gebonden is, is alleen lokaal bereikbaar. Bind interne services aan 127.0.0.1 zodat ze nooit blootgesteld worden.

Moet ik een port openen in de firewall zodat een service werkt?

Alleen voor services die bereikbaar moeten zijn vanaf andere machines. Een service die gebonden is aan 127.0.0.1 heeft geen firewallregel nodig, omdat er toch niets van buitenaf bij kan. Een service op 0.0.0.0 of [::] heeft een firewallregel nodig om het verkeer toe te laten, en moet standaard worden geweigerd totdat u een regel toevoegt.

Wat is het verschil tussen een TCP port en een UDP port?

TCP is verbinding-gebaseerd en wordt gebruikt door de meeste services, zoals SSH, webservers en databases. UDP is verbodingsloos en wordt gebruikt door DNS en sommige VPN's. Hetzelfde nummer in TCP en UDP zijn gescheiden ports, dus 53/tcp en 53/udp zijn verschillend. Wanneer u firewallregels schrijft, geeft u het protocol op, bijvoorbeeld 22/tcp.