Sử dụng lệnh "ss" Trên Linux
Lệnh ss trong linux có khả năng cung cấp thông tin về network/socket kết nối tới máy linux với ưu điểm đơn giản hơn và nhanh hơn nhiều so với công cụ truyền thống ‘netstat’.
Lý do “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ị, sẽ rất mất thời gian nếu dùng netstat trên một hệ thống có quá nhiều kết nối tới, còn ss sẽ lấy dữ liệu trực tiếp từ kernel space nên nhanh hơn rất nhiều.
Sau đây, Bizfly Cloud chia sẻ 13 câu lệnh "ss" trên hệ điều hành Linux:
1. List Established Connections
Theo mặc định, nếu chúng ta chạy lệnh ss mà không có tùy chọn nào khác, nó sẽ hiển thị một danh sách các non-listening sockets đã thiết lập các kết nối, ví dụ như các cổng TCP, UDP hoặc UNIX.
[root@centos7 ~]# ss | head -n 5
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 23740 * 23739
u_str ESTAB 0 0 * 23707 * 23706
u_str ESTAB 0 0 * 87021 * 88383
u_str ESTAB 0 0 * 17056 * 17112
Trong ví dụ trên, đầu ra giới hạn có hơn 500 dòng được in bằng cách chạy lệnh ss, vì vậy bạn có thể muốn piple nó vào gì đó như để đọc dễ hơn, hoặc bổ sung các tùy chọn vào phần cuối chỉ hiển thị những gì bạn đang theo dõi.
2. Show Listening Sockets
Thay vì liệt kê tất cả các sockets, có thể sử dụng tùy chọn -l để liệt kê cụ thể các socket đang lắng nghe kết nối.
[root@centos7 ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 2 *:kerberos-adm *:*
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 5 *:kpasswd *:*
LISTEN 0 10 192.168.1.14:domain *:*
LISTEN 0 10 127.0.0.1:domain *:*
LISTEN 0 5 192.168.122.1:domain *:*
LISTEN 0 128 *:ssh *:*
Trong ví dụ này đã sử dụng tùy chọn -t để chỉ liệt kê TCP. Trong các ví dụ sau này, bạn sẽ thấy sự kết hợp nhiều tùy chọn như thế này để nhanh chóng lọc xuống những gì đang theo dõi.
3. Show Processes
Chúng ta có thể in ra quá trình hoặc số PID sở hữu một socket với tùy chọn -p.
[root@centos7 ~]# ss -pl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 :::http :::*
Trong ví dụ trên chỉ liệt kê một kết quả duy nhất, không có thêm bất kỳ tùy chọn nào thì toàn bộ kết xuất của ss in ra trên 500 dòng tới stdout. Dù vậy, ta có thể thấy process ID của các chương trình Apache khác nhau đang chạy trên server này.
4. Không xử lý service name
Theo mặc định ss sẽ chỉ giải quyết số cổng - port number như chúng ta đã thấy trước đây, ví dụ trong dòng dưới đây chúng ta có thể thấy 192.168.1.14:ssh trong đó ssh được liệt kê là cổng cục bộ.
[root@centos7 ~]# ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 64 192.168.1.14:ssh 192.168.1.191:57091
Tuy nhiên, nếu chỉ định tùy chọn -n, độ phân giải này sẽ không xảy ra và thay vào đó ta sẽ thấy số cổng thay vì tên dịch vụ.
[root@centos7 ~]# ss -n
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.1.14:22 192.168.1.191:57091
Lưu ý :22 giờ được hiển thị thay vì: ssh vì đã tắt tất cả độ phân giải tên của tên máy chủ và cổng. Bạn có thể kiểm tra tệp / etc / services để xem danh sách đầy đủ các cổng nào map tới các dịch vụ nào.
5. Xử lý số địa chỉ / cổng
Chúng ta cũng có thể làm điều ngược lại và xử lý cả địa chỉ IP và số cổng với tùy chọn -r. Và như vậy, bây giờ ta có thể thấy hostname của máy chủ 192.168.1.14 được liệt kê.
[root@centos7 ~]# ss -r
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 64 centos7.example.com:ssh 192.168.1.191:57091
6. IPv4 Sockets
Ta có thể sử dụng tùy chọn -4 để chỉ hiển thị thông tin tương ứng với các IPv4 socket. Trong ví dụ dưới đây, cũng sử dụng tùy chọn -l để liệt kê tất cả listen trên địa chỉ IPv4.
[root@centos7 ~]# ss -l4
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:*
udp UNCONN 0 0 192.168.122.1:domain *:*
udp UNCONN 0 0 *%virbr0:bootps *:*
udp UNCONN 0 0 *:bootpc *:*
tcp LISTEN 0 128 *:sunrpc *:*
tcp LISTEN 0 5 192.168.122.1:domain *:*
tcp LISTEN 0 128 *:ssh *:*
tcp LISTEN 0 128 127.0.0.1:ipp *:*
tcp LISTEN 0 100 127.0.0.1:smtp *:*
7. IPv6 Sockets
Tương tự, chúng tôi có thể sử dụng tùy chọn -6 để chỉ hiển thị thông tin liên quan đến IPv6 socket. Trong ví dụ dưới đây, chúng ta cũng sử dụng tùy chọn -l để liệt kê tất cả listen trên địa chỉ IPv6.
[root@centos7 ~]# ss -l6
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 :::ipv6-icmp :::*
udp UNCONN 0 0 :::22834 :::*
udp UNCONN 0 0 ::1:323 :::*
tcp LISTEN 0 128 :::sunrpc :::*
tcp LISTEN 0 128 :::http :::*
tcp LISTEN 0 128 :::ssh :::*
tcp LISTEN 0 128 ::1:ipp :::*
tcp LISTEN 0 100 ::1:smtp :::*
8. TCP Only
Tùy chọn -t có thể được sử dụng để chỉ hiển thị các cổng TCP. Khi kết hợp với -l để chỉ in ra các listening socket, ta có thể thấy mọi thứ listen trên TCP.
[root@centos7 ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 5 192.168.122.1:domain *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:ipp *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 :::http :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 128 ::1:ipp :::*
LISTEN 0 100 ::1:smtp :::*
9. UDP Only
Tùy chọn -u có thể được sử dụng để chỉ hiển thị các ổ cắm UDP. Vì UDP là giao thức ít kết nối, chỉ cần chạy với tùy chọn -u sẽ không hiển thị đầu ra. Thay vào đó, chúng ta có thể kết hợp nó với tùy chọn -a hoặc -l để xem tất cả các listening UDP socket, như hiển thị ở bên dưới.
[root@centos7 ~]# ss -ul
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:mdns *:*
UNCONN 0 0 *:kpasswd *:*
UNCONN 0 0 *:839 *:*
UNCONN 0 0 *:36812 *:*
UNCONN 0 0 192.168.122.1:domain *:*
UNCONN 0 0 192.168.1.14:domain *:*
10. Unix Sockets
Tùy chọn -x chỉ có thể được sử dụng để hiển thị các unix socket.
[root@centos7 ~]# ss -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 @/tmp/.X11-unix/X0 27818 * 27817
u_str ESTAB 0 0 @/tmp/.X11-unix/X0 26656 * 26655
u_str ESTAB 0 0 * 28344 * 26607
u_str ESTAB 0 0 * 24704 * 24705
u_str ESTAB 0 0 @/tmp/.X11-unix/X0 25195 * 24086
u_str ESTAB 0 0 @/tmp/dbus-CRqRiw6V 28388 * 28693
...
11. Hiển thị tất cả thông tin
tùy chọn -a hiển thị cả listening sockets và non-listening sockets. Trong trường hợp của TCP, điều này có nghĩa là các kết nối được thiết lập. Tùy chọn này hữu ích khi kết hợp với những tùy chọn khác, ví dụ để hiển thị tất cả UDP socket, ta có thể thêm -a, như mặc định chỉ với tùy chọn –u.
[root@centos7 ~]# ss -u
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 192.168.1.14:56658 129.250.35.251:ntp
[root@centos7 ~]# ss -ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:mdns *:*
UNCONN 0 0 127.0.0.1:323 *:*
ESTAB 0 0 192.168.1.14:56658 129.250.35.251:ntp
UNCONN 0 0 *:21014 *:*
UNCONN 0 0 *:60009 *:*
UNCONN 0 0 192.168.122.1:domain *:*
UNCONN 0 0 *%virbr0:bootps *:*
UNCONN 0 0 *:bootpc *:*
UNCONN 0 0 ::1:323 :::*
UNCONN 0 0 :::43209 :::*
12. Hiển thị mức sử dụng bộ nhớ socket
Tùy chọn -m có thể được sử dụng để hiển thị lượng bộ nhớ mà mỗi socket đang sử dụng.
[root@centos7 ~]# ss -ltm
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN 0 5 192.168.122.1:domain *:*
skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN 0 128 *:ssh *:*
skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN 0 128 127.0.0.1:ipp *:*
skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN 0 100 127.0.0.1:smtp *:*
skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
13. Hiển thị thông tin TCP nội bộ
Có thể yêu cầu thêm thông tin TCP nội bộ với tùy chọn -i info.
[root@centos7 ~]# ss -lti
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620
LISTEN 0 5 192.168.122.1:domain *:*
cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620
LISTEN 0 128 *:ssh *:*
cubic rto:1000 mss:536 cwnd:10 segs_in:2 lastsnd:373620 lastrcv:373620 lastack:373620
LISTEN 0 128 127.0.0.1:ipp *:*
cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620
LISTEN 0 100 127.0.0.1:smtp *:*
cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620
Bên dưới mỗi listening socket, chúng ta có thể xem thêm thông tin. Lưu ý rằng tùy chọn -i không hoạt động với UDP, nếu bạn chỉ định -u thay vì -t thì thông tin bổ sung này sẽ không hiện diện.
Theo Bizfly Cloud chia sẻ
>> Tham khảo thêm: Các kỹ thuật hữu ích khi sử dụng SSH