Tại sao việc giả mạo IP của IP lại nguy hiểm?


51

Tôi đã đọc trang người đàn ông iptables (đọc giờ đi ngủ nhẹ) và tôi tình cờ thấy mục tiêu 'TTL', nhưng nó cảnh báo:

Cài đặt hoặc tăng trường TTL có thể rất nguy hiểm

Đừng bao giờ đặt hoặc tăng giá trị trên các gói rời khỏi mạng cục bộ của bạn!

Tôi có thể thấy làm thế nào có thể giảm hoặc đặt mức thấp hơn của TTL có thể khiến các gói bị rơi trước khi đến đích, nhưng hiệu ứng có thể tăng lên có ảnh hưởng gì?

Câu trả lời:


67

TTL bị giảm khi đi qua bộ định tuyến. Điều này đảm bảo rằng nếu gói đi vòng tròn trong vòng tròn thì cuối cùng nó sẽ chết.

Trường TTL của gói IP v4 là trường 8 bit (255 thập phân). Vì vậy, đặt nó ở mức cao ngay từ đầu, nó không phải là vấn đề lớn vì nó thực sự không thể lớn đến mức trong một gói được định dạng tốt (Mặc dù, một số thứ có thể chấp nhận các gói IP không đúng định dạng).

Tuy nhiên, nếu một cái gì đó làm tăng nó và bước tăng là một phần của vòng lặp , gói có thể tiếp tục đi theo vòng tròn mà không bao giờ đạt đến không. Theo thời gian (có thể rất ngắn hoặc rò rỉ dần dần), các gói có thể tích tụ trong hệ thống chứa vòng lặp đó khiến nó bị quá tải.


20

Về cơ bản, các gói dữ liệu giữ định tuyến lành mạnh. Nếu một gói tin có một TTL rất lớn và bị bắt trong một tuyến đường tròn vì một số lý do, nó có thể gây ra một tấn lưu lượng truy cập (được gọi là "cơn bão gói") và cản trở các hoạt động bình thường. TTL quá thấp sẽ dẫn đến mất kết nối vì bạn sẽ mất gói trước khi đến đích.


Đây là thông tin chi tiết hơn về thời hạn sử dụng của TTL, nhưng nó đi sâu vào chi tiết hơn một chút về những gì bạn nói: cisco.com/web/about/security/intellect/ttl-Exiry.html
NickW

5

Có một điểm mà các câu trả lời dường như đã bỏ lỡ nhưng sẽ hoàn toàn mang tính học thuật (vì có bao nhiêu bước nhảy dường như được yêu cầu trên internet): nếu một gói thông thường không thể đến đích vì một TTL hết hạn, sau đó tăng nó sẽ cho phép gói tin đến đích nhưng sẽ không ảnh hưởng đến các gói được trả lại và chúng sẽ hết hạn trước khi truy cập mạng của bạn.

CẬP NHẬT: Theo trang này trên Wikipedia :

Về lý thuyết, theo IPv4, thời gian để sống được tính bằng giây, mặc dù mọi máy chủ lưu trữ qua datagram phải giảm ít nhất một đơn vị TTL. Trong thực tế, trường TTL giảm đi một trên mỗi bước nhảy. Để phản ánh thực tiễn này, trường được đổi tên thành giới hạn hop trong IPv6.

CẬP NHẬT 2: Khi ai đó cập nhật bài đăng của tôi và tham khảo Wikipedia, tôi nghĩ rằng tốt nhất nên tham khảo chính RFC - http://www.ietf.org/rfc/rfc791.txt - Chỉ cần tìm kiếm trong đó và nó hoàn toàn một công việc tốt để giải thích nó:

Trường này cho biết thời gian tối đa mà datagram được phép ở lại trong hệ thống internet ... mỗi mô-đun xử lý một datagram phải giảm ít nhất một lần ngay cả khi nó xử lý datagram trong ít hơn một giây

2
Tuy nhiên - nếu bạn tăng các gói có nguồn gốc trên mạng của bạn thành giá trị mà chúng có nếu chúng có nguồn gốc trên bộ định tuyến của bạn, thì các gói trả về sẽ đến bộ định tuyến của bạn (và sau đó bạn có thể tăng chúng khi gửi nó đến máy khách trong mạng cục bộ)
Random832

Tôi thích quan điểm mới lạ về cách tiếp cận và bạn nhận được sự ủng hộ của tôi cho điều đó. Tuy nhiên, TTL ban đầu được dự định giảm một lần cho mỗi giây, gói tin được sử dụng trong mạng cũng như cho mỗi bước nhảy. Định nghĩa lịch sử đó phần lớn bị bỏ qua ngày nay - tuy nhiên không bao giờ có thể giả định rằng đường dẫn giữa hai nút là đối xứng - hoặc thậm chí giống nhau từ truyền gói này sang gói khác.
PP.

Thật. Đôi khi bạn có thể nhận được một số kết quả rất kỳ lạ khi sử dụng tracert nếu gói x có một tuyến khác với gói y! Cũng cảm ơn về thông tin về thời gian theo dõi của nó, tôi không biết rằng (mặc dù các gói không được đánh dấu thời gian chỉ có thể bị giảm nếu bộ định tuyến giữ trên đó không thể?)
Matthew Steeples

@PP. Bạn có tham khảo cho tuyên bố rằng ban đầu TTL được cho là giảm dần một lần mỗi giây không? Nếu không có đồng hồ được đồng bộ hóa với độ chính xác cao, điều chắc chắn không phổ biến trong những ngày đầu của Internet (chứ đừng nói rằng rất nhiều máy chủ chỉ xử lý giờ địa phương), tôi không thấy cách đó có thể được thực hiện một cách đáng tin cậy.
một CVn

3
@ MichaelKjorling Nó được định nghĩa như vậy trong RFC 791, định nghĩa IPv4.
Michael Hampton

3

Tôi chỉ biết một chương trình, có thể sử dụng giá trị TTL cao hơn, và đó là traceroute. Như tên đã nói, nó theo dõi tuyến đường đến máy chủ đích bằng cách sửa đổi giá trị TTL. Các bước nhảy tối đa tiêu chuẩn là 20, nhưng bạn có thể tăng điều đó.


2
(Hầu hết các triển khai của) traceroute cũng dựa vào các thông báo vượt quá thời gian của ICMP để cho biết liệu một gói đã đến đích hay chưa. Bên cạnh đó, các tin nhắn vượt quá thời gian là một lý do tại sao việc chặn hoàn toàn ICMP là một ý tưởng rất tồi.
CVn

0

Mỗi bộ định tuyến xử lý một gói làm giảm giá trị TTL, cho đến khi gói đến đích hoặc TTL đạt đến 0 và chết.

Như những người khác đã nói, việc tăng TTL có thể dẫn đến các gói không bao giờ chết, nếu có chu kỳ âm. Nói chung, nếu giá trị TTL không đủ lớn, logic để thử một TTL lớn hơn có thể được xử lý bởi các máy khách đầu cuối.

Nếu bạn chắc chắn rằng bộ định tuyến không nằm trong một chu kỳ (cấu trúc liên kết giống như cây), về lý thuyết bạn có thể tăng giá trị TTL một cách an toàn. Đã nói rằng, cho phép nhiều bước nhảy hơn là tiêu chuẩn có thể làm cho tắc nghẽn nhiều khả năng trong mạng bên ngoài. Nếu bạn có một chuỗi dài các bộ định tuyến giữa mạng bên trong và bên ngoài, miễn là không có chu kỳ, giá trị TTL lớn hơn có thể giúp ích. Phải nói rằng, có thể khá dễ dàng để ai đó thêm một cạnh vào mạng và tạo một chu kỳ, do đó, bắt đầu với giá trị TTL lớn hơn trong đó gói có nguồn gốc ở nơi đầu tiên an toàn hơn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.