ICMP là gì?
ICMP là gì? ICMP (Internet Control Message Protocol) là một giao thức mà các thiết bị mạng (ví dụ: bộ định tuyến) sử dụng để tạo thông báo lỗi khi các sự cố mạng đang ngăn các gói IP đi qua.
Giao thức tin nhắn điều khiển Internet là một trong những hệ thống cơ bản giúp internet hoạt động. Mặc dù bạn có thể chưa nghe nói về ICMP, nhưng có lẽ bạn đã nghe nói về một trong những tính năng của nó: Ping. Trong hướng dẫn này, bạn sẽ tìm hiểu thêm về giao thức thiết yếu này.
Lịch sử của ICMP
ICMP là một phần của TCP / IP . Nó được đặt ở Lớp Internet và nó là một tiêu chuẩn thông báo lỗi hỗ trợ Giao thức Internet lõi. Định nghĩa ban đầu của ICMP được viết bởi Jon Postel , một trong những người sáng lập internet. Tiêu chuẩn đầu tiên được công bố vào tháng 4 năm 1981 trong RFC 777. Điều này đã được cập nhật nhiều lần. Định nghĩa ổn định của giao thức có trong RFC 792 , cũng được Postel viết và được Internet Engineering Taskforce xuất bản vào tháng 9 năm 1981.
Mục đích của ICMP là gì ?
Mặc dù Lớp Internet cấp thấp hơn không được coi là có liên quan đến đảm bảo kết nối, ICMP cung cấp một chút thông tin phản hồi về thông tin liên lạc khi có sự cố . Vì vậy, ngay cả khi bạn sử dụng UDP, có mô hình truyền thông không kết nối , vẫn có thể tìm hiểu lý do tại sao truyền thất bại. Tất cả các thiết bị kết nối mạng có thể xử lý tin nhắn ICMP, bao gồm các bộ định tuyến cũng như các thiết bị đầu cuối. ICMP đã được điều chỉnh để nó có thể hoạt động với IPv6 hoàn toàn giống như nó đã phục vụ IPv4.
Vì giao thức này nằm trong Lớp Internet, các thông điệp của nó được truyền bởi các gói IP và do đó tồn tại ở mức cao hơn so với cấu trúc hoạt động của các bộ chuyển mạch. Mặc dù ICMP được mang trong gói IP, nhưng nó không tồn tại bên trong các gói mang dữ liệu. Gói ICMP chỉ được tạo để đáp ứng với gói dữ liệu đến khi việc truyền thông điệp gửi đến đó không thành công . Các điều kiện lỗi gây ra gói ICMP thường là kết quả của dữ liệu chứa trong tiêu đề IP của gói bị lỗi .
Cấu trúc gói ICMP
Khi bộ định tuyến quay lại gói ICMP để báo lỗi, nó sẽ tạo lại tất cả các trường trong tiêu đề IP gốc của gói mà nó đang báo cáo. Vì vậy, một chương trình thu thập lỗi trên máy tính gửi ban đầu có thể phân tích tiêu đề và tìm ra chính xác gói IP nào mà nó gửi đi không thành công.
Sau tiêu đề IP, xuất hiện tiêu đề ICMP ba trường . Chúng chứa một mã phân loại lỗi, trường mã phụ, sẽ tinh chỉnh mô tả mã lỗi và sau đó là tổng kiểm tra. Sau trường ICMP đến tám byte đầu tiên của tải trọng, thực sự là tiêu đề Lớp vận chuyển (TCP hoặc UDP).
ICMP message codes
Trường mã đầu tiên trong khối ICMP chứa một số thông tin rất hữu ích. Mã này là số và đây là một số giá trị thú vị hơn mà trường có thể có:
0 : echo reply
3 : destination unreachable
4 : source quench
5 : redirect
8 : echo request
9 : router advertisement reply
10 : router solicitation
11 : time exceeded
Time to Live
Một trong những trường tiêu đề IP nổi tiếng với việc gây ra lỗi tạo ICMP là trường Time to Live ( TTL ). Trường này chứa một số, biểu thị số lượng bộ định tuyến tối đa mà gói có thể đi qua . Con số này giảm đi một, bởi mỗi bộ định tuyến xử lý gói. Nếu một bộ định tuyến nhận được một gói có chỉ số TTL bằng 0, nó sẽ loại bỏ gói đó và gửi thông điệp ICMP trở lại người khởi tạo của việc truyền thất bại đó.
Trong trường hợp cạn kiệt TTL, lý do gói không đến đích của nó không liên quan gì đến các vấn đề về bộ định tuyến hoặc dữ liệu không đúng trong tiêu đề gói. TTL là một cấu trúc được tạo ra để ngăn chặn các gói lừa đảo làm tắc nghẽn internet khi lỗi bảng bộ định tuyến dẫn đến các đường dẫn tròn . Tuy nhiên, sản phẩm phụ của lĩnh vực này là một công cụ quản trị mạng rất hữu ích: Traceroute .
Theo dõi với ICMP
Traceroute là một công cụ quản trị mạng nổi tiếng hiển thị đường dẫn điển hình từ máy tính khởi chạy đến địa chỉ IP đích nhất định. Tiện ích gửi ra một loạt các gói IP trống. Tính năng quan trọng của mỗi lần truyền này là giá trị TTL trong tiêu đề IP.
Chương trình Traceroute bắt đầu gửi một gói ra với chỉ số TTL là 0 . Điều này sẽ bị loại bỏ bởi bộ định tuyến đầu tiên nhận được nó, thường là cổng mạng. Bộ định tuyến đó gửi lại một gói ICMP. Các thông tin duy nhất mà Traceroute muốn từ phản hồi đó là thời gian cần để quay lại và địa chỉ nguồn của gói . Điều đó cho Traceroute địa chỉ của bộ định tuyến đầu tiên trên đường dẫn đến đích. Chương trình sau đó gửi một gói có chỉ số TTL là 1 .
Điều này đi qua cổng, làm giảm TTL xuống 1. Bộ định tuyến nhận gói tiếp theo sẽ thấy rằng TTL bằng 0, bỏ gói và gửi lại gói ICMP. Do đó, bộ định tuyến thứ hai trong đường dẫn được tiết lộ và Traceroute lưu ý thời gian cần thiết để phản hồi đó đến. Bằng cách tăng TTL lên 1 với mỗi lần truyền, Traceroute cuối cùng sẽ xây dựng một bản đồ của tất cả các liên kết trên internet đến địa chỉ đã cho .
Vấn đề theo dõi
Traceroute là một công cụ rất đơn giản, tận dụng chức năng quản trị có sẵn và tạo ra một tiện ích hiệu quả và thông tin từ nó. Có một vài điểm yếu với Traceroute.
Một quản trị viên mạng có thể sẽ sử dụng tiện ích này để xem lý do tại sao một kết nối gần đây trở nên tồi tệ – chậm hoặc thất bại. Tuy nhiên, Traceroute không thể cho bạn biết những gì đã xảy ra trong quá khứ . Nó chỉ có thể cung cấp cho bạn thông tin phản hồi về tiến trình của tuyến đường hiện tại.
Mỗi bộ định tuyến tự đưa ra quyết định về việc hàng xóm của họ đưa ra đường dẫn ngắn nhất tới địa chỉ IP đích trên một gói. Tuy nhiên, quyết định đó có thể không phải lúc nào cũng giống hệt nhau mọi lúc. Nếu một bộ định tuyến bị tắc nghẽn hoặc tắt, các bộ định tuyến lân cận sẽ sớm tìm ra vấn đề và điều chỉnh các bảng định tuyến của chúng để khắc phục sự cố . Điều đó đã thay đổi thông tin định tuyến được tách ra cho tất cả các bộ định tuyến trên internet, nhưng vấn đề có thể được khắc phục trước khi tất cả các bộ định tuyến tìm hiểu về nó . Sau đó, tuyến đường được điều chỉnh lại được phổ biến trên toàn thế giới.
Một tùy chọn với lệnh, ra -jiên cho phép bạn chỉ định địa chỉ của các bộ định tuyến mà bạn muốn Traceroute đi theo như một đường dẫn. Tuy nhiên, để sử dụng thiết bị này, bạn sẽ phải biết đường dẫn truyền bị lỗi và bạn chỉ có thể lấy được thông tin đó bằng cách thực hiện Traceroute của cùng một đường dẫn.
Vì vậy, nếu bạn gặp kết nối chậm, lệnh Traceroute mà bạn phát hành sau đó có thể không tiết lộ điều gì đã xảy ra vì vào thời điểm đó. Sự cố gây ra độ trễ có thể đã được khắc phục và đường dẫn Traceroute của bạn có thể không giống với đường dẫn mà kết nối chậm được sử dụng.
Một vấn đề khác với Traceroute là nó cung cấp một màn hình thú vị trên đường dẫn mà việc truyền của bạn có thể sẽ đến một đích nhất định. Tuy nhiên, nó không cung cấp cho bạn bất kỳ công cụ nào để làm bất cứ điều gì với thông tin mà bạn nhận được . Không thể chỉ định đường dẫn và vì vậy nếu bạn thấy rằng một trong các bộ định tuyến trên internet có thời gian phản hồi chậm, tất cả những gì bạn có thể làm là biết bộ định tuyến nào đang làm chậm kết nối của bạn. Vì bộ định tuyến đó không thuộc về công ty của bạn và bạn không thể tăng tốc nó, bạn đã có được kiến thức thông qua Traceroute nhưng không thể hành động .
ICMP Ping
Ping sử dụng hai mã ICMP: 8 ( yêu cầu tiếng vang ) và 0 ( phản hồi tiếng vang ). Khi bạn đưa ra lệnh Ping tại dấu nhắc, chương trình Ping sẽ gửi gói ICMP chứa mã 8 trong trường Loại . Câu trả lời sẽ có Loại 0. Chương trình nhân khoảng cách giữa việc gửi gói yêu cầu tiếng vang và sự đến của câu trả lời. Vì vậy, bạn có thể nhận được gói thời gian chuyến đi khứ hồi của một gói đến đích và quay lại.
Gói yêu cầu echo không bình thường ở chỗ nó là gói ICMP duy nhất được gửi đi mà không bị lỗi. Vì vậy, Ping không phải giả lập một điều kiện lỗi để lấy lại thông báo ICMP. Ping có hai tùy chọn cho phép bạn chỉ định danh sách địa chỉ cho đường dẫn mà việc truyền sẽ đi. Đây là những món ăn -jáng , trong đó gợi ý một tuyến đường và kiểu -viêu , trong đó chỉ ra tuyến đường.
Cổng ICMP Ping
Bạn có thể tự hỏi cổng Ping nào sử dụng . Câu trả lời là: không có . Nếu một tiện ích cho phép bạn ping ping một cổng, thì đó không phải là lệnh Ping. Thay vào đó, tiện ích đó sử dụng gói TCP hoặc UDP để kiểm tra cổng. Thật ra, loại hàm được gọi là một” máy quét cổng” hay ‘ kiểm tra cổng .’
Ping không thể sử dụng các cổng vì đây là giao thức tồn tại ở mức thấp hơn Lớp vận chuyển , trong đó các cổng là một tính năng chính.
Phương pháp gần nhất với báo cáo cổng ICMP Ping có sẵn là gửi gói UDP đến một cổng cụ thể . Nếu cổng đó không hoạt động, việc truyền sẽ kích hoạt thông báo ICMP từ máy chủ loại 3 ( không thể truy cập đích ) loại 3 ( cổng đích không thể truy cập được ). Vì vậy, mặc dù có thể kích hoạt thông báo ICMP về một cổng, nhưng không thể sử dụng cơ chế Ping để gửi gói ICMP đến cổng đó ở vị trí đầu tiên như một yêu cầu tiếng vang. Nếu bạn xử lý số cổng vào địa chỉ IP trong lệnh Ping (tức là ping <địa chỉ IP>: <số cổng>), lệnh sẽ không khởi chạy mà thay vào đó sẽ trả về lỗi cú pháp.
Pathping
Pathping là một tiện ích được tích hợp trong hệ điều hành Windows và nó có sẵn trong tất cả các phiên bản kể từ Windows NT. Chương trình này là sự kết hợp của Ping và Traceroute , vì vậy nó khai thác ba loại thông báo ICMP . Đây là loại yêu cầu tiếng vang và loại tin nhắn trả lời tiếng vang (8 và 0) và thời gian vượt quá loại tin nhắn (11).
Như với cả Traceroute và Ping , có thể đưa ra một danh sách các địa chỉ cho một đường dẫn được đề xuất làm tham số cho lệnh và tiện ích sẽ cố gắng gửi một gói đến đích thông qua các địa chỉ đó.
Pathping tạo ra một báo cáo kết quả được định dạng hiển thị tuyến đường và thời gian khứ hồi cho mỗi bộ định tuyến. Nó sẽ gửi các yêu cầu ping lặp đi lặp lại cho mỗi bộ định tuyến trong đường dẫn thay vì chỉ liên tục liên lạc với đích. Đó là những gì Ping làm, hoặc chỉ đăng nhập mỗi bộ định tuyến trong đường dẫn một lần, đó là những gì Traceroute làm.
Pathping không linh hoạt như Ping hoặc Traceroute . Mặc dù mọi thiết bị trên internet đều có khả năng gửi tin nhắn ICMP, nhưng không phải thiết bị nào cũng có chức năng ICMP được kích hoạt . Một số chủ sở hữu bộ định tuyến và máy chủ cố ý tắt các chức năng ICMP như một sự bảo vệ chống lại sự tấn công của tin tặc.
Nếu một bộ định tuyến trung gian sẽ không sử dụng ICMP, Ping vẫn truy cập vào bộ định tuyến đó để kiểm tra đích. Nếu Traceroute gặp một bộ định tuyến sẽ không gửi các gói ICMP, nó chỉ cần chuyển sang bộ định tuyến tiếp theo, đưa ra một dòng dấu hoa thị cho bộ định tuyến không truyền thông. Trong tình huống tương tự, Pathping kết thúc các yêu cầu của mình tại bộ định tuyến đã tắt ICMP .
Tấn công smurf
Lý do chính khiến một số chủ sở hữu thiết bị tắt khả năng ICMP của thiết bị của họ là hệ thống có thể bị tin tặc sử dụng như một ống dẫn cho các cuộc tấn công. Cuộc tấn công Smurf là một trường hợp như vậy.
Cuộc tấn công Smurf sử dụng chiến lược phản xạ . Nó không tấn công trực tiếp vào mục tiêu, nhưng gọi các máy tính và bộ định tuyến khác để gửi tin nhắn cho nạn nhân. Kẻ tấn công tìm ra địa chỉ quảng bá được sử dụng trên mạng của nạn nhân và sau đó gửi yêu cầu tiếng vang ICMP ( Ping ). Mỗi thiết bị trên mạng sẽ gửi phản hồi tiếng vang trở lại bộ định tuyến lưu trữ địa chỉ IP phát.
Cuộc tấn công này chỉ hoạt động trên các mạng lớn . Nó có hiệu quả kích hoạt một cuộc tấn công từ chối dịch vụ phân tán (DDoS) từ bên trong mạng, trong khi hầu hết các cuộc tấn công được thực hiện thông qua các máy tính từ xa qua internet. Loại tấn công có thể được ngăn chặn bằng cách tắt các khả năng ICMP trên bộ định tuyến cổng hoặc bằng cách lọc chấp nhận các yêu cầu mang địa chỉ IP quảng bá của mạng trên các gói đến mạng từ một địa điểm từ xa.
Ping flood
Ping flood
à một chiến lược DDoS áp đảo máy tính mục tiêu với các yêu cầu tiếng vang ICMP. Một số triển khai Ping hoạt động tốt hơn so với khác. Ví dụ, cuộc tấn công sẽ hiệu quả hơn nếu lệnh Ping được khởi chạy với tùy chọn Lũ quét lũ . Tuy nhiên, tùy chọn này không khả dụng với tất cả các phiên bản Ping – chẳng hạn, đây không phải là tùy chọn hợp lệ trên phiên bản được nhúng vào Windows . Thực tế là tùy chọn lũ lụt không phải là vấn đề phổ biến đối với các tin tặc muốn điều khiển các máy tính từ xa bị nhiễm chương trình kiểm soát botnet để gửi các yêu cầu Ping. Vì tùy chọn lũ là rất hiếm, nên có khả năng hầu hết các thiết bị trong botnet sẽ không thể khởi động cuộc tấn công .
Chiến lược tấn công này sẽ có nhiều thành công hơn nếu tin tặc đảm bảo rằng tất cả các máy tính bị nhiễm đã sử dụng một nỗ lực để khởi động cuộc tấn công có tùy chọn lũ có sẵn trong các triển khai Ping của chúng. Một cách để đảm bảo rằng sẽ kiểm tra máy tính trước bất kỳ cuộc tấn công nào và phân loại một nhóm có dạng Ping phù hợp hoặc cài đặt Ping kích hoạt lũ trên tất cả các máy tính bị nhiễm virus botnet.
Cách phòng thủ đơn giản nhất chống lại lũ Ping là tắt các khả năng ICMP trên bộ định tuyến. Nếu bạn đang chạy một máy chủ web, thì tường lửa ứng dụng web sẽ bảo vệ bạn khỏi Ping flood
ICMP world
Hệ thống ICMP là một cơ chế rất đơn giản để báo cáo về lỗi truyền. Tuy nhiên, nó cũng là một trong những bộ công cụ mạnh nhất dành cho quản trị viên mạng . Tin vui là ICMP miễn phí và tự động khả dụng trên mọi thiết bị kết nối mạng. Tin xấu là ICMP có thể được tin tặc sử dụng để hình thành các cuộc tấn công hoặc thậm chí lén kết nối thông qua tường lửa.
Việc ICMP có thể được sử dụng một cách độc hại khuyến khích rất nhiều quản trị viên mạng không thích rủi ro để tắt hệ thống nhắn tin. Đây là một sự xấu hổ vì nó vô hiệu hóa rất nhiều tiện ích rất hữu ích được mô tả trong hướng dẫn này.
Nếu bạn chạy một mạng và đặc biệt là nếu bạn sở hữu một bộ định tuyến vượt qua lưu lượng truy cập internet, hãy cân nhắc sử dụng tường lửa và hệ thống phát hiện xâm nhập có trạng thái để chặn lạm dụng ICMP thay vì tắt hoàn toàn giao thức nhắn tin. Điều tra các cài đặt và tính năng phần sụn của bộ định tuyến của bạn để xem liệu nó có các quy trình giải quyết lạm dụng ICMP cho phép bạn tiếp tục vận hành ICMP trên thiết bị hay không.
Bạn có sử dụng các phương pháp ICMP để kiểm tra các kết nối của mình không? Bạn có tiện ích GUI dựa trên ICMP mà bạn sử dụng thường xuyên và có thể giới thiệu cho người khác không? Bạn đã tắt ICMP trên bộ định tuyến của mình để bảo vệ mạng của bạn chưa? Để lại một tin nhắn trong phần Bình luận bên dưới và chia sẻ kinh nghiệm của bạn.
Trên đây Aviosen đã giải thích cho bạn ICMP là gì? Hãy theo dõi trang để cập nhật thông tin nhé