Hướng dẫn kiểm tra trạng thái cổng trong Linux chi tiết nhất
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.
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.
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
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
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] |
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ả:
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:
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ả:
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é!
Nguồn: https://suncloud.vn/kiem-tra-trang-thai-cong
Nhận xét
Đăng nhận xét