Cách Dò Tìm Cổng Mở Bằng Nmap: Từ Cơ Bản Đến Nâng Cao

Cách Dò Tìm Cổng Mở Bằng Nmap: Từ Cơ Bản Đến Nâng Cao

Networking (mạng máy tính) là một chủ đề rộng lớn và đôi khi gây bối rối cho những quản trị viên hệ thống mới. Có vô số tầng, giao thức và giao diện, cùng với rất nhiều công cụ và tiện ích mà bạn cần phải làm chủ để hiểu được chúng.

Trong giao thức TCP/IP và UDP, các cổng (ports) là các điểm cuối logic cho việc giao tiếp. Một địa chỉ IP duy nhất có thể chạy nhiều dịch vụ khác nhau, chẳng hạn như máy chủ web, máy chủ ứng dụng hay máy chủ file. Để mỗi dịch vụ này có thể giao tiếp, chúng đều “lắng nghe” và giao tiếp qua một cổng cụ thể. Khi bạn kết nối tới một máy chủ, bạn đang kết nối tới địa chỉ IP và một cổng nhất định.

Trong nhiều trường hợp, phần mềm bạn sử dụng sẽ tự động chỉ định cổng cho bạn. Ví dụ, khi bạn truy cập vào https://dataonline.vn/, bạn thực sự đang kết nối tới máy chủ dataonline.com qua cổng 443 – cổng mặc định cho lưu lượng web bảo mật. Do đó, trình duyệt của bạn tự động thêm cổng này.

Để quản lý và bảo mật hệ thống mạng hiệu quả, việc sử dụng Nmap là không thể thiếu. Nếu bạn đang tìm kiếm giải pháp tối ưu hóa mạng, hãy khám phá VPS Việt Nam tại DataOnline. Các gói VPS chất lượng cao giúp bạn triển khai hệ thống an toàn và ổn định, đáp ứng mọi nhu cầu.

Trong hướng dẫn này, bạn sẽ khám phá chi tiết về các cổng. Bạn sẽ sử dụng chương trình netstat để xác định các cổng mở, sau đó dùng chương trình nmap để thu thập thông tin về trạng thái của các cổng trên một máy trong mạng. Khi hoàn thành, bạn sẽ có khả năng nhận biết các cổng phổ biến và quét hệ thống của mình để phát hiện các cổng mở.

Lưu ý: Hướng dẫn này tập trung vào bảo mật IPv4. Trên Linux, bảo mật IPv6 được duy trì riêng biệt với IPv4. Ví dụ, lệnh nmap mặc định quét các địa chỉ IPv4 nhưng cũng có thể quét IPv6 nếu bạn truyền đúng tham số (ví dụ: nmap -6).

Nếu VPS của bạn được cấu hình hỗ trợ IPv6, hãy nhớ bảo mật cả giao diện mạng IPv4 và IPv6 với các công cụ thích hợp. Để biết thêm thông tin về công cụ IPv6, hãy tham khảo hướng dẫn: How To Configure Tools to Use IPv6 on a Linux VPS.

Hiểu về các cổng

Có nhiều tầng trong mô hình OSI của mạng. Tầng truyền tải (transport layer) là tầng chủ yếu liên quan đến giao tiếp giữa các dịch vụ và ứng dụng.

Chính tầng này liên quan trực tiếp tới các cổng.

Để hiểu cấu hình cổng, bạn cần nắm một số thuật ngữ sau:

  • Cổng (Port): Một vị trí mạng có khả năng định danh được, được triển khai bên trong hệ điều hành, giúp phân biệt lưu lượng hướng đến các ứng dụng hoặc dịch vụ khác nhau.
  • Internet Sockets: Một descriptor tập tin (file descriptor) chỉ định một địa chỉ IP và số cổng liên quan, cùng với giao thức truyền tải sẽ được sử dụng để xử lý dữ liệu.
  • Binding (Gán kết): Quá trình mà một ứng dụng hoặc dịch vụ sử dụng một internet socket để xử lý dữ liệu đầu vào và đầu ra của nó.
  • Listening (Lắng nghe): Một dịch vụ được cho là “đang lắng nghe” trên một cổng khi nó đã gán kết (bind) tới một tổ hợp cổng/giao thức/địa chỉ IP để chờ các yêu cầu từ phía khách hàng. Khi nhận được yêu cầu, dịch vụ sẽ thiết lập kết nối với khách hàng (nếu thích hợp) qua cùng cổng mà nó đã lắng nghe. Vì các internet socket liên kết với địa chỉ IP khách hàng cụ thể, điều này không ngăn cản máy chủ lắng nghe và phục vụ các yêu cầu từ nhiều khách hàng cùng lúc.
  • Port Scanning (Quét cổng): Quá trình cố gắng kết nối tới một loạt các cổng liên tiếp để thu thập thông tin về các cổng mở và xác định các dịch vụ cũng như hệ điều hành đang chạy đằng sau chúng.

Xác định các Port phổ biến

Các cổng được chỉ định bằng một số từ 1 đến 65535.

  • Các cổng dưới 1024: Thường được gắn liền với các dịch vụ mà Linux và các hệ điều hành tương tự Unix coi là thiết yếu cho các chức năng mạng, do đó bạn cần có quyền root để gán các dịch vụ cho chúng.
  • Các cổng từ 1024 đến 49151: Được xem là “đã đăng ký” (registered). Điều này có nghĩa là chúng có thể được “đặt trước” (trong nghĩa tương đối) cho một số dịch vụ nhất định khi có yêu cầu từ IANA (Internet Assigned Numbers Authority). Dù không được thực thi nghiêm ngặt, nhưng chúng có thể gợi ý về các dịch vụ có khả năng chạy trên một cổng cụ thể.
  • Các cổng từ 49152 đến 65535: Không thể đăng ký và được khuyến nghị dùng cho mục đích riêng tư.

Do số lượng cổng có sẵn rất lớn, bạn sẽ không bao giờ phải lo lắng quá nhiều về phần lớn các dịch vụ thường gán kết tới các cổng cụ thể.

Tuy nhiên, có một số cổng đáng lưu ý do tính phổ biến của chúng. Danh sách dưới đây chỉ là một ví dụ không đầy đủ:

  • 20: Dữ liệu FTP
  • 21: Điều khiển FTP
  • 22: SSH
  • 23: Telnet (Không an toàn, không được khuyến nghị sử dụng)
  • 25: SMTP
  • 43: Giao thức WHOIS
  • 53: Dịch vụ DNS
  • 67: Cổng máy chủ DHCP
  • 68: Cổng khách hàng DHCP
  • 80: HTTP – Lưu lượng web không mã hóa
  • 110: Cổng mail POP3
  • 113: Dịch vụ xác thực Ident trên các mạng IRC
  • 143: Cổng mail IMAP
  • 161: SNMP
  • 194: IRC
  • 389: Cổng LDAP
  • 443: HTTPS – Lưu lượng web bảo mật
  • 587: SMTP – Cổng gửi thư
  • 631: Cổng daemon in ấn CUPS
  • 666: DOOM – Trò chơi cổ điển có cổng riêng

Những cổng này chỉ là một vài ví dụ về các dịch vụ thường gắn liền với các cổng. Bạn có thể tìm thấy cổng phù hợp cho từng ứng dụng bạn cần cấu hình trong tài liệu hướng dẫn của chúng.

Hầu hết các dịch vụ có thể được cấu hình sử dụng cổng khác với mặc định, nhưng bạn phải đảm bảo rằng cả phía khách hàng và máy chủ đều được cấu hình sử dụng cổng không chuẩn đó.

Bạn có thể xem danh sách một số cổng phổ biến bằng cách mở file /etc/services:

less /etc/services

File này sẽ hiển thị danh sách các cổng phổ biến và các dịch vụ liên quan:

Output:

. . .
tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
. . .

Tùy vào hệ thống của bạn, file này có thể hiển thị nhiều trang. Nhấn phím SPACE để xem trang tiếp theo hoặc phím Q để thoát về prompt.

Lưu ý: Đây không phải là danh sách đầy đủ; bạn sẽ nhận ra điều đó ngay sau vài trang.

Kiểm tra các cổng mở

Có rất nhiều công cụ bạn có thể sử dụng để quét các cổng mở. Một công cụ được cài đặt mặc định trên hầu hết các bản phân phối Linux là netstat.

Bạn có thể nhanh chóng xác định các dịch vụ đang chạy trên hệ thống bằng cách chạy lệnh sau với các tham số thích hợp:

sudo netstat -plunt

Bạn sẽ thấy kết quả như sau:

Output:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      785/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      785/sshd

Kết quả hiển thị cổng và socket đang lắng nghe liên kết với dịch vụ, liệt kê cả giao thức UDP và TCP.

Một công cụ khác mà bạn có thể sử dụng để xác định cổng là nmap.

Sử dụng Nmap

Một phần của việc bảo mật mạng là tiến hành kiểm tra lỗ hổng bảo mật (vulnerability testing). Điều này có nghĩa là bạn cố gắng “xâm nhập” vào mạng của mình để tìm ra các điểm yếu giống như cách mà kẻ tấn công có thể làm.

Trong số các công cụ có sẵn, nmap có lẽ là công cụ phổ biến và mạnh mẽ nhất. Bạn có thể cài đặt nmap trên máy Ubuntu hoặc Debian bằng cách chạy:

sudo apt-get update
sudo apt-get install nmap

Một lợi ích phụ của việc cài đặt phần mềm này là bạn sẽ có được một file ánh xạ cổng (port mapping file) được cải thiện. Bạn có thể xem mối liên hệ chi tiết giữa các cổng và dịch vụ bằng cách mở file sau:

less /usr/share/nmap/nmap-services

Bạn sẽ thấy đầu ra tương tự như sau:

Output:

. . .
tcpmux  1/tcp   0.001995        # TCP Port Service Multiplexer [rfc-1078]
tcpmux  1/udp   0.001236        # TCP Port Service Multiplexer
compressnet     2/tcp   0.000013        # Management Utility
compressnet     2/udp   0.001845        # Management Utility
compressnet     3/tcp   0.001242        # Compression Process
compressnet     3/udp   0.001532        # Compression Process
unknown 4/tcp   0.000477
rje     5/udp   0.000593        # Remote Job Entry
unknown 6/tcp   0.000502
echo    7/tcp   0.004855
echo    7/udp   0.024679
echo    7/sctp  0.000000
. . .

File này có gần 20.000 dòng và chứa thêm các trường thông tin, chẳng hạn như cột thứ ba liệt kê tần suất mở của cổng dựa trên các lần quét trên Internet.

Quét cổng với Nmap

Nmap có thể cung cấp rất nhiều thông tin về một host. Tuy nhiên, nó cũng có thể khiến quản trị viên hệ thống của host bị nghi ngờ có ý đồ xâm nhập. Vì lý do này, chỉ nên thử nghiệm trên các máy chủ của bạn hoặc trong các trường hợp mà bạn đã thông báo cho chủ sở hữu.

Các tác giả của nmap cung cấp một máy chủ kiểm tra tại địa chỉ scanme.nmap.org. Đây, hoặc chính máy chủ của bạn, là mục tiêu tốt để luyện tập với nmap.

Dưới đây là một số thao tác phổ biến với nmap. Chúng ta sẽ chạy các lệnh này với quyền sudo để tránh việc trả về kết quả không đầy đủ đối với một số truy vấn. Một số lệnh có thể mất một khoảng thời gian để hoàn thành:

  • Quét hệ điều hành của host:
sudo nmap -O scanme.nmap.org
  • Bỏ qua phần khám phá mạng và giả định host đang hoạt động:
    (Rất hữu ích nếu bạn nhận được thông báo “Note: Host seems down” trong các bài test khác.)

sudo nmap -PN scanme.nmap.org
  • Quét mà không thực hiện tra cứu DNS ngược:
    (Giúp tăng tốc kết quả trong hầu hết các trường hợp.)

sudo nmap -n scanme.nmap.org
  • Quét một cổng cụ thể thay vì quét tất cả các cổng phổ biến:
sudo nmap -p 80 scanme.nmap.org
  • Quét các kết nối TCP:
    Nmap có thể thực hiện quá trình “3-way handshake” với cổng đích. Thực hiện như sau:

sudo nmap -sT scanme.nmap.org
  • Quét các kết nối UDP:
sudo nmap -sU scanme.nmap.org
  • Quét tất cả các cổng TCP và UDP mở:
sudo nmap -n -PN -sT -sU -p- scanme.nmap.org

Một TCP “SYN” scan khai thác cách TCP thiết lập kết nối. Để bắt đầu kết nối TCP, máy gửi yêu cầu sẽ gửi một gói tin “synchronize request” tới máy chủ. Máy chủ sau đó gửi trả về một gói “synchronize acknowledgment”, và cuối cùng, máy gửi ban đầu gửi lại một gói “acknowledgment” để hoàn tất kết nối.

Tuy nhiên, trong một SYN scan, kết nối sẽ bị hủy ngay khi nhận được gói tin đầu tiên từ máy chủ. Đây được gọi là quét “nửa mở” (half-open scan) và trước đây được quảng bá như một cách quét cổng một cách “ẩn” vì ứng dụng liên quan không nhận được lưu lượng do kết nối chưa hoàn thành.

Tuy nhiên, với sự phát triển của các firewall hiện đại và việc theo dõi các yêu cầu SYN không đầy đủ, phương pháp này không còn được xem là “ẩn” nữa.

  • Thực hiện SYN scan:
sudo nmap -sS scanme.nmap.org
  • Phương pháp “ẩn” hơn là gửi các header TCP không hợp lệ:
    Nếu host tuân theo các tiêu chuẩn TCP, nó sẽ gửi trả về gói tin nếu cổng đó đóng. Phương pháp này phù hợp với các máy chủ không chạy Windows. Bạn có thể dùng các tham số “-sF”, “-sX” hoặc “-sN” – tất cả đều cho ra kết quả mong đợi:

sudo nmap -PN -p 80 -sN scanme.nmap.org
  • Xác định phiên bản dịch vụ đang chạy trên host:
    Lệnh này cố gắng xác định dịch vụ và phiên bản bằng cách thử nghiệm các phản hồi khác nhau từ máy chủ:

sudo nmap -PN -p 80 -sV scanme.nmap.org
  • Quét nhiều máy cùng lúc:
    Để chỉ định dãy địa chỉ IP bằng dấu “-” hoặc “/24” nhằm quét nhiều host cùng lúc, bạn có thể sử dụng lệnh như:
sudo nmap -PN xxx.xxx.xxx.xxx-yyy
  • Hoặc quét một dãy mạng để tìm các dịch vụ khả dụng:

sudo nmap -sP xxx.xxx.xxx.xxx-yyy

Có rất nhiều tổ hợp lệnh khác nhau mà bạn có thể sử dụng, nhưng những lệnh trên sẽ giúp bạn bắt đầu khám phá các lỗ hổng trong mạng của mình.

Kết luận

Việc hiểu cấu hình cổng và cách phát hiện các điểm tấn công trên máy chủ là một bước quan trọng để bảo mật thông tin và VPS của bạn. Đây là một kỹ năng thiết yếu – biết được các cổng mở và thông tin có thể thu thập từ các dịch vụ chấp nhận kết nối sẽ cung cấp cho bạn thông tin cần thiết để khóa chặt máy chủ. Bất kỳ thông tin thừa nào bị rò rỉ ra ngoài có thể bị kẻ tấn công lợi dụng để khai thác các lỗ hổng đã biết hoặc phát triển những phương thức tấn công mới. Càng ít thông tin cho kẻ tấn công biết, hệ thống của bạn càng an toàn.

Khi quét cổng bằng Nmap, một máy chủ mạnh mẽ là yếu tố then chốt. Hãy cân nhắc thuê máy chủ VPS từ DataOnline để đảm bảo hiệu suất và bảo mật. Với VPS Việt Nam, bạn sẽ có hạ tầng đáng tin cậy, hỗ trợ tối ưu cho các tác vụ quản trị mạng.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *