Làm thế nào để liệt kê các cổng mở trên Linux?

How List Open Ports Linux



Trong mạng, một cổng là một tính năng thú vị. Đó là một cách để lưu lượng truy cập mạng xác định ứng dụng hoặc dịch vụ đích. Mỗi quy trình / dịch vụ có một cổng duy nhất của nó. Một cổng sẽ luôn được liên kết với địa chỉ IP của máy chủ cùng với giao thức.

Đây là một phép ẩn dụ yêu thích của tôi để mô tả cảng là gì. Hãy tưởng tượng một con tàu chở đầy hàng hóa sẽ đi đến một vùng đất xa xôi. Những thông tin cần thiết để đến đích đúng cách? Để đơn giản, giả sử nó cần quốc gia (địa chỉ IP) và Hải cảng tàu sẽ cập bến.







Trong hướng dẫn này, hãy xem cách liệt kê các cổng đang mở trên Linux.



Các cổng trên Linux

Các cổng hoạt động như một điểm cuối của giao tiếp. Đó là một số 16 bit (0 đến 65535 ở dạng thập phân). Mặc dù phạm vi lớn, nhưng để dễ sử dụng, các cổng được phân loại thành ba loại. Mỗi danh mục được gắn nhãn là phạm vi giá trị cổng:



  • 0 đến 1023: Đây là các cổng nổi tiếng, còn được gọi là cổng Hệ thống, được dành riêng cho các quy trình hệ thống cung cấp nhiều loại dịch vụ mạng. Để liên kết với một cổng Nổi tiếng, một quy trình phải có đặc quyền của người dùng siêu cấp.
  • 1024 đến 49151: Đây là các cổng đã đăng ký, còn được gọi là cổng Người dùng, được IANA chỉ định cho các dịch vụ cụ thể. Theo yêu cầu, một quy trình có thể có quyền truy cập vào chúng. Trong trường hợp của hầu hết các hệ thống, nó không yêu cầu bất kỳ đặc quyền siêu người dùng nào để sử dụng các cổng này.
  • 49152 đến 65535: Đây là các cổng Động, còn được gọi là cổng Riêng. Không thể đăng ký các cổng này với IANA. Các cổng này được mở để sử dụng cho các dịch vụ riêng tư hoặc tùy chỉnh và cũng có thể tự động được cấp phát dưới dạng cổng tạm thời (các cổng tồn tại trong thời gian ngắn được IP sử dụng).

Trong Linux, có nhiều cách để kiểm tra các cổng đang mở. Theo mặc định, bất kỳ cổng nào sẽ vẫn đóng trừ khi một ứng dụng đang sử dụng nó. Nếu một cổng đang mở, thì cổng đó phải được gán cho một dịch vụ / quy trình.





Liệt kê các cổng đang mở

Dễ dàng xác định cổng nào đang được sử dụng hơn là cổng nào đang mở. Đó là lý do tại sao phần sau sẽ trình bày các phương pháp liệt kê tất cả các cổng hiện đang được sử dụng. Trong Linux, có nhiều công cụ có sẵn cho tác vụ. Hầu hết chúng đều được tích hợp sẵn trong bất kỳ bản phân phối Linux nào.

Tìm hiểu các cổng nào hiện đang mở có thể hữu ích trong các tình huống khác nhau. Có thể định cấu hình một cổng chuyên dụng cho một ứng dụng nhất định. Một cổng mở cũng có thể là một dấu hiệu mạnh về sự xâm nhập vào mạng.



Các phương pháp sau được trình bày trên Ubuntu 20.04.1 LTS.

Liệt kê các giao thức và các cổng mở từ / etc / services

Tệp / etc / services chứa thông tin về các dịch vụ hiện đang chạy. Đó là một tệp lớn, vì vậy đã sẵn sàng để bị choáng ngợp.

$con mèo /Vân vân/dịch vụ| ít hơn

Liệt kê các cổng đang mở bằng netstat

Công cụ netstat là một tiện ích để hiển thị các kết nối mạng cho TCP, bảng định tuyến và các giao diện mạng khác nhau. Nó cũng cung cấp số liệu thống kê về giao thức mạng. Bằng cách sử dụng netstat, chúng ta có thể liệt kê tất cả các cổng đang mở của hệ thống.

Chạy lệnh netstat sau:

$netstat -atu

Hãy phân tích nhanh tất cả các cờ mà chúng tôi đã sử dụng trong lệnh này.

  • đến : Yêu cầu netstat hiển thị tất cả các ổ cắm
  • NS : Yêu cầu netstat liệt kê các cổng TCP
  • u : Yêu cầu netstat liệt kê các cổng UDP

Đây là một biến thể khác của lệnh netstat:

$netstat -lntu

Có hai cờ mới được sử dụng trong lệnh. Có ý nghĩa gì?

  • NS : Yêu cầu netstat chỉ in các ổ cắm nghe
  • n : Cho netstat hiển thị số cổng

Để hiển thị PID của quá trình đang sử dụng một cổng, hãy sử dụng cờ -p:

$netstat -Ntup

Liệt kê các cổng đang mở bằng ss

Công cụ ss là một tiện ích để điều tra ổ cắm. Cách sử dụng của nó tương tự như netstat.

Để liệt kê các cổng đang mở, hãy chạy lệnh ss sau:

$NS-lntu

Các cờ tương tự như netstat. Các chức năng mà họ mô tả cũng khá giống nhau.

  • NS : Yêu cầu ss hiển thị ổ cắm nghe
  • n : Yêu cầu ss không cố gắng phân giải tên dịch vụ
  • NS : Yêu cầu ss hiển thị các ổ cắm TCP
  • u : Yêu cầu ss hiển thị các ổ cắm UDP

Liệt kê các cổng đang mở bằng lsof

Lệnh lsof là liệt kê các tệp đang mở. Tuy nhiên, nó cũng có thể được sử dụng để hiển thị các cổng đang mở.

Chạy lệnh lsof sau:

$lsof-tôi

Để nhận các cổng đang mở của một giao thức cụ thể (TCP, UDP, v.v.), sau đó xác định nó sau cờ -i, hãy sử dụng:

$lsof-tôi <giao thức>

Liệt kê các cổng đang mở bằng nmap

Công cụ nmap là một công cụ mạnh mẽ để khám phá mạng và bảo mật / quét cổng. Nó có thể báo cáo tất cả các cổng đang mở trong hệ thống.

Để liệt kê các cổng TCP đang mở, hãy chạy lệnh nmap sau. Đây, địa chỉ IP là của máy tính chủ:

$sudo nmap -NS -P-localhost

Ở đây, có hai phần của đối số lệnh.

  • -NS : Phần này yêu cầu nmap quét các cổng TCP.
  • -P- : Điều này yêu cầu nmap quét tất cả 65535 cổng. Nếu không được sử dụng, nmap sẽ chỉ quét 1000 cổng theo mặc định.

Nếu bạn cần liệt kê các cổng UDP đang mở, hãy chạy lệnh nmap sau:

$sudo nmap -nó là -P-localhost

Để nhận được cả hai cổng TCP và UDP đang mở, hãy sử dụng lệnh sau:

$sudo nmap -n -PN -NS -nó là -P-localhost

Liệt kê các cổng đang mở bằng netcat

Công cụ netcat là một tiện ích dòng lệnh để đọc và ghi dữ liệu qua các kết nối mạng qua giao thức TCP và UDP. Công cụ này cũng có thể được sử dụng để liệt kê các cổng đang mở. Nó có thể thực hiện các bài kiểm tra trên một cổng cụ thể hoặc một loạt các cổng.

Lệnh netcat sau sẽ quét cổng từ 1 đến 1000. Lệnh netcat sẽ thực hiện quét trên giao thức TCP theo mặc định:

$nc-Với -vlocalhost1-1000

Nó cũng có thể được mở rộng cho toàn bộ danh sách các cổng có thể có:

$nc-Với -vlocalhost1-65535

Hãy phân tích nhanh các cờ.

  • Với : Yêu cầu netcat chỉ quét các cổng đang mở mà không gửi bất kỳ dữ liệu nào
  • v : Yêu cầu netcat chạy ở chế độ tiết

Để chỉ lấy các cổng đang mở từ danh sách này, hãy lọc đầu ra bằng grep cho cụm từ đã thành công.

$nc-Với -vlocalhost0-65535 2> &1 | nắm chặtđã thành công

Nếu bạn muốn thực hiện quét trên giao thức UDP, hãy thêm cờ -u.

$nc-Với -v -ulocalhost0-65535 2> &1 | nắm chặtđã thành công

Lời kết

Như đã chứng minh, có rất nhiều cách để quét các cổng đang mở trên Linux. Tôi khuyên bạn nên thử tất cả các phương pháp trước khi bạn quyết định cái nào nên thành thạo. Nếu bạn đang sử dụng một công cụ nhất định như netcat hoặc nmap thường xuyên, thì việc nắm vững các phương pháp liên quan sẽ có lợi nhất.

Chúc bạn tin học vui vẻ!