Lệnh ss là một công cụ dòng lệnh mạnh mẽ thuộc gói iproute2, được thiết kế chuyên biệt để hiển thị chi tiết các kết nối mạng, socket và kiểm tra port đang mở. Nhờ cơ chế giao tiếp trực tiếp với kernel, lệnh ss đem lại tốc độ truy vấn truy xuất thông tin cao hơn hẳn các công cụ phân tích mạng cũ. Bài viết này cung cấp cho bạn cú pháp chuẩn xác, các tuỳ chọn cốt lõi và hướng dẫn xử lý sự cố mạng thực tế trên hạ tầng của InterData.
NỘI DUNG BÀI VIẾT
- 1. Lệnh ss là gì? Tại sao nên dùng thay thế netstat trên Linux?
- 2. So sánh ss và netstat: Lựa chọn nào tốt hơn cho server?
- 3. Các tùy chọn (flag) cốt lõi trong lệnh ss cần nắm vững
- 4. Use case 1: Lệnh ss kiểm tra port đang mở trên VPS (Web, Database, SSH)
- 5. Use case 2: Lệnh ss kiểm tra kết nối mạng và lọc theo trạng thái TCP
- 6. Bảo mật nâng cao: Quản lý kết nối mạng sau khi audit port
- 7. Troubleshooting: Các lỗi thường gặp khi sử dụng lệnh ss
1. Lệnh ss là gì? Tại sao nên dùng thay thế netstat trên Linux?
Lệnh ss (viết tắt của socket statistics) là công cụ trên hệ điều hành Linux dùng để giám sát kết nối mạng, TCP/UDP socket và liệt kê các port đang lắng nghe. Khác với netstat phân tích file tĩnh, lệnh ss truy vấn trực tiếp từ kernel space qua giao thức netlink, mang lại tốc độ thống kê tính bằng mili-giây.
Khi bạn vận hành một máy chủ VPS, việc xác định chính xác tiến trình nào đang chiếm dụng cổng mạng (port) là kỹ năng bắt buộc. Các phiên bản phân phối hiện đại đã ngừng hỗ trợ gói net-tools (chứa netstat) và chuyển sang sử dụng bộ công cụ iproute2 (chứa ss) làm tiêu chuẩn mặc định.
Điều này đồng nghĩa với việc am hiểu lệnh ss sẽ giúp bạn chẩn đoán các sự cố rớt mạng, tràn kết nối hoặc phát hiện các tiến trình backdoor chiếm port trái phép một cách nhanh chóng.

2. So sánh ss và netstat: Lựa chọn nào tốt hơn cho server?
Nhiều quản trị viên lâu năm vẫn quen gõ netstat để xem port. Tuy nhiên, dù bạn dùng CentOS, Ubuntu hay Debian, công cụ ss hiện đã được cài đặt mặc định và có kiến trúc xử lý vượt trội hơn. Dưới đây là bảng phân tích kỹ thuật giữa hai lệnh này:
| Tiêu chí phân tích | Lệnh ss (Socket Statistics) | Lệnh netstat (Net-tools) |
|---|---|---|
| Cơ chế truy xuất dữ liệu | Dùng giao thức NETLINK để nhận API thẳng từ Kernel. |
Đọc tuần tự file text hệ thống /proc/net/tcp. |
| Tốc độ xử lý (Performance) | Phản hồi tức thì ngay cả khi server bị nghẽn (có hàng chục nghìn kết nối). | Gây treo terminal hoặc ngốn CPU khi parse dữ liệu từ lượng kết nối lớn. |
| Chi tiết cấu trúc mạng | Hiển thị sâu các số liệu TCP internal (timer, congestion window). | Chỉ liệt kê địa chỉ, trạng thái cổng mạng cơ bản. |
| Tình trạng hỗ trợ (Support) | Được duy trì và cập nhật liên tục bởi cộng đồng Linux. | Đã bị deprecated (ngừng phát triển) trên nhiều distro mới. |
3. Các tùy chọn (flag) cốt lõi trong lệnh ss cần nắm vững
Giống như mọi công cụ dòng lệnh khác, sức mạnh của ss nằm ở các cờ (flag) lọc dữ liệu. Nếu bạn gõ ss mà không đi kèm cờ nào, hệ thống sẽ in ra hàng nghìn dòng kết nối đang hoạt động (kể cả các socket UNIX nội bộ). Để giới hạn phạm vi tìm kiếm, hãy kết hợp các tham số sau:
-t(–tcp): Chỉ hiển thị các socket thuộc giao thức TCP.-u(–udp): Chỉ hiển thị các socket thuộc giao thức UDP.-l(–listening): Lọc và chỉ hiện các port đang ở trạng thái LISTEN (chờ tiếp nhận kết nối).-n(–numeric): Bỏ qua bước phân giải tên miền (DNS resolution) và tên dịch vụ. Kết quả trả về IP và số port dạng gốc, giúp câu lệnh chạy không bị delay.-p(–processes): Bổ sung cột Process ID (PID) và tên phần mềm đang mở port đó. Cờ này yêu cầu quyềnroothoặcsudo.-s(–summary): Hiển thị thống kê tổng quan (số lượng socket hiện tại phân theo TCP, UDP, RAW).
Lệnh ss -tuln có nghĩa gì? Đây là chuỗi cờ được dùng phổ biến nhất trên mọi server. Khi bạn gộp -t (TCP), -u (UDP), -l (Listen) và -n (Numeric) lại, hệ thống sẽ trả về chính xác danh sách các cổng mạng đang trực tiếp mở để lắng nghe thế giới bên ngoài mà không phân giải DNS rườm rà.
4. Use case 1: Lệnh ss kiểm tra port đang mở trên VPS (Web, Database, SSH)
Quá trình triển khai dịch vụ luôn đi kèm với việc xác minh cổng mạng. Dưới đây là các kịch bản thao tác lệnh thực tế.
Kiểm tra Web Server (Nginx / Apache) đang chạy port nào
Ngay sau quá trình cài đặt LEMP stack, bạn cần đảm bảo Nginx đã binding thành công lên port 80 (HTTP) và 443 (HTTPS). Sử dụng cờ -tulnp kết hợp grep để trích xuất dòng chứa Nginx:
sudo ss -tulnp | grep nginx
Cấu trúc kết quả trả về sẽ hiển thị đầy đủ thông tin:
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=1234,fd=7))
Trong đó, cột Local Address:Port ghi nhận 0.0.0.0:80 cho biết Web Server đang cho phép mọi IP truy cập từ bên ngoài vào port 80. Cột cuối cùng xác nhận PID của Nginx là 1234.

Kiểm tra dịch vụ quản trị từ xa (SSH)
Việc thay đổi port mặc định của giao thức SSH (Secure Shell) là thói quen bảo mật cơ bản. Trước khi thay đổi rule firewall, bạn phải xác minh tiến trình sshd đã nhận diện port mới bằng cách chạy lệnh:
sudo ss -tulnp | grep sshd

Theo hướng dẫn sử dụng VPS chuẩn, mọi dịch vụ hệ thống khi mới khởi chạy lại (restart) đều cần được audit lại port. Đặc biệt đối với các hệ thống tài nguyên hạn chế như cấu hình VPS 1 Core 1GB RAM, chạy câu lệnh ss tiêu tốn cực ít bộ nhớ RAM so với việc duy trì các control panel giám sát nặng nề.
Mẹo cho Sysadmin
Đừng vội thanh toán VPS/Cloud nếu chưa check ưu đãi!
Hãy là một nhà quản trị thông thái! Ghé ngay Canh Me để “bỏ túi” các ưu đãi tiết kiệm độc quyền (lên tới 40% – 50%) hoặc ưu đãi tặng thêm tháng từ InterData. Khuyến mãi tốt thường hết lượt dùng rất nhanh!
5. Use case 2: Lệnh ss kiểm tra kết nối mạng và lọc theo trạng thái TCP
Các port LISTEN mới chỉ cho biết dịch vụ đang mở cửa. Để xem có bao nhiêu client đang trực tiếp trao đổi dữ liệu, bạn cần lọc kết nối theo trạng thái (State). Các trạng thái TCP quan trọng bao gồm ESTABLISHED (đang kết nối), TIME-WAIT (chờ đóng kết nối), và SYN-RECV (đang bắt tay nhận kết nối).
Lọc các kết nối đang duy trì (ESTABLISHED)
Để liệt kê toàn bộ các địa chỉ IP đang thực sự tải dữ liệu từ máy chủ web của bạn qua port 443, hãy dùng cú pháp state kết hợp bộ lọc destination port (dport):
ss -nt state established '( sport = :443 )'

Kiểm tra tổng lượng kết nối bằng ss -s
Thay vì đếm thủ công hàng nghìn dòng log, bạn có thể gọi cờ -s để lệnh ss tổng hợp lại số lượng socket mà kernel đang xử lý. Dữ liệu này giúp sysadmin biết được có dấu hiệu nghẽn cổ chai mạng hay không.
ss -s
Total: 154
TCP: 320 (estab 45, closed 205, orphaned 0, timewait 180)
Transport Total IP IPv6
RAW 1 0 1
UDP 12 9 3
TCP 115 100 15

6. Bảo mật nâng cao: Quản lý kết nối mạng sau khi audit port
Tìm ra port lạ bằng lệnh ss chỉ là bước chuẩn đoán đầu tiên. Nếu phát hiện một tiến trình không rõ nguồn gốc (ví dụ: malware khai thác lỗ hổng) đang mở cổng mạng 4444, bạn cần áp dụng các nguyên tắc bảo mật VPS Linux ngay lập tức.
- Cô lập và ngắt tiến trình: Sử dụng lệnh
kill -9 <PID>để chấm dứt ngay lập tức process đang chiếm dụng port. Mã PID này được cung cấp bởi cờ-pcủa ss. - Chặn trên Firewall: Kích hoạt UFW hoặc iptables chặn toàn bộ giao tiếp ra vào ở port nghi ngờ. Kết hợp với hướng dẫn bảo mật SSH VPS để vô hiệu hóa đăng nhập bằng mật khẩu, chỉ cho phép dùng SSH Key nhằm tránh bị brute-force tái thâm nhập.
- Audit định kỳ: Tham khảo thêm các chiến lược kiểm tra port trên VPS định kỳ bằng cronjob kết hợp ss để theo dõi biến động mạng.
7. Troubleshooting: Các lỗi thường gặp khi sử dụng lệnh ss
Trong quá trình chẩn đoán sự cố mạng, bạn có thể gặp một vài cảnh báo về quyền hạn hoặc quá tải terminal. Dưới đây là cách gỡ lỗi nhanh.
Lỗi 1: Báo lỗi “ss: command not found”
Triệu chứng: Gõ lệnh ss trả về lỗi hệ thống không nhận diện được lệnh.
Nguyên nhân: Bản phân phối Linux tối giản (minimal) chưa cài sẵn gói mạng mặc định.
Cách xử lý: Cài đặt lại gói iproute2. Trên Ubuntu/Debian chạy: sudo apt install iproute2 -y. Trên CentOS/RHEL chạy: sudo dnf install iproute -y.
Lỗi 2: Cột Process / PID bị trống hoặc không hiển thị
Triệu chứng: Bạn đã thêm cờ -p nhưng cột PID cuối cùng hoàn toàn trống.
Nguyên nhân: Do kernel bảo mật, tài khoản user thông thường không được phép xem tiến trình do các tài khoản khác tạo ra.
Cách xử lý: Đặt sudo trước lệnh để nâng quyền. Chạy: sudo ss -tulnp.
Lỗi 3: Terminal bị trôi và treo khi server bị tấn công
Triệu chứng: Khi chạy ss lúc server có quá nhiều traffic (hoặc DDoS HTTP), hàng chục nghìn dòng đổ xuống terminal liên tục gây treo phần mềm SSH.
Cách xử lý: Không hiển thị trực tiếp mà dùng awk kết hợp sort để nhóm và đếm số lượng kết nối đang mở theo từng địa chỉ IP. Lệnh sau sẽ in ra top 10 IP đang kết nối nhiều nhất:
ss -nt state established | awk '{print $5}' | sed 's/:[^:]*$//' | sort | uniq -c | sort -nr | head -n 10
Câu Hỏi Thường Gặp về lệnh ss
1. Lệnh ss là gì?
Lệnh ss (socket statistics) là một công cụ phân tích mạng trên Linux dùng để kiểm tra chi tiết các cổng mạng, trạng thái socket và luồng dữ liệu kết nối. Lệnh này giao tiếp trực tiếp với kernel space, đảm bảo dữ liệu phản hồi luôn chính xác theo thời gian thực.
2. Lệnh ss khác gì netstat?
Cả hai công cụ đều kiểm tra port, nhưng ss thuộc bộ iproute2 chuẩn mới, truy vấn tốc độ cao qua giao thức NETLINK. Trong khi đó, netstat (thuộc net-tools) đã lỗi thời, đọc dữ liệu khá chậm từ file cấu hình tĩnh hệ thống, dễ gây thắt nút cổ chai CPU.
3. Lệnh ss -tuln có nghĩa gì?
Tham số -tuln bao gồm cờ TCP (-t), UDP (-u), lắng nghe Listen (-l) và dạng số Numeric (-n). Việc ghép các cờ này giúp sysadmin tra cứu danh sách toàn bộ cổng mạng đang mở trên hệ thống dưới dạng định dạng số nguyên, ngăn ngừa thời gian chờ phân giải DNS.
4. Cách tìm process đang chạy trên một port bằng ss?
Để xác định process ID đang chiếm cổng mạng, bạn phải dùng cờ -p kèm đặc quyền cao nhất. Cú pháp thực thi: sudo ss -tulnp | grep :80. Hệ thống sẽ trích xuất cột cuối cùng chứa tên tiến trình và ID quy chiếu.
5. Có cần quyền root để chạy lệnh ss không?
Người dùng bình thường vẫn có thể gọi lệnh ss để thống kê kết nối cá nhân. Nhưng để tra cứu chéo process ID do hệ thống sở hữu hoặc do user khác tạo ra qua cờ -p, bạn bắt buộc phải có phân quyền sudo hoặc chạy trực tiếp trên tài khoản root.
Trong môi trường Linux hiện đại, sử dụng thành thạo lệnh ss là kỹ năng không thể thiếu để chẩn đoán chính xác tình trạng mạng và bảo vệ hạ tầng máy chủ. Tốc độ đọc trực tiếp từ kernel và khả năng lọc sâu theo trạng thái TCP giúp công cụ này vượt trội hoàn toàn so với netstat truyền thống.
Ngay lúc này, hãy mở terminal kết nối vào VPS của bạn, thực hành chuỗi cờ ss -tulnp để rà soát toàn bộ các port đang mở và áp dụng ngay các giải pháp firewall ngăn ngừa rủi ro rò rỉ dữ liệu.
Nội dung mang tính tham khảo. Lệnh, cú pháp, đường dẫn file và tùy chọn cấu hình có thể thay đổi theo phiên bản hệ điều hành, phiên bản phần mềm và môi trường cụ thể. Nên kiểm thử, sao lưu dữ liệu và đánh giá rủi ro trước khi áp dụng lên server production.
