Cách xem port đang mở trên server linux

Lệnh netstat -plnt hiển thị các port TCP đang mở ( hay còn gọi là listen hoặc lắng nghe) trên máy chủ Linux.

Lệnh này hữu ích để bạn xem trên máy chủ có những dịch vụ nào và đang listen ở port nào.

Demo sử dụng

netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:2211                0.0.0.0:*                   LISTEN      24591/sshd
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      22068/mysqld
tcp        0      0 127.0.0.1:11211             0.0.0.0:*                   LISTEN      676/memcached
tcp        0      0 127.0.0.1:1999              0.0.0.0:*                   LISTEN      1172/php-fpm
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1667/nginx
tcp        0      0 127.0.0.1:2001              0.0.0.0:*                   LISTEN      529/php-fpm
tcp        0      0 127.0.0.1:2002              0.0.0.0:*                   LISTEN      13025/php-fpm
tcp        0      0 127.0.0.1:2003              0.0.0.0:*                   LISTEN      13025/php-fpm
tcp        0      0 127.0.0.1:2004              0.0.0.0:*                   LISTEN      13025/php-fpm
tcp        0      0 127.0.0.1:2005              0.0.0.0:*                   LISTEN      13025/php-fpm
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      9106/vsftpd
tcp        0      0 127.0.0.1:2006              0.0.0.0:*                   LISTEN      1111/php-fpm
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      20784/master
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      1667/nginx
tcp        0      0 :::22.                      :::*                        LISTEN      24591/sshd
tcp        0      0 :::80                       :::*                        LISTEN      1667/nginx
tcp        0      0 ::1:25                      :::*                        LISTEN      20784/master
tcp        0      0 :::443                      :::*                        LISTEN      1667/nginx

Ngoài ra nếu bạn gõ lệnh netstat -pln (không có đối số t), hệ thống sẽ hiển thị tất cả UNIX sockets đang active tại phía server.

Thực tế sử dụng

  • Kiểm tra xem dịch vụ mà bạn vừa cấu hình đã hoạt động ở port mà bạn chỉ định hay chưa. Ví dụ sau khi bạn cài đặt nginx và đã chỉ định cho nó listen ở port 80, bạn dùng lệnh netstat -plnt để kiểm tra, nếu có dịch vụ nginx ở port 80 nghĩa là nginx đã hoạt động.

  • Kiểm tra toàn bộ danh sách các dịch vụ đang mở port trên máy chủ. Giúp bạn có thể cấu hình Firewall để mở port/ đóng port cho phù hợp.

    Trong bài này mình sẽ hướng dẫn các bạn 4 cách xem port nào đang ở trạng thái listening trong Linux Server, giúp bạn kiểm soát được các dịch vụ trên Server để đảm bảo an toàn hơn.

    Cách xem port đang mở trên server linux

    Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

    Trên server, mỗi port sẽ có 4 trạng thái gồm: open, filtered, closed, và unfiltered. Một port được cho là đang open nếu một ứng dụng nào đó trên máy đang lắng nghe (listening) các connection / package trên port đó.

    Nội dung bài viết này mình sẽ giải thích bốn cách để kiểm tra các cổng đang mở, và cũng chỉ cho bạn cách tìm ứng dụng nào đang lắng nghe trên cổng nào trong Linux.

    1. Sử dụng Netstat Command

    Netstat là một công cụ được sử dụng thường xuyên để truy vấn thông tin về hệ thống Linux Network. Bạn có thể sử dụng nó để tìm tất cả các cổng đang mở như sau:

    Bài viết này được đăng tại [free tuts .net]

    $ sudo netstat -ltup 

    Trong đó:

    • -l để yêu cầu liệt kê tất cả các listening sockets.
    • $ sudo netstat -lntup
      0 hiển thị tất cả TCP connection
    • $ sudo netstat -lntup
      1 hiển thị UDP connection
    • $ sudo netstat -lntup
      2 để in tên của ứng dụng đang lắng nghê trên port.

    Cách xem port đang mở trên server linux

    Để in thông tin là cá số (địa chỉ IP) thì ta sử dụng lệnh sau.

    $ sudo netstat -lntup

    Cách xem port đang mở trên server linux

    Ngoài ra, bạn cũng có thể sử dụng lệnh grep để xem ứng dụng nào đang nghe trên một port như sau:

    $ sudo netstat -lntup | grep "nginx"

    Cách xem port đang mở trên server linux

    Bạn cũng có thể chỉ định rõ là cần tìm trên cổng nào như sau.

    $ sudo netstat -lntup | grep ":80"

    Cách xem port đang mở trên server linux

    2. Sử dụng ss Command

    Lệnh ss là một công cụ hữu ích khác để hiển thị thông tin về sockets.

    Lệnh sau sẽ hiển thị tất cả các listening port cho các connect TCP và UDP ở dạng số.

    $ sudo ss -lntu

    Cách xem port đang mở trên server linux

    3. Sử dụng Nmap Command

    Nmap là một công cụ dùng để quét các network và port rất mạnh mẽ và phổ biến. Để cài đặt nmap thì hãy sử dụng các ứng dụng trình quản lý package mặc định sau:

    $ sudo apt install nmap  [On Debian/Ubuntu]
    $ sudo yum install nmap  [On CentOS/RHEL]
    $ sudo dnf install nmap  [On Fedora 22+]

    Để quét tất cả open/listening ports trong hệ thống Linux thì hãy chạy lệnh sau (có thể mất nhiều thời gian để hoàn thành).

    $ sudo nmap -n -PN -sT -sU -p- localhost

    4. Sử dụng lsof Command

    Công cụ cuối cùng mình muốn giới thiệu đến các bạn đó là lsof, đây là công cụ command line được sử dụng để liệt kê các file đang mở trong Linux. Vì mọi thứ đều là tệp trong Unix / Linux, tệp đang mở có thể là một luồng hoặc tệp mạng.

    Vì mọi thứ trong Unix / Linux đều được xem là file, và file đang open tức là nó đang được mở stream hoặc một network file.

    Để liệt kê tất cả các Internet và Network file thì hãy sử dụng tùy chọn

    $ sudo netstat -lntup
    3. Lưu ý rằng lệnh này hiển thị kết hợp tên dịch vụ và port.

    $ sudo lsof -i

    Cách xem port đang mở trên server linux

    Để tìm ứng dụng nào đang nghe trên một cổng cụ thể, hãy chạy lsof trong ví dụ này:

    $ sudo lsof -i :80

    Cách xem port đang mở trên server linux

    Trên là 4 cách để xem cổng nào đang ở trạng thái listening trên Linux Server. Bạn có thể sử dụng các cách này để quản lý VPS / Server, bật / tắt những cổng không cần thiết giúp hệ thống được an toàn hơn.