Cách Ping một số cổng mạng (TCP) để xác minh xem Host có đang mở hay không

Thảo luận trong 'Basic Network' bắt đầu bởi Duyanhsao, 15/5/18.

  1. Duyanhsao

    Duyanhsao Member

    Bài viết mô tả một số cách để xác minh qua mạng xem cổng TCP từ xa trên máy chủ có đang mở hay không. Đây là một phương pháp khắc phục sự cố phổ biến để xác định xem một dịch vụ hoặc ứng dụng cụ thể có đang chạy trên máy chủ hoặc máy tính từ xa hay không.

    Như bạn có thể đã biết, khi một ứng dụng hoặc dịch vụ đang chạy trên một máy chủ, nó có một cổng TCP hoặc UDP cụ thể được liên kết với nó để giao tiếp qua mạng TCP / IP (nghĩa là để dịch vụ gửi và nhận TCP / Gói IP qua mạng).

    Ví dụ: một số dịch vụ phổ biến (nổi tiếng) sử dụng các cổng TCP sau:
    • Web Service: Ports 80 (HTTP), 443 (HTTPs)
    • Windows Remote Desktop Service: Port 3389
    • Secure Shell (SSH): Port 22
    • File Transfer Protocol (FTP): Ports 20,21
    • Telnet: Port 23
    • Simple Mail Transfer Protocol (SMTP): Port 25
    • Post Office Protocol (POP3): Port 110
    Nếu bạn muốn khắc phục sự cố kết nối từ máy tính / máy chủ cục bộ của mình tới một máy chủ từ xa, tốt hơn hết bạn nên bắt đầu làm việc từ các lớp OSI thấp hơn và nhiều hơn nữa theo cách của bạn để xác định sự cố.

    Ví dụ: giả sử một máy chủ web từ xa không phản hồi các yêu cầu HTTP (tức là bạn đã khởi động trình duyệt của mình và truy cập vào URL từ xa mà không có phản hồi).

    Một trong những điều đầu tiên cần kiểm tra là liệu cổng TCP 80 hoặc 443 của máy chủ web từ xa có mở và có thể truy cập được từ phía bạn hay không.

    Nếu bạn cố gắng "ping" các cổng từ xa (tức là cố gắng giao tiếp với các cổng) và bạn không nhận được phản hồi, điều đó có nghĩa là sự cố xảy ra trên mạng giữa đầu cuối của bạn và máy chủ (có thể là sự cố tường lửa, sự cố định tuyến mạng, v.v. ).

    3 cách để “Ping” một cổng từ xa

    Giao thức “Ping” thực sự đang sử dụng các gói ICMP (echo, echo reply, v.v.) để xác định xem một máy chủ từ xa có “còn sống” hay không (tức là được kết nối với mạng và trả lời các gói ICMP).

    Giao thức ping không gửi các gói TCP đến máy chủ từ xa để xác định các cổng đang mở.

    Sử dụng thuật ngữ "ping cổng" để xác minh xem nó có đang mở (đang nghe) hay không.

    Hãy xem ba cách để kiểm tra xem một cổng có đang mở hay không:

    1. Sử dụng Telnet

    Telnet là một giao thức phổ biến (và rất cũ và không an toàn) để kết nối từ xa với các hệ thống (ví dụ: với thiết bị mạng, máy Linux, v.v.).

    Nó có nguồn gốc từ năm 1969 (từ khi Internet ra đời) và cung cấp một thiết bị đầu cuối dựa trên văn bản (dòng lệnh) để tương tác với các hệ thống từ xa.

    Theo mặc định, giao thức telnet sử dụng cổng 23 để kết nối với hệ thống từ xa. Tuy nhiên, bạn có thể chỉ định cổng đích (từ xa) mà bạn muốn kết nối.

    Ví dụ:

    telnet www.google.com 443 <- bạn có thể chỉ định cổng nào cho telnet (trong ví dụ này là 443)

    [​IMG]

    Như được hiển thị ở trên, đã sử dụng “telnet” để kết nối với www.google.com tại cổng 443. Câu trả lời từ Google là “Đã kết nối” có nghĩa là cổng 443 đang mở.

    Bây giờ, hãy thử “ping” (kết nối) với một cổng ngẫu nhiên (ví dụ: 12345) có thể đã bị đóng:

    telnet www.google.com 12345

    [​IMG]

    Như bạn có thể thấy ở trên, cổng 12345 không phản hồi yêu cầu telnet, có nghĩa là cổng đã bị đóng.

    2. Sử dụng NMAP

    Về cơ bản với nmap, bạn có thể gửi các gói TCP đến các cổng từ xa cụ thể và lắng nghe các gói trả lời để xác minh xem cổng đang mở hay đóng.

    Hãy sử dụng nmap để xem liệu cổng 53 (DNS) có đang lắng nghe dịch vụ DNS của Google (địa chỉ IP 8.8.8.8) hay không

    Ví dụ:

    # nmap -p 53 8.8.8.8

    Starting Nmap 7.70SVN ( https://nmap.org ) at 2019-09-16 13:16 EDT
    Nmap scan report for dns.google (8.8.8.8)
    Host is up (0.0095s latency).
    PORT STATE SERVICE
    53/tcp open domain
    Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds

    [​IMG]

    Như bạn có thể thấy ở trên, cổng 53 (DNS) đang mở trên máy chủ từ xa (8.8.8.8).

    3. Sử dụng NetCat (“NC”)

    NetCat (viết tắt là “nc”), nó có thể gửi và nhận các gói TCP trong số các chức năng hữu ích khác.

    Tương tự như Telnet, chúng ta có thể sử dụng NC để gửi các gói TCP đến một cổng đích và xem liệu cổng đó có đang mở hay không:

    Ví dụ:

    # nc -v www.google.com 80

    www.google.com [172.217.6.196] 80 (http) open

    [​IMG]

    Đảm bảo sử dụng “-v” để nhận đầu ra dài dòng từ lệnh netcat. Như hình trên, cổng 80 đang mở trên Google.

    Kết luận:

    Vì vậy, đây là ba cách khác nhau để "ping một cổng" và kiểm tra xem nó có phản hồi hay không. Bài viết sử dụng ba phương pháp trên trên máy chủ Linux nhưng bạn cũng có thể sử dụng chúng trên máy Windows (đặc biệt là NMAP cũng có thể dễ dàng cài đặt trên Windows).

    Lưu ý: Mặc dù NetCat là một tiện ích rất hữu ích nhưng không nên sử dụng nó trên các máy Windows vì phần lớn Antivirus sẽ phát hiện ra công cụ này là "độc hại".
     

trang này