ICMP
Un’altra componente fondamentale della famiglia TCP/IP è rappresentata dal protocollo ICMP (Internet Control Message Protocol).
Il protocollo ICMP viene usato comunemente dagli utenti finali per testare la raggiungibilità di un host (tramite comando Ping), ma il suo ruolo nelle reti IP è ben piu ampio.
ICMP nasce per avvisare stazioni e gateway della presenza di eventuali problemi sulla rete.
Attraverso la definizione del protocollo ICMP, gli ideatori del TCP/IP non avevano la pretesa di trasformare il protocollo IP in un protocollo affidabile, ma solo quella di fornire agli addetti ai lavori uno strumento semplice e versatile per registrare e avvisare gli host dei problemi riscontrati durante l’instradamento di un datagramma IP.
La funzione assolta dai diversi messaggi ICMP è definita da una coppia d’identificativi, denominati type e code, presenti nell’intestazione di ciascun messaggio ICMP trasmesso (vedi Tabella).
Il protocollo ICMP svolge un ruolo attivo anche nell’annunciare la presenza di condizioni di routing non ottimali e invitare le stazioni che adottano un singolo default gateway predefinito, a modificare il percorso selezionato per la consegna dei datagrammi IP.
In caso esistano gateway alternativi per uscire da una stessa rete locale, infatti, non sempre è preferibile utilizzare lo stesso gateway.
Attraverso specifici messaggi ICMP è possibile avvisare la stazione sorgente che la consegna del datagramma IP può avvenire in maniera più efficace indirizzandoli ( data una destinazione finale) a un gateway diverso da quello di default.
La stazione ricevente l’invito, normalmente ritiene validi i messaggi ricevuti con indirizzo IP sorgente coincidente con quello del proprio default gateway.
Uno scenario in cui si assiste all’invio di ICMP Redirect Message è illustrato nei seguenti passaggi.
L’ordine in cui vengono scambiati i messaggi è il seguente:
- la stazione sorgente invia al default gateway il primo datagramma IP di un flusso di datagrammi destinati alla stessa stazione finale remota;
- il default gateway controlla la propria tabella di routing per stabilire come instradare il datagramma IP; se il prossimo salto è rappresentato da un gateway direttamente raggiungibile dalla stazione sorgente, il default gateway emette uno specifico messaggio ICMP di redirezione;
- il default gateway invia regolarmente il datagramma IP ricevuto verso il secondo gateway, che rappresenta il next hop per la destinazione finale;
- la stazione sorgente, ricevuto il mesaggio ICMP, memorizza temporaneamente la nuova route nella propria tabella interna e invia gli altri datagrammi IP, destinati allo stesso indirizzo IP, direttamente al secondo gateway.
Una stazione che non implementa il meccanismo di redirezione tramite messaggi ICMP, ignora semplicemente tutti i messaggi ricevuti dal default gateway e continua a inviare al primo dispositivo tutti i datagrammi IP.
Il default gateway provvede in ogni caso a instradare i datagrammi IP ricevuti, verso il secondo gateway, contribuendo regolarmente al servizio di consegna IP (anche se il routing rimane non ottimale).
Pertanto si può concludere che, anche se la stazione sorgente scarta tutti i messaggi ICMPprodotti dal default gateway, la destinazione finale è raggiungibile.
Si consegue solo un maggiore ritardo e soprattutto un eccessivo consumo di risorse nel default gateway rispetto a un instradamento ottimale.
Esistono numerosi programmi che utilizzano le risorse ICMP per costruire una mappa della rete e dei servizi attivi sulle stazioni finali.
Per limitare ai soli utenti legittimi la possibilità di effettuare un mapping della rete e dei servizi attivi sulle stazioni è opportuno che l’amministratore della rete provveda a bloccare sui router il transito di tutti quei messaggi ICMP che non risultano indispensabili per l’esercizio della rete.
Un’altra pesante limitazione del protocollo ICMP è rappresentata dalla sua natura, fondamentalmente stateless unidirezionale.
A causa di questa proprietà i messaggi ICMP sono molto spesso utilizzati (previo IP Spoofing) per portare attacchi di tipo DoS.
Può essere opportuno impostare specifiche regole sui dispositivi d’interconnessione per limitare il numero massimo di pacchetti ICMP veicolati per unità di tempo.