Kiểm tra port đang mở trên máy chủ Linux

Chào các bạn, hẳn khi bạn đang quản lý một server Linux như VPS/Cloud Server hoặc cả 1 con máy chủ vật lý. Thì bạn nghiễm nhiên rất muốn kiểm tra theo dõi xem các cổng kết nối nào trên hệ thống tương ứng dịch vụ chương trình nào đang lắng nghe hoạt động. Vậy “cuongquach.com” sẽ cung cấp cho các bạn 5 cách để kiểm tra port đang mở trên máy chủ Linux như CentOS hay Ubuntu nhé.

Một số lệnh được sử dụng trong quá trình kiểm tra port đang mở trên Linux :

  • netstat
  • ss
  • telnet
  • nmap

Kiểm tra file /etc/services

File này sẽ quy định việc chuyển đổi thông tin cổng kết nối và giao thức liên quan tương ứng của cổng đó trên hệ thống Linux. Nên nếu khi sử dụng các chương trình lệnh quản lý mạng, mà chương trình không tự map tên giao thức với port thì chứng tỏ không có thông tin port-giao thức được khai báo trong file /etc/services.

Bên cạnh đó cũng cần lưu ý, file này chỉ chứa thông tin khai báo cho các port thông dụng (well-known port) không liên quan đến việc port đó có đang mở, bị khoá hay tình trạng như thế nào trên hệ thống.

# cat /etc/services  | grep ^http | grep 80
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
http            80/sctp                         # HyperText Transfer Protocol
http-mgmt       280/tcp                 # http-mgmt
http-mgmt       280/udp                 # http-mgmt
httpx           4180/tcp                # HTTPX
httpx           4180/udp                # HTTPX

Tham khảo thêm: 
– Các port dịch vụ thông dụng trên Internet

1. Sử dụng chương trình lệnh “NETSTAT”

Netstat” là viết tắt của từ Network Statistic, một chương trình có trên cả hệ điều hành Windows và Linux. Chương trình netstat sẽ giúp bạn thống kê được các thông tin liên quan đến mạng, các kết nối đang thiết lập, các port đang được mở trên hệ thống Linux,… Cũng xin lưu ý là trên các hệ thống Systemd như CentOS 7 hay Ubuntu 16.04 thì chương trình này mặc định không được cài đặt (thường các nhà cung cấp cài sẵn rồi, trừ khi bạn cài tay máy chủ thật).

Sau đây là một số ví dụ của “netstat” giúp kiểm tra các cổng kết nối đang được sử dụng trên Linux.

+ Kiểm tra port TCP đang mở

# netstat -ltnp
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:80              0.0.0.0:*             LISTEN      28302/nginx: maste
tcp        0      0 0.0.0.0:2712            0.0.0.0:*             LISTEN      904/sshd  
tcp        0      0 127.0.0.1:25            0.0.0.0:*             LISTEN      1401/master       
tcp        0      0 125.212.218.80:443      0.0.0.0:*             LISTEN      28302/nginx: maste
tcp        0      0 127.0.0.1:3306          0.0.0.0:*             LISTEN      4700/mysqld 
tcp6       0      0 :::80                   :::*                  LISTEN      28302/nginx: maste
tcp6       0      0 :::21                   :::*                  LISTEN      12736/vsftpd  
tcp6       0      0 :::2712                 :::*                  LISTEN      904/sshd     
tcp6       0      0 ::1:25                  :::*                  LISTEN      1401/master

Hình minh hoạ:

lệnh netstat kiểm tra port tcp mở

+ Kiểm tra port UDP đang mở

# netstat -lunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
udp 0 0 0.0.0.0:161 0.0.0.0:* 25778/snmpd

Hình minh hoạ:

lệnh netstat kiểm tra port udp đang sử dụng

Với cả 2 output trên dành cho các cổng kết nối TCP và UDP, bạn sẽ thấy cột trạng thái “State” là “LISTEN” và cả tên tiến trình đang hoạt động lắng nghe kết nối trên các port đang được sử dụng đó.

2. Sử dụng chương trình lệnh “SS”

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‘. Cũng với một vài option đơn giản thì bạn sẽ biết ngay port dịch vụ nào đang được mở trên Linux.

Có thể bạn quan tâm:
– Hướng dẫn sử dụng lệnh SS trên Linux quản lý mạng

+ Kiểm tra port TCP đang sử dụng

# ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 511 *:80 *:* 
LISTEN 0 128 *:2712 *:* 
LISTEN 0 100 127.0.0.1:25 *:* 
LISTEN 0 511 125.212.218.80:443 *:* 
LISTEN 0 80 127.0.0.1:3306 *:* 
LISTEN 0 511 :::80 :::* 
LISTEN 0 32 :::21 :::* 
LISTEN 0 128 :::2712 :::* 
LISTEN 0 100 ::1:25 :::*

Hình minh hoạ:

lệnh ss kiểm tra port tcp đang mở

+ Kiểm tra port UDP đang sử dụng

# ss -lnu
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
UNCONN 0 0 *:46951 *:* 
UNCONN 0 0 *:68 *:* 
UNCONN 0 0 *:161 *:*

Hình minh hoạ:

lệnh ss kiểm tra port đang mở trên linux

3. Sử dụng chương trình lệnh “telnet”

Sử dụng “telnet” để kiểm tra các cổng kết nối có được mở trên máy chủ Linux không là một phương pháp vô cùng phổ biến. Hoạt động của nó là mở một kết nối đến port dịch vụ ta cần kiểm tra, nếu không mở được tức port dịch vụ đó không mở.

Cấu trúc sử dụng “telnet

# telnet [ip máy chủ] [số port]

Ví dụ 1:
– Bạn kiểm tra port SSH (22) của máy chủ remote. Kết quả dưới là có port 22 có mở.

# telnet 103.63.213.61 22
Trying 103.63.213.61...
Connected to 103.63.213.61.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

Hình minh hoạ:

telnet port 22 đang sử dụng

– Bạn kiểm tra port SSH (22) của máy chủ remote. Kết quả dưới là có port 22 không có mở.

# telnet 103.63.213.62 22
Trying 103.63.213.62...
telnet: connect to address 103.63.213.62: Connection timed out

Hình minh hoạ:

telnet port 22 không mở

Ví dụ 2:
– Bạn kiểm tra port HTTP (80) của máy chủ remote. Kết quả dưới là có port 80 có mở.

# telnet 103.63.213.61 80
Trying 103.63.213.61...
Connected to 103.63.213.61.
Escape character is '^]'.

Hình minh hoạ:

telnet port 80 đang mở

– Bạn kiểm tra port HTTP (80) của máy chủ remote. Kết quả dưới là có port 80 không có mở.

# telnet 103.63.213.62 80
Trying 103.63.213.62...
telnet: connect to address 103.63.213.62: Connection timed out

Hình minh hoạ:

telnet port 80 không sử dụng

4. Sử dụng chương trình lệnh “nmap”

Nmap là một công cụ dùng cho hoạt động kiểm tra bảo mật hệ thống. Nhiệm vụ chính của nó là quét ra thông tin giúp kiểm tra port đang mở trên một máy chủ. Từ đó có thể xác định các dịch vụ mạng đang được lắng nghe thông qua cổng kết nối được mở trên hệ thống đó.

Bạn cần cài đặt chương trình “nmap” như sau :

+ CentOS

# yum install -y nmap

+ Ubuntu

# apt-get install -y namp

Cấu trúc lệnh “nmap”

# nmap [option] [ip may chu]

Hãy chạy lệnh “nmap” với option như sau để kiểm tra port đang mở trên máy chủ dịch vụ nhé.

# nmap 103.63.213.61

Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-20 13:55 +07
Nmap scan report for no-ptr.ehost.vn (103.63.213.61)
Host is up (0.0018s latency).
Not shown: 984 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
2222/tcp open EtherNet/IP-1
8000/tcp closed http-alt
35500/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 27.79 seconds

Hình minh hoạ:

nmap scan port đang sử dụng

Wow, với một lần chạy lệnh thôi mà “nmap” đã giúp bạn xác định được bao nhiêu port đang được mở trên máy chủ dịch vụ.

5. Sử dụng các website trực tuyến kiểm tra port đang mở

Đôi khi do lười hoặc không có quyền hạn truy cập hệ thống của 1 website hay 1 VPS thì bạn khó mà kiểm tra được các port nào đang được mở trên hệ thống Linux đó. Thì có thể đơn giản là chỉ cần sử dụng các dịch vụ trung gian giúp quét các port thông dụng được mở trên server Linux đó.

Sau đây là một số website giúp bạn scan port trực tuyến. Bạn chỉ cần nhập địa chỉ IP hoặc tên miền của máy chủ mà bạn cần quét port:

+ Pentest-tools
Link : https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap

kiểm tra port đang sử dụng bằng ptentesttoolskiểm tra port đang sử dụng bằng ptentesttools

+ Mxtoolbox
Link : https://mxtoolbox.com/PortScan.aspx

kiểm tra port đang mở bằng mxtoolboxkiểm tra port đang mở bằng mxtoolbox

Như vậy là qua bài viết này với 5 cách trên , hy vọng bạn đã có thể tự kiểm tra port đang mở trên máy chủ Linux (CentOS/Ubuntu) của bạn rồi. Nếu có bất cứ vấn đề cần trao đổi thì đừng ngại comment bên dưới để “cuongquach.com” hỗ trợ bạn nhé.

Previous articleTop 10 cách kiểm tra máy chủ Linux là máy chủ ảo hay máy chủ vật lý ?
Next articleEbook Head First Design Patterns (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !