Hướng dẫn này sẽ giải thích cách sử dụng lệnh netstat để theo dõi kết nối Internet và mạng của bạn trong Linux.
Netstat là một công cụ dòng lệnh Linux cực kỳ hữu ích cho phép bạn kiểm tra dịch vụ nào đang kết nối với một cổng trên máy của bạn. Sẽ rất hữu ích khi phân tích những gì đang diễn ra trên máy của bạn khi bạn đang đối mặt hoặc cố gắng ngăn chặn một cuộc tấn công vào máy. Bạn có thể tìm thấy thông tin như số lượng kết nối đang được thực hiện trên một cổng, địa chỉ IP mà các kết nối này bắt nguồn từ và nhiều hơn nữa. Netstat cung cấp hầu hết các bản phân phối của Linux, vì vậy nó đã được cài đặt sẵn trên máy của bạn.
Khởi chạy một thiết bị đầu cuối shell trên máy của bạn và chạy lệnh sau:
# netstat -ant Kết nối Internet
đang hoạt động (máy chủ và đã được thiết lập)
Proto Recv-Q Gửi-Q Địa chỉ cục bộ Trạng thái địa chỉ nước ngoài
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168. 1.240:63049 TIME_WAIT
tcp 0 0 ::ffff:192.168.0.19:80 ::ffff:192.168.1.240:62793 TIME_WAIT
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168.1.240:62795 TIME_WAIT
Đầu ra rất có thể sẽ rất dài. Tôi vừa đưa ra ảnh chụp nhanh của kết quả ở trên. Như bạn có thể thấy trong dữ liệu ở trên, có một kết nối được tạo từ 192.168.1.240 đến cổng 80 của máy chủ của tôi bằng giao thức TCP và kết nối ở trạng thái TIME_WAIT. Công cụ đầu ra mà bạn nhận được cho máy chủ của mình sẽ có thông tin về tất cả các cổng trên máy tính của bạn, không chỉ cổng 80.
Điều đầu tiên bạn nhận ra là một đầu ra lớn như thế này không được sử dụng quá nhiều. Vì vậy, hãy sắp xếp nó một chút. Dưới đây là một số thủ thuật tôi sử dụng để phân tích bản chất của các kết nối được thực hiện từ máy chủ của tôi. điều đầu tiên tôi làm là tìm ra những dịch vụ mà tôi muốn phân tích. Thông thường, cổng 80 là cổng mặc định để máy chủ web chạy và cổng 3306 là cổng mặc định để MySQL chạy trên đó. Vì vậy, tôi sử dụng truy vấn sau để xem điều gì đang xảy ra trên cổng 80:
# netstat -ant | grep 80
Một lần nữa tôi nhận được danh sách lớn các kết nối, nhỏ hơn so với đầu tiên, nhưng vẫn quá lớn để nắm bắt. Vì vậy, tôi sử dụng lệnh “wc -l” để đếm số dòng trong đầu ra để xem tôi có bao nhiêu kết nối trên cổng 80 của mình:
# netstat -ant | grep 80 | wc -l
625
Và sau đó tôi làm tương tự cho MySQL:
# netstat -ant | grep 3306 | wc -l
61
Bây giờ, nếu tôi muốn có một bức tranh toàn cảnh về những gì đang diễn ra trên máy chủ của mình xét về bản chất của các kết nối thì đây là những gì tôi làm:
# netstat -ant | awk ‘{in $ 6}’ | sắp xếp | uniq -c | sắp xếp -n
1 thành lập)
1 Nước ngoài
4 FIN_WAIT2
8 NGHE
16 CLOSE_WAIT
134 ĐÃ THÀNH LẬP
409 TIME_WAIT
Điều này cho tôi biết tôi có bao nhiêu kết nối thuộc các loại trạng thái khác nhau trên máy của mình. Tôi có thể chạy một lệnh tương tự để xem bức tranh toàn cảnh về trạng thái của tất cả các kết nối được thực hiện với máy chủ web của tôi:
netstat -ant | grep 80 | awk ‘{in $ 6}’ | sắp xếp | uniq -c | sắp xếp -n
1 FIN_WAIT1
4 LISTEN
6 FIN_WAIT2
17 CLOSE_WAIT
94 ĐÃ LẬP
534 TIME_WAIT
Bạn có thể thực hiện nhiều thứ phức tạp hơn bằng cách sử dụng Netstat cùng với các công cụ dòng lệnh Linux khác. Có thể hữu ích nếu bạn làm quen với một số thủ thuật để lấy loại thông tin này bằng Netstat, đặc biệt khi bạn đang đối mặt với một cuộc tấn công vào máy chủ của mình, vì bạn có thể sử dụng thông tin trong tường lửa của mình.