Wat is ICMP?
ICMP (Internet Control Message Protocol) is het hulpprotocol van IP waarmee routers en hosts foutmeldingen, statusinformatie en diagnostische berichten over de
aflevering van IP-pakketten naar de afzender terugsturen. ICMP vertelt bijvoorbeeld dat een
bestemming onbereikbaar is, dat een pakket te groot is of dat de levensduur (TTL) van een pakket is
verlopen. De bekende tools ping en traceroute zijn erop gebouwd. ICMP werd in
1981 vastgelegd in RFC 792; voor IPv6 bestaat de opvolger ICMPv6 (RFC 4443, 2006).
🧠 Hoe werkt ICMP?
ICMP hoort bij de netwerklaag (laag 3) van het OSI-model, maar wordt zelf in een IP-pakket verpakt: in de IPv4-header staat protocolnummer 1, bij IPv6 Next Header-waarde 58. Anders dan TCP en UDP kent ICMP geen poorten en vervoert het geen gebruikersdata. Het is een signaleringskanaal van het netwerk zelf.
Elk ICMP-bericht begint met een header van 8 bytes:
- Type - de soort melding, bijvoorbeeld 8 voor een echoverzoek
- Code - de precieze reden binnen dat type, bijvoorbeeld “poort onbereikbaar”
- Checksum - controle op beschadiging van het bericht
- Rest van de header - afhankelijk van het type, zoals een identifier en volgnummer bij ping
Een foutmelding bevat altijd de IP-header en de eerste bytes van het pakket dat het probleem veroorzaakte. Daaraan herkent de afzender welke verbinding het betreft. Hosts en routers sturen nooit een ICMP-fout over een ICMP-fout, om eindeloze kettingen van meldingen te voorkomen.
🔧 Welke ICMP-types zijn het belangrijkst?
| Type | Naam | Betekenis en gebruik |
|---|---|---|
| 0 | Echo Reply | Antwoord op een ping |
| 3 | Destination Unreachable | Netwerk, host, protocol of poort onbereikbaar; code 4 = fragmentatie nodig maar verboden |
| 5 | Redirect | Router meldt een betere next hop op hetzelfde subnet |
| 8 | Echo Request | Het pingverzoek |
| 11 | Time Exceeded | TTL verlopen onderweg (code 0) of fragmenten niet op tijd samengevoegd (code 1) |
| 12 | Parameter Problem | Ongeldige waarde in de IP-header |
| 13 / 14 | Timestamp Request / Reply | Vraagt de systeemklok op; vulnerability scanners melden dit als informatielek |
Verouderde types zoals Source Quench (type 4) en Address Mask Request (type 17) zijn officieel afgeschaft, in RFC 6633 (2012) en RFC 6918 (2013). Ziet u die in uw netwerk, dan is dat vaak een teken van oude apparatuur of verkenning.
🔄 Hoe gebruiken ping en traceroute ICMP?
Ping stuurt een Echo Request en meet hoe lang het duurt tot de Echo Reply terugkomt. Zo ziet u in één keer bereikbaarheid, round-trip-latency, pakketverlies en variatie in vertraging (jitter). Windows stuurt standaard vier verzoeken met 32 bytes data; Linux pingt doorlopend met 56 bytes data.
Traceroute brengt het pad naar een bestemming in kaart door pakketten te sturen met een
oplopende TTL: 1, 2, 3 enzovoort. Elke router die de TTL op nul ziet uitkomen, stuurt een ICMP Time
Exceeded terug en verraadt zo zijn adres. Windows tracert gebruikt daarvoor Echo Requests; de
klassieke Unix-traceroute stuurt UDP-pakketten naar hoge poorten (vanaf 33434) en herkent het
eindpunt aan de ICMP-melding “Port Unreachable”. Dezelfde TTL-teller beschermt het netwerk ook tegen
routing loops: een pakket dat rondjes draait, verdwijnt zodra de TTL op nul staat, en de bijbehorende Time
Exceeded-meldingen maken zo’n lus zichtbaar.
| Kenmerk | ICMPv4 | ICMPv6 |
|---|---|---|
| Specificatie | RFC 792 (1981) | RFC 4443 (2006) |
| Protocolnummer | 1 | 58 (Next Header) |
| Adresresolutie | Via ARP, los van ICMP | Neighbor Discovery via ICMPv6 (types 133–137) |
| Pakket te groot | Type 3, code 4 | Eigen type 2: Packet Too Big |
| Gevolg van volledig blokkeren | Diagnose en Path MTU Discovery werken niet | IPv6 werkt niet meer |
🔐 Welke beveiligingsrisico’s heeft ICMP?
ICMP is nuttig voor beheerders, maar ook voor aanvallers:
- Verkenning - een ping sweep over een subnet laat zien welke IP-adressen actief zijn. Time Exceeded-berichten onthullen de routerstructuur, Timestamp-antwoorden de systeemtijd.
- DDoS-aanvallen - een ping flood overspoelt een doel met echoverzoeken. Bij een Smurf-aanval worden pings met een vervalst afzenderadres naar een broadcastadres gestuurd, waarna alle hosts het slachtoffer beantwoorden. Sinds RFC 2644 (1999) blokkeren routers standaard het doorsturen van zulke directed broadcasts.
- Misvormde pakketten - de historische “ping of death” stuurde gefragmenteerde pakketten die samen groter waren dan de maximale 65.535 bytes en daardoor systemen lieten crashen.
- Tunneling en command-and-control - data verstopt in het datadeel van echopakketten. MITRE ATT&CK beschrijft dit onder T1095 (Non-Application Layer Protocol).
- Redirect-misbruik - vervalste type 5-berichten kunnen verkeer van een host via een systeem van de aanvaller leiden.
Volledig blokkeren is echter geen oplossing. Zonder “fragmentatie nodig”-berichten werkt Path MTU Discovery (RFC 1191) niet meer en blijven verbindingen hangen, vooral via VPN-tunnels. Voor IPv6 geeft RFC 4890 (2007) een lijst van ICMPv6-berichten die een firewall nooit mag weggooien, en RFC 4443 verplicht IPv6-apparaten hun eigen foutmeldingen te begrenzen (rate limiting).
🏭 Waarom vraagt ICMP in OT-netwerken extra aandacht?
In een OT-netwerk is ICMP vaak het eenvoudigste middel om te controleren of een PLC, HMI of switch nog leeft. Veel SCADA- en monitoringsystemen pingen hun apparaten periodiek als heartbeat. Tegelijk hebben oudere besturingen een beperkte netwerkstack die slecht tegen afwijkend verkeer kan.
Er zijn gedocumenteerde incidenten waarbij een ping sweep productie verstoorde: in 1998 bewoog een robotarm van bijna drie meter onverwacht nadat een sweep het netwerk raakte, en in een chipfabriek liet een sweep de procesbesturing hangen, waardoor voor 50.000 dollar aan wafers verloren ging. Daarom adviseert NIST SP 800-82 terughoudendheid met actieve scans in productieomgevingen. Voor asset discovery in OT heeft passieve monitoring de voorkeur.
Een onverwachte ping sweep vanaf een engineeringstation of uit het kantoornetwerk is in OT bovendien een sterk signaal. Het is vaak een van de eerste stappen van een aanvaller na binnenkomst, voorafgaand aan laterale beweging. Een OT-IDS of netwerkmonitoring met een baseline van normaal verkeer kan zulke afwijkingen detecteren.
🧭 Hoe stelt u een ICMP-beleid op voor IT en OT?
- Inventariseer het gebruik - welke systemen pingen elkaar (monitoring, SNMP-tools, SCADA-heartbeats) en welke ICMP-types zijn echt nodig? Een capture met Wireshark geeft snel een beeld.
- Filter per type, niet alles of niets - sta Destination Unreachable (vooral code 4) en Time Exceeded toe; blokkeer Redirect, Timestamp en de afgeschafte types.
- Beperk echo per zone - sta ping alleen toe vanaf beheer- en monitoringsystemen naar de zones die zij bewaken. Dat past bij het zones-en-conduits-model uit IEC 62443 en bij netwerksegmentatie volgens het Purdue-model.
- Laat ICMP niet door de DMZ heen - echo vanaf internet of het kantoornetwerk hoort niet tot in de besturingszones te komen. Laat zulk verkeer uiterlijk in de DMZ eindigen.
- Pas rate limiting toe - op routers en firewalls, zodat een flood de besturing niet bereikt. Kies voor IPv6 een beleid volgens RFC 4890.
- Schakel redirects uit - op hosts en routers in OT-segmenten. Dat hoort bij standaard hardening.
- Leg het vast en controleer - neem de ICMP-regels op in firewallregelbeheer en laat de monitoring alarmeren op sweeps en ongebruikelijke pakketgroottes.
Voor organisaties die onder de Cyberbeveiligingswet vallen, is zo’n gedocumenteerd en getoetst filterbeleid onderdeel van aantoonbare netwerkbeveiliging.
❓ Veelgestelde vragen
Is ping hetzelfde als ICMP?
Nee, ping is een programma en ICMP is het protocol dat het gebruikt. Ping verstuurt ICMP Echo Request-berichten (type 8) en wacht op Echo Reply-berichten (type 0). ICMP kent daarnaast veel andere berichten, zoals foutmeldingen over onbereikbare bestemmingen.
Gebruikt ICMP TCP of UDP?
ICMP gebruikt geen TCP of UDP en kent dus ook geen poortnummers. ICMP-berichten zitten direct in een IP-pakket met protocolnummer 1 (IPv4) of Next Header 58 (IPv6). Firewallregels voor ICMP filteren daarom op type en code in plaats van op poort.
Moet u ICMP blokkeren op een firewall?
ICMP volledig blokkeren is af te raden, omdat het foutmeldingen tegenhoudt die het netwerk nodig heeft, zoals “fragmentatie nodig” voor Path MTU Discovery. Een goed ICMP-beleid laat noodzakelijke foutmeldingen door, beperkt echoverkeer tot beheersystemen en blokkeert riskante types zoals Redirect en Timestamp. Bij IPv6 maakt volledig blokkeren van ICMPv6 het netwerk onbruikbaar.
Waarom antwoordt een apparaat niet op ping terwijl het wel werkt?
Een apparaat kan bereikbaar zijn voor applicaties en toch niet op ping antwoorden, omdat een firewall of de hostfirewall ICMP Echo blokkeert. Windows Defender Firewall laat inkomende echoverzoeken bijvoorbeeld standaard niet toe. Test in dat geval met een verbinding naar de applicatiepoort zelf.
Wat is het verschil tussen ICMP en ICMPv6?
ICMP hoort bij IPv4 en is beschreven in RFC 792, terwijl ICMPv6 bij IPv6 hoort en is beschreven in RFC 4443. ICMPv6 doet meer: het verzorgt ook Neighbor Discovery, de IPv6-vervanger van ARP. Daardoor is ICMPv6 onmisbaar voor een werkend IPv6-netwerk.
Is ping veilig in een OT-netwerk?
Een enkele ping van een monitoringsysteem is in een OT-netwerk normaal en meestal veilig. Grote ping sweeps of floods kunnen oudere PLC’s en besturingen echter verstoren, en dat is in de praktijk ook gebeurd. Sta ICMP in OT daarom alleen toe vanaf bekende beheersystemen en begrens het volume.
📌 Samengevat
ICMP is het signaleringsprotocol van IP dat foutmeldingen en diagnose levert, de basis onder ping, traceroute en Path MTU Discovery. Het is onmisbaar voor beheer en voor IPv6, maar ook bruikbaar voor verkenning, floods en tunneling. Filter in IT- én OT-netwerken daarom per type en per zone in plaats van alles te blokkeren, begrens het volume en houd actieve ICMP-scans weg van gevoelige besturingen.
