Frage Warum ist die Manipulation der TTL von IP gefährlich?


Ich habe die iptables man-page gelesen (leichte Schlafenszeit) und bin auf das "TTL" -Ziel gestoßen, warnt aber:

Das Setzen oder Inkrementieren des TTL-Feldes kann möglicherweise sehr gefährlich sein

und

Setzen oder erhöhen Sie niemals den Wert für Pakete, die Ihr lokales Netzwerk verlassen!

Ich kann sehen, wie vielleicht das Verringern oder das Setzen der TTL niedriger dazu führen könnte, dass Pakete fallengelassen werden, bevor sie das Ziel erreichen, aber welche Wirkung könnte inkrementieren?


50
2018-05-22 15:31


Ursprung




Antworten:


Die TTL wird dekrementiert, wenn sie einen Router passiert. Dadurch wird sichergestellt, dass das Paket, wenn es sich in Kreisen bewegt, irgendwann stirbt.

Das TTL-Feld eines IP-v4-Pakets ist ein 8-Bit-Feld (dezimal 255). Es ist also keine große Sache, es am Anfang hoch zu setzen, da es in einem wohlgeformten Paket nicht wirklich so groß sein kann (obwohl einige Dinge missgebildete IP-Pakete akzeptieren könnten).

Wenn jedoch etwas erhöht wird, und der Inkrementierungsschritt ist Teil der Schleife, das Paket könnte im Kreis weiterlaufen, ohne jemals Null zu erreichen. Im Laufe der Zeit (könnte sehr kurz sein, oder ein allmähliches Leck), könnten sich Pakete in dem System aufbauen, das diese Schleife enthält, wodurch sie überlastet wird.


66
2018-05-22 16:05





Die TTL auf Paketen hält grundsätzlich Routing-Snape. Wenn ein Paket eine sehr große TTL hätte und aus irgendeinem Grund in einer kreisförmigen Route gefangen wäre, könnte dies eine Menge Verkehr verursachen (als "Paketsturm" bezeichnet) und den normalen Betrieb beeinträchtigen. Eine zu niedrige TTL würde zu einem Verlust der Konnektivität führen, da Sie das Paket verlieren würden, bevor es das Ziel erreicht.


19
2018-05-22 15:39



Dies ist mehr über TTL-Ablauf, aber es geht etwas genauer auf das, was Sie sagen: cisco.com/web/about/security/intelligence/ttl-expiry.html - NickW


Es gibt einen Punkt, den die Antworten übersehen zu haben scheinen, der aber rein akademisch wäre (wegen der Anzahl der benötigten Hops im Internet): wenn ein Paket aufgrund einer auslaufenden TTL normalerweise nicht an seinem Zielort ankommt, dann erhöht es es würde es dem Paket erlauben, sein Ziel zu erreichen, würde aber keine Auswirkungen auf Pakete haben, die zurückgegeben werden, und sie würden ablaufen, bevor sie Ihr Netzwerk erreichen.

UPDATE: Laut diese Seite auf Wikipedia:

Theoretisch wird unter IPv4 die Lebenszeit in Sekunden gemessen, obwohl jeder Host, der das Datagramm übergibt, die TTL um mindestens eine Einheit reduzieren muss. In der Praxis wird das TTL-Feld auf jedem Sprung um eins reduziert. Um diese Praxis widerzuspiegeln, wird das Feld in IPv6 in Hop-Limit umbenannt.

UPDATE 2: Als jemand meinen Beitrag aktualisiert und auf Wikipedia verwiesen hat, dachte ich, es wäre am besten, den RFC selbst zu referenzieren - http://www.ietf.org/rfc/rfc791.txt - Suchen Sie dort einfach nach TTL und es erklärt es recht gut:

Dieses Feld gibt die maximale Zeit an, die das Datagramm im Internet bleiben darf ... jedes Modul, das ein Datagramm verarbeitet, muss die TTL um mindestens einen Wert verringern, selbst wenn es das Datagramm in weniger als einer Sekunde verarbeitet

5
2018-05-22 17:17



Wenn Sie jedoch Pakete, die in Ihrem Netzwerk entstanden sind, auf den Wert erhöhen, den sie gehabt hätten, wenn sie auf Ihrem Router entstanden wären, dann würden die zurückkommenden Pakete Ihren Router erreichen (und dann können Sie sie erhöhen, wenn Sie sie an den Client senden) lokales Netzwerk) - Random832
Ich mag die neue Sicht auf den Ansatz und du bekommst dafür mein Lob. Diese TTL sollte jedoch ursprünglich einmal pro Sekunde sowohl im Netzwerk als auch für jeden Sprung dekrementiert werden. Diese historische Definition wird heutzutage weitgehend ignoriert - jedoch kann niemals angenommen werden, dass der Pfad zwischen zwei Knoten symmetrisch ist - oder sogar gleich von einer Paketübertragung zu einer anderen. - PP.
Wahr. Mit tracert können Sie manchmal sehr merkwürdige Ergebnisse erhalten, wenn Paket x einen anderen Weg als Paket y nimmt! Auch danke für die Information über die Tracking Time auch, ich wusste das nicht (obwohl wenn Pakete nicht Timestamped, die nur dekrementiert werden könnte, wenn ein Router hielt es nicht konnte?) - Matthew Steeples
@ PP. Haben Sie eine Referenz für die Behauptung, dass die TTL ursprünglich einmal pro Sekunde dekrementiert werden sollte? Ohne die hochpräzisen synchronisierten Uhren, die in den frühen Tagen des Internets sicherlich nicht alltäglich waren (geschweige denn, dass viele Hosts nur die lokale Zeit abwickelten), sehe ich nicht, wie das zuverlässig funktioniert. - α CVn
@ MichaelKjörling Es ist so in RFC 791 definiert, die IPv4 definiert. - Michael Hampton♦


Ich kenne nur ein Programm, das einen höheren TTL-Wert verwenden könnte, und das ist traceroute. Wie der Name sagt, verfolgt er die Route zu einem Ziel-Host, indem er den TTL-Wert ändert. Der Standard Max Hops ist 20, aber Sie können das erhöhen.


3
2018-05-22 15:52



(Die meisten Implementierungen von) traceroute basieren ebenfalls auf ICMP Zeit überschritten Nachrichten um festzustellen, ob ein Paket sein Ziel erreicht hat oder nicht. Nebenbei bemerkt, Time Exceeded Nachrichten sind ein Grund, warum eine vollständige Blockierung von ICMP eine sehr schlechte Idee ist. - α CVn


Jeder Router, der ein Paket verarbeitet, dekrementiert den TTL-Wert, bis das Paket sein Ziel erreicht, oder TTL Null erreicht und stirbt.

Wie andere bereits gesagt haben, könnte eine Erhöhung der TTL zu Paketen führen, die niemals abstürzen, wenn es einen negativen Zyklus gibt. Wenn ein TTL-Wert nicht groß genug ist, sollte die Logik zum Testen einer größeren TTL wahrscheinlich von den End-to-End-Clients verarbeitet werden.

Wenn Sie sicher sind, dass sich ein Router nicht in einem Zyklus befindet (baumartige Topologie), könnten Sie theoretisch den TTL-Wert sicher erhöhen. Wenn man jedoch zulässt, dass mehr Hops möglich sind als im Standard, könnte dies zu einer erhöhten Wahrscheinlichkeit von Staus im externen Netzwerk führen. Wenn Sie eine lange Kette von Routern zwischen dem internen und dem externen Netzwerk haben, kann ein größerer TTL-Wert helfen, solange kein Zyklus vorhanden ist. Allerdings könnte es für jemanden ziemlich einfach sein, dem Netzwerk eine Kante hinzuzufügen und einen Zyklus zu erstellen, so dass es mit einem größeren TTL-Wert, bei dem das Paket ursprünglich entstanden ist, viel sicherer ist.


0
2018-05-24 13:02