SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-28

Hoe werken Linux poorten en actieve services?

Begrijp hoe een server netwerkverkeer sorteert via poorten. Leer met het ss commando controleren welke services luisteren en ontdek het verschil tussen lokale en publieke poorten.

Wat een poort daadwerkelijk is

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

Een poort is een 16-bit getal: 16 bits bieden 0 tot 65535, en 0 is gereserveerd, dus poorten lopen in de praktijk van 1 tot 65535. Poorten onder 1024 zijn de "well-known" poorten en vereisen root-rechten om te openen; daarom bevinden standaard services zich daar: 22 voor SSH, 80 voor HTTP, 443 voor HTTPS, 53 voor DNS. Alles boven 1024 is beschikbaar voor reguliere programma's.

Er zijn twee soorten, TCP en UDP, en een poortnummer in de ene is gescheiden van hetzelfde nummer in de andere. TCP is het verbindingsgeoriënteerde protocol dat de meeste services gebruiken, zoals SSH, HTTP en databases. UDP is verbindingsloos en wordt gebruikt voor zaken als DNS en sommige VPN's. Wanneer u een firewall opent, specificeert u meestal welke van de twee, bijvoorbeeld 22/tcp.

Luisteren betekent dat een programma wacht op een poort

Een programma dat verbindingen wil ontvangen, vraagt de kernel om te "luisteren" op een poort. Vanaf dat moment is de poort open op de machine en beantwoordt het programma alles wat daar binnenkomt, afhankelijk van de firewall. Een poort 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 staan voor TCP (t), alleen luisterende sockets (l), numerieke poorten (n, zodat u 22 ziet in plaats van ssh), en het eigenaar-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 kolom Process vertelt u welk programma de eigenaar is van elke poort. Hiermee kunt u achterhalen of er iets draait dat u niet had willen laten aanstaan.

De kolom Local Address is het belangrijkste onderdeel

Lees het adres voor elke poort zorgvuldig, want dit bepaalt wie de service kan bereiken. Er zijn drie situaties 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 bereikbaar vanaf het internet via IPv4, mits de firewall dit toestaat.

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

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, en dit is vanaf geen enkele andere locatie routeerbaar. Een service die hieraan gebonden is, is alleen bereikbaar vanaf dezelfde server en nooit vanaf het internet, ongeacht wat uw firewall aangeeft. Die Postgres-regel hierboven is inherent veilig.

De praktische regel vloeit hier direct uit voort: een database, een cache of een beheerpaneel dat alleen door uw eigen applicaties wordt gebruikt, moet binden aan 127.0.0.1, niet aan 0.0.0.0. Als het nooit luistert op een publiek adres, is er voor een aanvaller niets te bereiken.

Luisteren is niet hetzelfde als bereikbaar zijn

Eén extra onderscheid voorkomt veel verwarring. Een poort die openstaat op de machine, wat betekent dat een programma luistert, is iets anders dan die poort die bereikbaar is vanaf de buitenkant, wat betekent dat de firewall deze toestaat. Beide moeten waar zijn wil een externe client verbinding kunnen maken. De twee fouten zien er vanaf de kant van de client zelfs verschillend uit: een verbinding die wordt geweigerd betekent dat er niets luisterde, terwijl een verbinding die blijft hangen en vervolgens een time-out geeft, meestal betekent dat een firewall het pakket heeft tegengehouden. Dat is precies wat die twee SSH-fouten u vertellen.

Er zijn dus twee lagen van controle. U bepaalt wat er 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 luisteren alleen waar dat nodig is en een firewall weigert alles wat u niet expliciet heeft toegestaan. Lezen wat er luistert met ss is stap één; beslissen wat de firewall toestaat is stap twee, behandeld in firewalls 101 met UFW.

Er is een subtiliteit die hier voor problemen zorgt. IPv4 en IPv6 zijn gescheiden, en een firewall die alleen IPv4 dekt, laat de [::] services open op IPv6. Die specifieke valkuil heeft een eigen artikel: de IPv6 firewall-valkuil.

FAQ

Hoe zie ik welke poorten openstaan op mijn Linux-server?

Voer sudo ss -tlnp uit voor TCP of sudo ss -ulnp voor UDP. Dit geeft een overzicht van elke listening socket, de poort, het lokale adres waaraan deze is gebonden en het proces dat de eigenaar is. Bekijk de kolom Local Address: 0.0.0.0 of [::] betekent dat de service is blootgesteld 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, waardoor de service bereikbaar is vanaf het netwerk. 127.0.0.1 is de loopback, het adres dat de machine gebruikt om met zichzelf te communiceren; dit is vanaf geen enkele andere locatie routeerbaar, waardoor een service die hieraan is gebonden alleen lokaal bereikbaar is. Bind interne services aan 127.0.0.1 zodat deze nooit worden blootgesteld.

Moet ik een poort openen in de firewall om een service te laten werken?

Alleen voor services die vanaf andere machines bereikbaar moeten zijn. Een service die is gebonden aan 127.0.0.1 heeft geen firewallregel nodig, omdat externe bronnen deze toch niet kunnen bereiken. Een service op 0.0.0.0 of [::] vereist een firewallregel om het verkeer toe te staan en moet standaard worden geweigerd totdat u een regel toevoegt.

Wat is het verschil tussen een TCP-poort en een UDP-poort?

TCP is verbindingsgeoriënteerd en wordt gebruikt door de meeste services, zoals SSH, webservers en databases. UDP is verbindingsloos en wordt gebruikt door DNS en sommige VPN's. Hetzelfde nummer in TCP en UDP zijn afzonderlijke poorten, dus 53/tcp en 53/udp zijn verschillend. Wanneer u firewallregels schrijft, specificeert u het protocol, bijvoorbeeld 22/tcp.