Cách kiểm tra các ports mở trong Linux

0
kiểm tra open port

Khi bạn xử lý các sự cố về mạng trong Linux hoặc tìm cách để cải thiện Security hệ thống Linux của bạn, bạn sẽ cần biết những ports nào trong hệ thống đang được mở. Trong bài viết này, mình sẽ giới thiệu các bạn những cách khác nhau để check port open trong Linux.

Port là gì?

Một port là một con số 16 bit (từ 0-65535) để giúp định danh một ứng dụng hoặc process được cung cấp trên một hệ điều hành Linux (UNIX). Port giúp phân biệt giữa ứng dụng này với ứng dụng khác trên hệ thống Linux.

Bên dưới là phân loại port khác nhau

  • 0 – 1023 – đề cập đến các port phổ biến (như 22, 25, 80)
  • 1024 – 29151 – đề cập đến các port đã được đăng ký
  • 49152 – 65535 – đề cập đến các port động

Sử dụng các lệnh sau để lấy danh sách các ứng dụng và ports được hiển thị trên terminal của bạn:

Trong đó:

TCP: viết tắt của Transmission Control Protocol. Nó là giao thức mạng được dùng phổ biến nhất trên internet. TCP không chỉ là giao tiếp một chiều, mà nó còn gửi các gói trở lại để xác nhận rằng nó đã nhận được các gói tin của bạn.

UDP: viết tắt của User Datagram Protocol. Nó là một giao thức liên lạc khác ngoài TCP. Giao thức UDP làm việc tương tự như TCP, tuy nhiên, nó bỏ qua tất cả các bước kiểm tra lỗi . UDP được sử dụng và cần thiết khi các ứng dụng cần đòi hỏi về tốc độ và cơ chế sửa lỗi là không cần thiết.

SOCKETS: Sockets cho phép giao tiếp từ hai processes (tiến trình) khác nhau trên cùng hoặc khác máy.

Và tiếp theo hãy xem các cách khác nhau để liệt kê danh sách các port mở trên Linux.

Các lệnh kiểm tra port mở

1. Netstat

Trong cách thức này, mình sẽ sử dụng lệnh netstat -atu để kiểm tra các ports mở trên Linux.

root@lap10592:/usr/local# netstat -atu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:902             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN     
tcp        0      0 localhost:11211         0.0.0.0:*               LISTEN

Mình sử dụng 3 option khác nhau là -a, -t và -u đối với netstat

Trong đó:

-a: hiển thị tất cả các 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

Bạn cũng có thể thêm cờ -p để hiển thị PID của các processes liên quan hoặc tên chương trình.

Để hiển thị chỉ ports UDP, bạn có thể dùng lệnh sau đây:

netstat -vaun

Bạn cũng có thể dùng lệnh sau để tìm kiếm các ports TCP

netstat -vatn

2. lsof

Thay vì sử dụng netstat, chúng ta có thể dùng lệnh lsof để hiển thị các ports mở trên Linux.

lsof -i

Lệnh dưới đây cũng có thể hiển thị các sockets đang mở:

lsof -n -P | grep LISTEN

Bạn cũng có thể dùng lệnh sau để liệt kê tất cả các kết nối TCP

lsof -i tcp

Hơn nữa, sử dụng lệnh sau đối với các kết nối UDP

lsof -i udp

3. nmap

Trong cách này, mình sử dụng nmap để phát hiện các ports mở trên hệ thống. Chúng ta có thể dùng lệnh sau để hiển thị các kết nối port tcp.

nmap -sT -O localhost

Cuối cùng, để hiển thị các kết nối port udp, chúng ta có thể sử dụng lệnh sau:

nmap -sU localhost

Ví dụ 1: Kiểm tra port 80 của một server có địa chỉ IP 123.30.151.74 mình sẽ sử dụng công cụ telnet, chạy với lệnh sau:

telnet 123.30.151.74 80

Nếu bạn chưa biết port 80 là gì, nó là port sử dụng giao thức HTTP ( Hypertext Transfer Protocol) là giao thức bạn đang sử dụng để lướt web đó.

Kết luận

Khi nói đến bảo mật cho chiếc PC Linux của bạn, điều đầu tiên cần làm là đóng tất cả những ports không cần thiết để ngăn chặn những truy cập từ bên ngoài. Với các cách thức được liệt kê bên trên, bạn sẽ có thể kiểm tra dễ dàng các ports mở trên hệ thống Linux và xác định những port nào nên được đóng hoặc vẫn mở.

5/5 (1 Review)