Perché manomettere il TTL dell'IP è pericoloso?


51

Ho letto la man-page di iptables (lettura leggera della buona notte) e mi sono imbattuto nel target 'TTL', ma avverte:

L'impostazione o l'incremento del campo TTL può essere potenzialmente molto pericoloso

e

Non impostare o incrementare mai il valore sui pacchetti che escono dalla tua rete locale!

Posso vedere come forse il decremento o l'impostazione del valore TTL inferiore potrebbero far cadere i pacchetti prima di raggiungere la destinazione, ma quale effetto potrebbe avere l'incremento?

Risposte:


67

Il TTL viene ridotto quando passa attraverso un router. Questo si assicura che se il pacchetto viaggia in cerchio alla fine morirà.

Il campo TTL di un pacchetto IP v4 è un campo a 8 bit (255 decimali). Quindi impostarlo all'inizio all'inizio non è un grosso problema poiché in realtà non può essere così grande in un pacchetto ben formato (anche se alcune cose potrebbero accettare pacchetti IP non validi).

Tuttavia, se qualcosa lo incrementa e il passo di incremento fa parte del ciclo , il pacchetto potrebbe continuare a circolare senza mai raggiungere lo zero. Nel tempo (potrebbe essere molto breve o una perdita graduale), i pacchetti potrebbero accumularsi nel sistema contenente quel loop causandone il sovraccarico.


20

Fondamentalmente, il TTL sui pacchetti mantiene il routing sano. Se un pacchetto avesse un TTL molto grande e fosse bloccato in un percorso circolare per qualche motivo, potrebbe causare una tonnellata di traffico (chiamato "tempesta di pacchetti") e interferire con le normali operazioni. Un TTL troppo basso comporterebbe una perdita di connettività poiché si perderebbe il pacchetto prima che raggiungesse la destinazione.


Questo è più circa la scadenza del TTL, ma va un po 'più in dettaglio su quello che dici: cisco.com/web/about/security/intelligence/ttl-expiry.html
NickW

5

C'è un punto a cui sembrano mancare le risposte ma che sarebbe puramente accademico (a causa del numero di hop che sembra essere richiesto su Internet): se un pacchetto normalmente non riesce a raggiungere la sua destinazione a causa di un TTL in scadenza, quindi aumentandolo consentirebbe al pacchetto di raggiungere la destinazione ma non influirebbe sulla restituzione dei pacchetti e scaderebbero prima di raggiungere la rete.

AGGIORNAMENTO: Secondo questa pagina su Wikipedia :

In teoria, in IPv4, il tempo di vita è misurato in secondi, anche se ogni host che passa il datagramma deve ridurre il TTL di almeno un'unità. In pratica, il campo TTL è ridotto di uno su ogni salto. Per riflettere questa pratica, il campo viene rinominato limite di hop in IPv6.

AGGIORNAMENTO 2: Mentre qualcuno aggiornava il mio post e faceva riferimento a Wikipedia, ho pensato che sarebbe stato meglio fare riferimento allo stesso RFC - http://www.ietf.org/rfc/rfc791.txt - Cerca semplicemente TTL e fa abbastanza un buon lavoro di spiegarlo:

Questo campo indica il tempo massimo di permanenza del datagramma nel sistema Internet ... ogni modulo che elabora un datagramma deve ridurre il TTL di almeno uno anche se elabora il datagramma in meno di un secondo

2
Tuttavia, se hai incrementato i pacchetti originati sulla tua rete al valore che avrebbero avuto se fossero stati originati sul tuo router, i pacchetti di ritorno raggiungeranno il tuo router (e quindi potrai incrementarli quando li invii in seguito al client nel rete locale)
Casuale 832,

Mi piace la visione del romanzo sull'approccio e tu ottieni il mio voto per quello. Tuttavia, il TTL doveva originariamente essere decrementato una volta per ogni secondo del pacchetto speso nella rete e per ogni hop. Questa definizione storica è ampiamente ignorata al giorno d'oggi - tuttavia non si può mai presumere che il percorso tra due nodi sia simmetrico - o addirittura lo stesso da una trasmissione di pacchetti a un'altra.
PP.

Vero. A volte puoi ottenere risultati molto strani usando tracert se il pacchetto x prende una strada diversa dal pacchetto y! Inoltre, grazie anche per le informazioni sul tempo di tracciamento, non lo sapevo (anche se se i pacchetti non fossero marcati con il timestamp, questo potrebbe essere ridotto solo se un router lo trattenesse non potrebbe?)
Matthew Steeples del

@PP. Hai un riferimento per l'affermazione secondo cui il TTL originariamente doveva essere diminuito una volta al secondo? Senza orologi sincronizzati ad alta precisione, che di certo non erano all'ordine del giorno nei primi giorni di Internet (per non parlare del fatto che molti host gestivano solo l'ora locale), non vedo come si possa fare in modo affidabile.
un CVn

3
@ MichaelKjörling È definito come tale in RFC 791, che definisce IPv4.
Michael Hampton

3

Conosco solo un programma, che potrebbe utilizzare un valore TTL più elevato, e cioè traceroute. Come dice il nome, traccia il percorso verso un host di destinazione modificando il valore TTL. Il numero massimo di salti standard è 20, ma puoi aumentarlo.


2
(La maggior parte delle implementazioni di) traceroute si basano anche sui messaggi ICMP Time Expassed per indicare se un pacchetto ha raggiunto la sua destinazione o meno. A parte questo, i messaggi Time Expassed sono una delle ragioni per cui il blocco completo dell'ICMP è una pessima idea.
un CVn

0

Ogni router che gestisce un pacchetto decrementa il valore TTL, fino a quando il pacchetto raggiunge la sua destinazione, o TTL raggiunge lo zero e muore.

Come altri hanno già detto, l'aumento del TTL potrebbe comportare pacchetti che non muoiono mai, se c'è un ciclo negativo. In generale, se un valore TTL non è abbastanza grande, la logica per provare un TTL più grande dovrebbe probabilmente essere gestita dai client end-to-end.

Se si è certi che un router non si trovi in ​​un ciclo (topologia ad albero), in teoria si potrebbe aumentare il valore TTL in sicurezza. Detto questo, consentire un numero maggiore di salti rispetto allo standard potrebbe rendere più probabile la congestione nella rete esterna. Se si dispone di una lunga catena di router tra la rete interna ed esterna, purché non vi sia alcun ciclo, potrebbe essere utile un valore TTL maggiore. Detto questo, potrebbe essere abbastanza facile per qualcuno aggiungere un vantaggio alla rete e creare un ciclo, quindi iniziare con un valore TTL più grande in cui il pacchetto originato in primo luogo è molto più sicuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.