Trang chủTin tứcHướng dẫn kiểm tra trạng thái cổng trong Linux chi tiết nhất
Hướng dẫn kiểm tra trạng thái cổng trong Linux chi tiết nhất

Khám phá cách kiểm tra trạng thái của cổng trong hệ điều hành Linux với các phương pháp thực hiện đơn giản, dễ dàng trong bài viết sau đây nhé.

Trong môi trường Linux, việc kiểm tra trạng thái cổng là một phần quan trọng của quản lý hệ thống mạng và bảo mật. Bằng cách này, người quản trị có thể theo dõi các kết nối mạng, xác định các cổng mạng mở và đóng, và phát hiện các vấn đề bảo mật. Trong bài viết này, chúng ta sẽ tìm hiểu về một số câu lệnh và phương pháp để có thể kiểm tra trạng thái cổng trên Server.

Hình 1. Hướng dẫn kiểm tra trạng thái cổng trong Linux
Hình 1. Hướng dẫn kiểm tra trạng thái cổng trong Linux

I. Cổng mạng là gì? Các trạng thái của cổng mạng

1. Cổng mạng là gì? Các loại cổng mạng

Cổng mạng là các điểm kết nối trên một máy tính hoặc một thiết bị mạng mà các dịch vụ hoặc ứng dụng có thể sử dụng để giao tiếp với bên ngoài. Mỗi dịch vụ hoặc ứng dụng có thể sử dụng một hoặc nhiều cổng khác nhau để tiếp nhận các kết nối từ các máy tính hoặc thiết bị khác trên mạng.

Các cổng mạng được đại diện bằng các số từ 1 đến 65535. Các cổng này được chia thành hai loại chính:

  • Cổng TCP: Được sử dụng cho các kết nối dựa trên giao thức TCP (Transmission Control Protocol), một giao thức kết nối mạng đáng tin cậy được sử dụng rộng rãi cho việc truyền tải dữ liệu trên mạng Internet và trong các mạng cục bộ.
  • Cổng UDP: Được sử dụng cho các kết nối dựa trên giao thức UDP (User Datagram Protocol), một giao thức mạng không đảm bảo tính toàn vẹn dữ liệu, nhưng nhanh hơn và thích hợp cho việc truyền tải dữ liệu thời gian thực hoặc các ứng dụng không đòi hỏi độ tin cậy cao.
Hình 2. Một số Port quan trọng
Hình 2. Một số Port quan trọng

2. Các trạng thái của cổng mạng

Cổng mạng có một số trạng thái sau đây mà bạn có thể sẽ nhìn thấy:

  • Open(Mở): Cổng mạng được xác định là mở khi một dịch vụ hoặc ứng dụng đang lắng nghe và sẵn sàng chấp nhận kết nối từ bên ngoài. Điều này có nghĩa là có một tiến trình đang lắng nghe trên cổng đó và sẵn sàng xử lý các yêu cầu kết nối từ các máy tính hoặc thiết bị khác trên mạng
  • Filtered(Lọc): Cổng mạng được xác định là lọc khi không có phản hồi được nhận được từ cổng đó sau khi quét. Điều này có thể xảy ra khi một tường lửa hoặc các thiết bị bảo mật khác đã chặn hoặc lọc các gói tin đến hoặc từ cổng đó. Trong trường hợp này, không thể kết luận được liệu cổng có mở hay đóng.
  • Closed(Đóng): Cổng mạng được xác định là đóng khi không có dịch vụ hoặc ứng dụng nào đang lắng nghe trên cổng đó và không có kết nối được chấp nhận từ bên ngoài. Điều này có nghĩa là không có tiến trình nào đang chờ đợi các yêu cầu kết nối trên cổng đó, và không có truy cập từ bên ngoài được phép. 
  • Unfiltered(Không lọc): Cổng mạng được xác định là không lọc khi các gói tin quét được nhận được phản hồi, bất kể cổng có mở hoặc đóng. Điều này có nghĩa là cổng đó có thể mở hoặc đóng, nhưng không có thiết bị bảo mật nào chặn hoặc lọc các gói tin đến hoặc từ cổng đó.

II. Một số phương pháp để kiểm tra trạng thái của cổng

1. Kiểm tra trạng thái của cổng mạng khi bạn có thể truy cập vào Server

Khi bạn có thể truy cập vào Server bằng cách trực tiếp hay thông qua SSH, Telnet,... bạn có thể thực hiện kiểm tra trạng thái các cổng mạng bằng các lệnh dưới đây.

Lưu ý: Bạn sẽ cần quyền quản trị (root) để có thể thực hiện các thao tác dưới!

1.1. Sử dụng lệnh netstat

Lệnh netstat là một công cụ mạnh mẽ cho phép người dùng kiểm tra trạng thái của cổng mạng và các kết nối mạng trên hệ thống Linux. Đối với một số phiên bản Linux sẽ không được cài đặt sẵn netstat, vì vậy mà bạn có thể cài đặt lệnh này như sau:

Trên hệ điều hành dựa trên Debian(bao gồm Ubuntu):

sudo apt update

sudo apt install net-tools

Trên hệ điều hành dựa trên Red-Hat(bao gồm CentOS, Fedora):

sudo yum update

sudo yum install net-tools

Sau khi cài đặt xong, bạn có thể sử dụng netstat để hiển thị các cổng đang mở như sau:

$ sudo netstat -lutn 

Trong đó: 

  • ‘-l”: để yêu cầu liệt kê tất cả các listening sockets.
  • ‘-t’: để hiển thị tất cả các kết nối TCP
  • ‘-u’: để hiển thị tất cả các kết nối UDP
  • ‘-n’: để hiển thị rõ số cổng
Hình 3. Sử dụng netstat kiểm tra trạng thái các cổng mạng
Hình 3. Sử dụng netstat kiểm tra trạng thái các cổng mạng

1.2. Sử dụng lệnh ss

ss là một công cụ hiệu quả hơn và thay thế cho netstat. Nó cung cấp thông tin chi tiết hơn và hiệu suất cao hơn. ss đã được cài đặt sẵn trên các hệ điều hành Linux, vì vậy mà bạn có thể trực tiếp sử dụng mà không cần cài đặt. Bạn có thể tham khảo cách sử dụng sau đây

$ ss -lutn 

Trong đó:

  • ‘-l”: để yêu cầu liệt kê tất cả các listening sockets.
  • ‘-t’: để hiển thị tất cả các kết nối TCP
  • ‘-u’: để hiển thị tất cả các kết nối UDP
  • ‘-n’: để hiển thị rõ số cổng
Hình 4. Sử dụng lệnh ss kiểm tra trạng thái các cổng
Hình 4. Sử dụng lệnh ss kiểm tra trạng thái các cổng

2. Kiểm tra trạng thái của cổng mạng khi bạn chưa thể truy cập vào Server

Đôi khi, bạn muốn truy cập vào Server những bạn không biết hiện tại Server đang mở những cổng nào để có thể truy cập thì lúc này, bạn có thể sử dụng một trong những cách sau đây.

2.1. Sử dụng lệnh telnet 

Telnet là một công cụ dòng lệnh cho phép kết nối đến một máy tính từ xa qua giao thức TCP/IP. Bạn có thể sử dụng telnet để kiểm tra trạng thái của một cổng từ xa trên một máy chủ bằng cách thực hiện kết nối đến cổng đó. Mặc định, Telnet sẽ sử dụng cổng Port 23, bạn cũng có thể chỉ định cổng kết nối khi sử dụng Telnet.

Dưới đây là cú pháp cơ bản:

telnet [IP_address] [Port number]

Hình 5. Lệnh Telnet
Hình 5. Lệnh Telnet

Ví dụ sử dụng lệnh Telnet: 

- Kiểm tra cổng 22 (dịch vụ SSH) có đang được mở hay không

telnet 192.168.217.132 22

- Kiểm tra cổng 25 (dịch vụ SMTP) có đang được mở hay không

telnet 192.168.217.132 25

Kết quả:

Hình 6. Kết quả sử dụng lệnh Telnet
Hình 6. Kết quả sử dụng lệnh Telnet

2.2. Sử dụng Netcat(nc)

Netcat là một công cụ mạng linh hoạt có thể thực hiện nhiều chức năng, bao gồm kết nối TCP và UDP, gửi và nhận dữ liệu, và nhiều hơn nữa. Bạn có thể sử dụng nc để kiểm tra trạng thái của một cổng từ xa bằng cách gửi yêu cầu kết nối và kiểm tra kết quả. 

Dưới đây là cú pháp cơ bản:

nc -zv [IP_address] [Port number]

Trong đó:

  • Tùy chọn ‘-z’ sẽ giúp chúng ta kiểm tra các cổng
  • Tùy chọn ‘-v’ sẽ hiển thị thông tin kết nối có thành công hay không

Tuy nhiên, đối với lệnh ‘nc’ này, đôi khi mặc dù đã thực hiện đóng cổng trên Server, ‘nc’ vẫn hiện kết nối thành công, lỗi này có thể là do một trong những nguyên nhân sau:

  • TCP Keep-Alive: TCP Keep-Alive là một cơ chế mà các máy chủ và máy khách sử dụng để kiểm tra kết nối TCP có còn hoạt động hay không. Nếu một máy chủ tắt card mạng nhưng kết nối TCP vẫn còn trong giai đoạn keep-alive, thì kết nối có thể vẫn được duy trì.
  • Network Socket Linger: Trong một số trường hợp, các socket mạng có thể được đặt để giữ kết nối tạm thời sau khi mạng đã bị tắt. Trong thời gian này, các dữ liệu gửi đến socket có thể vẫn được xử lý bởi ứng dụng.
  • Cache và Buffer: Các dữ liệu trong cache và buffer cũng có thể làm cho việc tắt card mạng không ngay lập tức gây ra lỗi kết nối.

Để sửa những lỗi này, cách cơ bản và dễ dàng nhất là bạn có thể khởi động lại máy Client hoặc reset lại card mạng.

Ví dụ sử dụng lệnh ‘nc’:

- Kiểm tra cổng 514/UDP trên Server. Để kiểm tra được các cổng UDP, ta thêm vào tùy chọn ‘-u’

nc -uzv 192.168.217.132 514

- Kiểm tra cổng 520/TCP trên Server. Mặc định kiểm tra sẽ là các cổng TCP, vậy nên ta không cần thêm tùy chọn nào

nc -zv 293.268.217.132 520

Kết quả hiển thị sẽ như sau:

Hình 7. Kiểm tra Port từ xa sử dụng nc
Hình 7. Kiểm tra Port từ xa sử dụng nc

2.3. Sử dụng Nmap

Nmap là một công cụ mạng mạnh mẽ cho phép quét cổng và phát hiện các dịch vụ trên một máy tính hoặc một mạng máy tính. Bạn có thể sử dụng nmap để kiểm tra trạng thái của một hoặc nhiều cổng từ xa trên một máy chủ hoặc một dải địa chỉ IP. 

Dưới đây là cú pháp cơ bản:

$ nmap -p [port_number] [IP_address]           # Đối với TCP Port

$ nmap -sU -p [port_number] [IP_address]     # Đối với UDP Port

Tuy nhiên, mặc định nmap không được cài đặt sẵn trên các máy, bạn có thể thực hiện cài đặt như sau:

- Trên hệ điều hành dựa trên Debian(bao gồm Ubuntu):

sudo apt update

sudo apt install nmap

- Trên hệ điều hành dựa trên Red-Hat(bao gồm CentOS, Fedora):

sudo yum update

sudo yum install nmap

Sau khi cài đặt xong, bạn có thể thực hiện kiểm tra như ví dụ dưới đây:

- Kiểm tra cổng 514/UPD trên Server:

nmap -sU -p 514 192.168.217.132 

- Kiểm tra cổng 514/TCP trên Server:

nmap -p 514 192.168.217.132 

Kết quả:

Hình 8. Kết quả kiểm tra Port sử dụng nmap
Hình 8. Kết quả kiểm tra Port sử dụng nmap

3. Một số lưu ý

Để thực hiện được việc kiểm tra cổng một cách chính xác và hiệu quả nhất, bạn cần phải:

- Nắm rõ được các trạng thái cơ bản của cổng

- Các lệnh nhưtelnet sẽ không thể kết nối được kể cả khi cổng đã được mở trên Server nhưng không ở trạng thái lắng nghe. Vì vậy ở mục này, bạn cần phải phân biệt được trạng thái cổng mở nhưng không có dịch vụ nào sử dụng và trạng thái cổng mở nhưng có đã có dịch vụ đang sử dụng

- Cấu hình tường lửa mở - đóng cổng một cách cẩn thận để tránh các lỗ hổng bảo mật

- Tuân thủ các quy luật, chính sách của các nhà phát triển 

III. Tổng kết

Việc kiểm tra trạng thái cổng trong Linux là một phần quan trọng của quản lý hệ thống mạng và bảo mật. Bằng cách sử dụng các công cụ như netstat, ss khi ở trên Server hay các công cụ như telnet, Netcat, Nmap khi ở trên Client, người quản trị có thể hiểu rõ hơn về các kết nối mạng và tiến trình đang chạy trên máy chủ của họ, đồng thời cũng giúp tăng cường bảo mật và hiệu suất hệ thống. Qua bài viết ở trên, có lẽ cũng giúp các bạn hiểu được phần nào về các công cụ kiểm tra Port. Hãy luyện tập thật nhiều để trở thành một quản trị viên hệ thống xuất sắc nhé!

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật