Thứ tư, 02/09/2020 | 00:00 GMT+7

Cách sử dụng Nmap để quét các cổng đang mở

Mạng là một chủ đề rộng lớn và áp đảo đối với nhiều administrator hệ thống mới chớm nở. Có nhiều lớp, giao thức và giao diện khác nhau, và nhiều công cụ và tiện ích phải thành thạo để hiểu chúng.

Trong mạng TCP / IP và UDP, các cổng là điểm cuối cho giao tiếp logic. Một địa chỉ IP có thể có nhiều dịch vụ đang chạy, chẳng hạn như web server , server ứng dụng và server file . Để mỗi dịch vụ này có thể giao tiếp, mỗi dịch vụ sẽ lắng nghe và giao tiếp trên một cổng cụ thể. Khi bạn thực hiện kết nối với server , bạn kết nối với địa chỉ IP và một cổng.

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

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

Lưu ý: Hướng dẫn này bao gồm bảo mật IPv4. Trong Linux, bảo mật IPv6 được duy trì riêng biệt với IPv4. Ví dụ: “nmap” quét địa chỉ IPv4 theo mặc định nhưng cũng có thể quét địa chỉ IPv6 nếu tùy chọn thích hợp được chỉ định (nmap -6).

Nếu VPS của bạn được cấu hình cho IPv6, hãy nhớ bảo mật cả network interface IPv4 và IPv6 của bạn bằng các công cụ thích hợp. Để biết thêm thông tin về các công cụ IPv6, hãy tham khảo hướng dẫn này: Cách Cấu hình Công cụ để Sử dụng IPv6 trên VPS Linux

Hiểu các cổng

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

Lớp này là lớp chính mà các cổng được liên kết với.

Cần có một số kiến thức về thuật ngữ để hiểu cấu hình cổng. Dưới đây là một số thuật ngữ sẽ giúp bạn hiểu cuộc thảo luận sẽ diễn ra sau:

  • Cổng : Một vị trí mạng có địa chỉ được thực hiện bên trong hệ điều hành giúp phân biệt lưu lượng dành cho các ứng dụng hoặc dịch vụ khác nhau.

  • Cổng kết nối Internet : Bộ mô tả file chỉ định địa chỉ IP và số cổng liên quan, cũng như giao thức truyền sẽ được sử dụng để xử lý dữ liệu.

  • Ràng buộc : Quá trình diễn ra khi một ứng dụng hoặc dịch vụ sử dụng socket internet để xử lý dữ liệu mà nó đang nhập và xuất.

  • Lắng nghe : Một dịch vụ được cho là “lắng nghe” trên một cổng khi nó ràng buộc với một tổ hợp cổng / giao thức / địa chỉ IP để chờ các yêu cầu từ các client của dịch vụ.

Khi nhận được một yêu cầu, nó sẽ cài đặt kết nối với client (khi thích hợp) bằng cách sử dụng cùng một cổng mà nó đã lắng nghe. Vì các socket internet được sử dụng được liên kết với một địa chỉ IP client cụ thể, điều này không ngăn server lắng nghe và cung cấp đồng thời các yêu cầu cho các client khác.

  • Quét cổng : Quét cổng là quá trình cố gắng kết nối với một số cổng tuần tự, nhằm mục đích thu thập thông tin về cổng nào đang mở cũng như dịch vụ và hệ điều hành đằng sau chúng.

Xác định các cổng chung

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

  • Nhiều cổng dưới 1024 được liên kết với các dịch vụ mà các hệ điều hành giống như Linux và Unix coi là quan trọng đối với các chức năng mạng thiết yếu, vì vậy bạn phải có quyền root để gán dịch vụ cho chúng.

  • Các cổng từ 1024 đến 49151 được coi là "đã đăng ký". Điều này nghĩa là chúng có thể được “dành riêng” (theo nghĩa rất lỏng lẻo của từ này) cho một số dịch vụ nhất định bằng cách đưa ra yêu cầu cho IANA (Cơ quan cấp số hiệu Internet). Chúng không được thực thi nghiêm ngặt, nhưng chúng có thể cung cấp manh mối về các dịch vụ có thể chạy trên một cổng nhất định.

  • Không thể đăng ký các cổng từ 49152 đến 65535 và được đề xuất để sử dụng riêng.

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

Tuy nhiên, có một số cổng đáng được biết đến do tính phổ biến của chúng. Sau đây chỉ là một danh sách rất đầy đủ:

  • 20 : Dữ liệu FTP
  • 21 : Cổng điều khiển FTP
  • 22 : SSH
  • 23 : Telnet (Không an toàn, không được khuyến khích cho hầu hết các mục đích sử dụng)
  • 25 : SMTP
  • 43 : Giao thức WHOIS
  • 53 : Dịch vụ DNS
  • 67 : Cổng server DHCP
  • 68 : Cổng client DHCP
  • 80 : HTTP - Truy cập web không được mã hóa
  • 110 : Cổng thư POP3
  • 113 : Dịch vụ xác thực danh tính trên mạng IRC
  • 143 : Cổng thư IMAP
  • 161 : SNMP
  • 194 : IRC
  • 389 : Cổng LDAP
  • 443 : HTTPS - Truy cập web an toàn
  • 587 : SMTP - cổng gửi tin nhắn
  • 631 : Cổng daemon in CUPS
  • 666 : DOOM - Trò chơi kế thừa này thực sự có cổng đặc biệt của riêng nó

Đây chỉ là một vài trong số các dịch vụ thường được liên kết với các cổng. Bạn có thể tìm thấy các cổng thích hợp cho các ứng dụng bạn đang cố gắng cấu hình trong tài liệu tương ứng của chúng.

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

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

  • less /etc/services

Nó sẽ cung cấp cho bạn danh sách các cổng phổ biến và các dịch vụ liên quan của chúng:

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 thuộc vào hệ thống của bạn, điều này sẽ hiển thị nhiều trang. Nhấn phím SPACE để xem trang tiếp theo của các mục nhập hoặc nhấn Q để quay lại dấu nhắc của bạn.

Đây không phải là một danh sách đầy đủ; bạn có thể thấy điều đó trong thời gian ngắn.

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

Có một số công cụ bạn có thể sử dụng để quét các cổng đang mở. Một cái được cài đặt theo 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 phát hiện ra những dịch vụ bạn đang chạy bằng cách ra lệnh với các tham số sau:

  • 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

Điều này hiển thị cổng và socket lắng nghe được liên kết với dịch vụ và liệt kê cả giao thức UDP và TCP.

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

Sử dụng Nmap

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

Trong số tất cả các công cụ có sẵn cho việc này, 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 lệnh :

  • sudo apt-get update
  • sudo apt-get install nmap

Một trong những lợi ích phụ của việc cài đặt phần mềm này là file ánh xạ cổng được cải thiện. Bạn có thể thấy mối liên kết rộng hơn nhiều giữa các cổng và dịch vụ bằng cách xem trong file này:

  • less /usr/share/nmap/nmap-services

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

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 . . .

Bên cạnh việc có gần 20 nghìn dòng, file này còn có các trường bổ sung, chẳng hạn như cột thứ ba, liệt kê tần suất mở của cổng đó được phát hiện trong quá trình quét nghiên cứu trên internet.

Cổng quét với nmap

Nmap có thể tiết lộ nhiều thông tin về một server . Nó cũng có thể làm cho administrator hệ thống của hệ thống đích nghĩ rằng ai đó có ý đồ xấu. Vì lý do này, chỉ kiểm tra nó trên các server mà bạn sở hữu hoặc trong các tình huống mà bạn đã thông báo cho chủ sở hữu.

Những người tạo nmap cung cấp một server thử nghiệm đặt tại scanme.nmap.org .

Đây hoặc server của chính bạn là những mục tiêu tốt để thực hành nmap.

Dưới đây là một số hoạt động phổ biến có thể được thực hiện với nmap. Ta sẽ chạy tất cả chúng với quyền sudo để tránh trả lại kết quả từng phần cho một số truy vấn. Một số lệnh có thể mất nhiều thời gian để hoàn thành:

Quét hệ điều hành server :

  • sudo nmap -O scanme.nmap.org

Bỏ qua phần khám phá mạng và giả sử server đang trực tuyến. Điều này rất hữu ích nếu bạn nhận được câu trả lời có nội dung “Lưu ý: Server có vẻ không hoạt động” trong các thử nghiệm khác của bạn. Thêm điều này vào các tùy chọn khác:

  • sudo nmap -PN scanme.nmap.org

Quét mà không cần định dạng trước tra cứu DNS ngược trên địa chỉ IP được chỉ định. Điều này sẽ tăng tốc kết quả của bạn 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ì tất cả các cổng thông thường:

  • sudo nmap -p 80 scanme.nmap.org

Để quét các kết nối TCP, nmap có thể thực hiện bắt tay 3 chiều (giải thích bên dưới), với cổng được nhắm đến . Thực thi nó như thế này:

  • sudo nmap -sT scanme.nmap.org

Để quét các kết nối UDP, hãy nhập:

  • sudo nmap -sU scanme.nmap.org

Quét mọi cổng mở TCP và UDP:

  • sudo nmap -n -PN -sT -sU -p- scanme.nmap.org

Quá trình quét “SYN” trong TCP khai thác cách TCP cài đặt kết nối.

Để bắt đầu kết nối TCP, terminal yêu cầu sẽ gửi một gói "yêu cầu đồng bộ hóa" đến server . Sau đó, server sẽ gửi lại một gói "đồng bộ hóa xác nhận". Sau đó, người gửi ban đầu sẽ gửi lại một gói “xác nhận” trở lại server và kết nối được cài đặt .

Tuy nhiên, quá trình quét “SYN” sẽ làm mất kết nối khi gói đầu tiên được trả về từ server . Đây được gọi là quá trình quét "nửa mở" và được sử dụng để quảng cáo như một cách để quét lén các cổng, vì ứng dụng được liên kết với cổng đó sẽ không nhận được lưu lượng truy cập vì kết nối không bao giờ hoàn tất.

Điều này không còn được coi là lén lút với việc áp dụng các firewall tiên tiến hơn và gắn cờ yêu cầu SYN không đầy đủ trong nhiều cấu hình.

Để thực hiện quét SYN, hãy thực hiện:

  • sudo nmap -sS scanme.nmap.org

Một cách tiếp cận lén lút hơn là gửi các tiêu đề TCP không hợp lệ, nếu server lưu trữ tuân theo các thông số kỹ thuật TCP, sẽ gửi lại một gói nếu cổng đó bị đóng. Điều này sẽ hoạt động trên các server không chạy Windows.

Bạn có thể sử dụng cờ “-sF”, “-sX” hoặc “-sN”. Tất cả chúng sẽ tạo ra phản hồi mà ta đang tìm kiếm:

  • sudo nmap -PN -p 80 -sN scanme.nmap.org

Để xem version dịch vụ nào đang chạy trên server , bạn có thể thử lệnh này. Nó cố gắng xác định dịch vụ và version bằng cách thử nghiệm các phản hồi khác nhau từ server :

  • sudo nmap -PN -p 80 -sV scanme.nmap.org

Cuối cùng, bạn có thể sử dụng nmap để quét nhiều máy.

Để chỉ định một dải địa chỉ IP với “-” hoặc “/ 24” để quét một số server cùng một lúc, hãy sử dụng một lệnh như sau:

  • sudo nmap -PN xxx.xxx.xxx.xxx-yyy

Hoặc quét một dải mạng để tìm các dịch vụ khả dụng bằng lệnh như sau:

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

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

Kết luận

Hiểu cấu hình cổng và cách phát hiện ra các vectơ tấn công trên server của bạn chỉ là một bước để bảo mật thông tin của bạn và VPS của bạn. Tuy nhiên, đó là một kỹ năng cần thiết.

Việc khám phá các cổng nào đang mở và thông tin nào có thể thu được từ các dịch vụ chấp nhận kết nối trên các cổng đó cung cấp cho bạn thông tin mà bạn cần để khóa server của bạn . Mọi thông tin không liên quan bị rò rỉ ra khỏi máy của bạn đều có thể bị user độc hại sử dụng để cố gắng khai thác các lỗ hổng đã biết hoặc phát triển các lỗ hổng mới. Họ có thể tìm ra càng ít càng tốt.


Tags:

Các tin liên quan