Trong các thuật ngữ về phần mềm máy tính, cụ thể hơn là tại tầng hệ điều hành, port là một cấu trúc logic – được dùng để xác định một process/application hoặc một loại dịch vụ mạng nào đó có đang được sử dụng hay không. Và mỗi dịch vụ mạng đang chạy trên một hệ thống Linux thường sẽ sử dụng một giao thức cụ thể (phổ biến nhất là TCP (Transmission Control Protocol) và UDP (User Datagram Protocol)) với số port nào đó cho việc giao tiếp với các process hoặc dịch vụ khác.
Trong bài viết này, mình sẽ chỉ cho bạn cách liệt kê và giám sát các port TCP và UDP theo thời gian thực với socket trên hệ thống Linux.
Liệt kê tất cả các port đang mở trên Linux
Để liệt kê các port mở trên hệ thống Linux, bạn có thể sử dụng lệnh netstat hoặc tiện ích ss như bên dưới mình sẽ giải thích.
Thường thì lệnh netstat được sử dụng để kiểm tra nhanh thông tin, còn lệnh ss được sử dụng thay thế netstat trong việc hiển thị số liệu thống kê về mạng chi tiết hơn.
$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8307 0.0.0.0:* LISTEN 3326/vmware-hostd
tcp 0 0 127.0.0.1:5939 0.0.0.0:* LISTEN 2081/teamviewerd
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 889/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 987/cupsd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3326/vmware-hostd
tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN 2805/vmware-authdla
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1446/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 1195/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1195/nginx: master
tcp6 0 0 :::1716 :::* LISTEN 6683/kdeconnectd
Hoặc
$ sudo ss -tulpn$ sudo ss -tulpn
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10151,fd=24))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=282))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=202))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=191))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=187))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=183))
udp UNCONN 0 0 224.0.0.251:5353 0.0.0.0:* users:(("chrome",pid=10113,fd=182))
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("avahi-daemon",pid=982,fd=12))
udp UNCONN 0 0 0.0.0.0:49047 0.0.0.0:* users:(("avahi-daemon",pid=982,fd=14))
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=889,fd=12))
udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* users:(("cups-browsed",pid=1108,fd=7))
udp UNCONN 0 0 *:1716 *:*
Đối với các lệnh ở trên có sử dụng các option có nghĩa là:
- -t: liệt kê các port TCP
- -u: liệt kê các port UDP
- -l: chỉ in ra các socket đang lắng nghe
- -n: hiển thị ra số port
- -p: hiển thị tên của process/program
Xem các port TCP và UDP theo thời gian thực
Tuy nhiên, để xem các port TCP và UDP theo thời gian thực, bạn có thể dụng các lệnh xem port như ở trên mình đã ví dụ và kết hợp với tiện tích watch như sau:
$ sudo watch netstat -tulpn
hoặc
$ sudo watch ss -tulpn
Để thoát ra ngoài, nhấn Ctrl+C.