[Linux] Hướng dẫn sử dụng chương trình lệnh ‘ss’ trên Linux

146

Chương trình lệnh ss có khả năng cung cấp thông tin về network/socket kết nối hay hơn và nhanh hơn nhiều so với công cụ truyền thống ‘netstat‘. Lệnh ss cũng dần được thay thế công cụ ‘netstat‘ trên 1 số hệ thống OS mới. Lý do ví sao ‘ss‘ nhanh hơn ‘netstat‘ là do ‘netstat‘ phải đọc thông tin files trong thư mục /proc để thu thập dữ liệu hiển thị, cách tiếp cận này sẽ khó khăn nếu hệ thống có quá nhiều kết nối tới. Còn chương trình lệnh ss thì sẽ lấy dữ liệu trực tiếp từ kernel space nên nhanh hơn rất nhiều.

Vậy trong bài viết này, chúng ta cùng xem khả năng kiểm tra các kết nối network và thống kê socket.

Cấu trúc chương trình lệnh ss như sau :

hoặc

1. Liệt kê toàn bộ các kết nối

2. Liệt kê riêng các kết nối TCP/UDP/Unix connection

+ Liệt kê các kết nối TCP.
– Mặc định, nếu chỉ sử dụng option “-t” thì chương trình chỉ report các kết nối đang ở trạng thái “ESTABLISHED” hoặc “CONNECTED“. Nếu sử dụng option “-ta” thì sẽ liệt kê đầy đủ các trạng thái khác liên quan.

 
+ Liệt kê các kết nối UDP

 
+ Liệt kê các kết nối Unix socket

3. Liệt kê các port network đang được mở

– Các option “-ltn” hoặc “-lun” sẽ giúp liệt kê các port network tcp/udp đang được mở mà không cần phân giải tên port làm gì.
– Còn option “-l” thì sẽ liệt kê toàn bộ các port đang listen.

4. In thông tin thống kê tổng kết

– Sử dụng option “-s” .

5. Liệt kê các kết nối socket IPv4 hoặc IPv6

– Liệt các kết nối socket IPv4 với option ‘-f inet‘ hoặc ‘-4‘.

– Liệt các kết nối socket IPv6 với option ‘-f inet6‘ hoặc ‘-6‘.

6. Hiển thị thông tin bộ đếm thời gian của kết nối

– Với option ‘-o‘ thì thông tin thời gian tồn tại của từng kết nối sẽ được hiển thị kèm theo.

7. Hiển thị tên tiến trình và pid

– Để hiển thị thông tin tên tiến trình/pid đang sở hữu sử dụng kết nối tương ứng thì ta thêm option ‘-p‘.

8. Lọc các kết nối với trạng thái TCP

Chương trình ‘ss’ hỗ trợ tuyệt vời trong khả năng lọc thông số liên quan để hiển thị thông tin bạn mong muốn. ‘ss’ thực hiện chức năng lọc với cấu trúc lệnh như sau :

Sau đây sẽ là các ví dụ thể hiện khả năng lọc các kết nối socket dựa trên các trạng thái TCP.

Vd 8.1:
– Hiển thị toàn bộ kết nối TCP IPv4 ở trạng thái ‘established‘.

 
– Hiển thị toàn bộ kết nối TCP IPv4 ở trạng thái ‘time-wait‘.

 
– Danh sách trạng thái bạn có thể filter như sau :
+ established
+ syn-sent
+ syn-recv
+ fin-wait-1
+ fin-wait-2
+ time-wait
+ closed
+ close-wait
+ last-ack
+ closing
+ all – tất cả các trạng thái trên
+ connected – các trạng thái ngoại trừ trạng thái ‘listen’ và ‘closed’.
+ synchronized – các trạng thái ngoại trừ trạng thái ‘listen’ và ‘syn-sent’.

9. Lọc các kết nối dựa trên địa chỉ IP và Port

Ngoài khả năng lọc thông tin kết nối dựa trên trạng thái TCP thì ‘ss’ cũng hỗ trợ lọc thông tin dựa trên địa chỉ IP và port của kết nối socket. Sau đây là các ví dụ thể hiện điều đó.

Lưu ý:
– ‘source port‘ : là chỉ thông tin port của hệ thống bạn đang khởi chạy lệnh.
– ‘destination port‘ : là chỉ thông tin port của server remote.
– Thông tin port được bắt đầu bằng dấu ‘:‘.

Vd 9.1 :
– Liệt kê thông tin kết nối socket với source port HTTP hoặc HTTPS.

 
Vd 9.2:
– Lọc theo địa chỉ IP từ remote kết nối tới server.

– Lọc IP theo lớp network CIDR cũng ok luôn.

– Lọc IP kết hợp thông tin port.


Vd 9.3:
– Bạn có thể sử dụng những biểu thức điều kiện như sau :
+ > hoặc gt : nhiều hơn giá trị so sánh.
+ < hoặc lt : ít hơn giá trị so sánh.
+ <= hoặc le : ít hơn hoặc bằng giá trị so sánh.
+ => hoặc ge : nhiều hơn hoặc bằng giá trị so sánh.
+ == hoặc eq : bằng giá trị so sánh.
+ != hoặc ne : không bằng giá trị so sánh.

– Lọc theo port có giá trị lớn hơn 5000.

– Lọc theo port có giá trị bằng port 25

Như vậy là ta đã điểm qua các ví dụ về sử dụng chương trình lệnh ‘ss‘ rồi nhé.

Đánh giá sao từ người đọc :
[ Tổng : 2 - Trung bình: 5 ]

LEAVE A REPLY