Hệ điều hành (OS), Linux

Cách Quản lý các kết nối đến máy chủ Linux với lệnh netstat, ss và lsof 

Tại sao cần quản lý các kết nối đến máy chủ Linux?
Việc giám sát các kết nối mạng đến máy chủ Linux là một trong những nhiệm vụ quan trọng nhất của system admin. Việc này giúp kiểm soát bảo mật máy chủ, phát hiện các kết nối bất thường và tối ưu hóa hiệu suất hệ thống Linux.

Bài viết này sẽ cung cấp các bạn hướng dẫn chi tiết về 3 lệnh mạnh mẽ nhất để quản lý các kết nối mạng:

  • netstat
  • ss
  • lsof

Chúng ta sẽ tìm hiểu:

  • Các trường hợp sử dụng thực tế.
  • Lệnh và tùy chọn của các lệnh.
  • Cách phân tích dữ liệu đầu ra của mỗi lệnh.

1. Lệnh netstat: Quản lý kết nối mạng truyền thống

1.1. netstat là gì?

netstat (network statistics) là công cụ dòng lệnh hiển thị thông tin về các kết nối mạng, bảng định tuyến, thống kê network interface, và các socket mở.

1.2. Lệnh cơ bản của netstat

Lệnh Chức năng
netstat -a Hiển thị tất cả các kết nối mạng
netstat -t Hiển thị các kết nối TCP
netstat -u Hiển thị các kết nối UDP
netstat -p Hiển thị tiến trình và PID liên quan
netstat -lt Liệt kê các kết nối TCP đang lắng nghe
netstat -lu Liệt kê các kết nối UDP đang lắng nghe
netstat -s Hiển thị thống kê mạng
netstat -r Hiển thị bảng định tuyến

1.3. Ví dụ thực tế với netstat

1. Hiển thị tất cả các kết nối mạng đang hoạt động

netstat -a

Giải thích: Hiển thị danh sách tất cả các kết nối TCP và UDP đang hoạt động, bao gồm cả các socket lắng nghe.

2. Hiển thị thông tin về các kết nối TCP đang lắng nghe

netstat -lt

Giải thích: Hiển thị thông tin về tất cả các cổng TCP đang lắng nghe trên máy chủ.

3. Hiển thị PID và tên tiến trình của các kết nối

netstat -p

Giải thích: Giúp xác định chính xác ứng dụng nào đang sử dụng một cổng cụ thể.

4. Để kiểm tra trạng thái của tất cả các network interface và các thông tin liên quan (như số lượng gói tin đã nhận, đã gửi, bị mất, lỗi, v.v.), bạn có thể sử dụng lệnh:

netstat -i

2. Lệnh ss: Công cụ mạnh mẽ thay thế netstat

2.1. ss là gì?

ss (socket statistics) là phiên bản nâng cấp của netstat, có khả năng hiển thị thông tin về các socket nhanh hơn, chi tiết hơn và không yêu cầu quyền root.

2.2. Lệnh cơ bản của ss

Lệnh Chức năng
ss -t Hiển thị các kết nối TCP
ss -u Hiển thị các kết nối UDP
ss -l Liệt kê các kết nối đang lắng nghe
ss -p Hiển thị thông tin tiến trình (PID)
ss -n Hiển thị địa chỉ IP dạng số thay vì tên
ss -s Thống kê tóm tắt về các kết nối
ss -t state established Hiển thị các kết nối TCP đã thiết lập

2.3. Ví dụ thực tế với ss

1. Hiển thị tất cả các kết nối TCP đang hoạt động

ss -t

2. Hiển thị tất cả các kết nối UDP đang hoạt động

ss -u

3. Hiển thị các socket đang lắng nghe

ss -l

Giải thích: Liệt kê tất cả các cổng mà máy chủ đang lắng nghe.

4. Hiển thị các socket với thông tin tiến trình liên quan

ss -p

3. Lệnh lsof: Xem các files và socket đang mở bởi các tiến trình

3.1. lsof là gì?

lsof (list open files) là công cụ hiển thị danh sách các files và socket đang được mở bởi các tiến trình trên máy chủ.

3.2. Lệnh cơ bản của lsof

Lệnh Chức năng
lsof -i Liệt kê tất cả các kết nối mạng
lsof -i :80 Hiển thị các kết nối trên cổng 80
lsof -i tcp Liệt kê các kết nối TCP
lsof -i udp Liệt kê các kết nối UDP
lsof -p <PID> Hiển thị các tệp và socket của một PID
lsof +D /var/log Liệt kê các files trong thư mục /var/log

3.3. Ví dụ thực tế với lsof

1. Hiển thị các kết nối đến cổng 80

lsof -i :80

Giải thích: Hiển thị danh sách tất cả các kết nối đến cổng HTTP (80) đang được sử dụng bởi các tiến trình.

2. Liệt kê tất cả các kết nối TCP

lsof -i tcp

Giải thích: Hiển thị các kết nối TCP đang mở.

3. Hiển thị tất cả các kết nối của một tiến trình cụ thể

lsof -p <PID>

Giải thích: Hiển thị các kết nối của một PID cụ thể.

Khi nào sử dụng netstat, ss và lsof?

Tình huống Sử dụng lệnh nào?
Liệt kê tất cả các kết nối ss -t hoặc netstat -a
Xem thông tin về cổng cụ thể lsof -i :80
Xem PID của tiến trình netstat -p hoặc ss -p
Liệt kê các socket đang lắng nghe ss -l hoặc netstat -lt
Xác định tệp nào đang mở lsof
Xem thống kê giao diện mạng netstat -i hoặc ss -s

Kết luận

  1. netstat: Công cụ cơ bản, dễ sử dụng để liệt kê các kết nối mạng.
  2. ss: Công cụ nhanh hơn, mạnh mẽ hơn netstat, với nhiều tính năng tiên tiến hơn.
  3. lsof: Công cụ mạnh mẽ nhất để hiển thị các kết nối mạng và các tệp được mở bởi các tiến trình.

Bằng cách thành thạo các lệnh này, bạn có thể:

  • Xác định tiến trình nào đang sử dụng cổng nào.
  • Phát hiện kết nối bất thường.
  • Giám sát lưu lượng mạng.

Bạn đã sẵn sàng sử dụng các lệnh này trong máy chủ Linux của bạn chưa?
Bạn hãy làm thực hành với các ví dụ trong bài viết này. Nếu bạn gặp khó khăn, hãy để lại bình luận để được hỗ trợ, nếu bạn thấy bài viết hữu ích, hãy chia sẻ bài viết với mọi người nhé!

 

 

 

 

 

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *