Mục lục

Không có mục lục

Cách kiểm tra cấu hình tường lửa của bạn với Nmap và Tcpdump

Ngày đăng: 15 tháng 9 năm 2023

Giới thiệu

Thiết lập tường lửa cho cơ sở hạ tầng của bạn là một cách tuyệt vời để cung cấp bảo mật cho các dịch vụ của bạn. Khi bạn đã phát triển một chính sách mà bạn hài lòng, bước tiếp theo là kiểm tra các quy tắc tường lửa của bạn. Điều quan trọng là phải biết rõ liệu các quy tắc tường lửa của bạn có đang làm những gì bạn nghĩ chúng đang làm hay không và để có ấn tượng về cơ sở hạ tầng của bạn trông như thế nào với thế giới bên ngoài.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu một số công cụ và kỹ thuật mà bạn có thể sử dụng để xác thực các quy tắc tường lửa của mình. Đây là một số công cụ tương tự mà người dùng độc hại (malicious users) có thể sử dụng, vì vậy bạn sẽ có thể xem thông tin nào họ có thể tìm thấy bằng cách đưa ra yêu cầu đối với máy chủ của bạn.

Điều kiện tiên quyết

Trong hướng dẫn này, chúng tôi giả định rằng bạn đã cấu hình tường lửa trên ít nhất một máy chủ. Bạn có thể bắt đầu xây dựng chính sách tường lửa của mình bằng cách làm theo một hoặc nhiều hướng dẫn sau:

  • Iptables: Iptables Essentials: Các lệnh và quy tắc tường lửa phổ biến
  • UFW:
    • Cách thiết lập tường lửa với UFW trên Ubuntu 22.04
    • UFW Essentials: Các lệnh và quy tắc tường lửa chung
  • FirewallD: Cách thiết lập tường lửa bằng FirewallD trên Rocky Linux 9

Trong hướng dẫn này, chúng tôi sẽ gọi máy chủ chứa các chính sách tường lửa mà bạn muốn kiểm tra mục tiêu. Ngoài mục tiêu của bạn, bạn cũng sẽ cần có quyền truy cập vào một máy chủ để kiểm tra, nằm bên ngoài mạng mà tường lửa của bạn bảo vệ. Trong hướng dẫn này, bạn sẽ sử dụng máy chủ Ubuntu 22.04 làm máy kiểm tra của mình.

Khi bạn có một máy chủ để kiểm tra và các mục tiêu bạn muốn đánh giá, bạn có thể tiếp tục với hướng dẫn này.

Cảnh báo: Bạn chỉ nên thực hiện các hoạt động được nêu trong hướng dẫn này trên cơ sở hạ tầng mà bạn kiểm soát, nhằm mục đích kiểm tra bảo mật. Các luật xung quanh việc quét port (port scanning) không chắc chắn ở nhiều khu vực pháp lý. ISP và các nhà cung cấp khác đã được biết là cấm người dùng bị phát hiện quét port.

Các công cụ chúng tôi sẽ sử dụng để kiểm tra chính sách tường lửa

Có khá nhiều công cụ khác nhau mà bạn có thể sử dụng để kiểm tra các chính sách tường lửa của chúng tôi. Một số trong số chúng có chức năng chồng chéo. Chúng tôi sẽ không đề cập đến tất cả mọi công cụ. Thay vào đó, chúng tôi sẽ đề cập đến một số loại công cụ kiểm toán chung và xem qua các công cụ chúng tôi sẽ sử dụng trong hướng dẫn này.

Packet Analyzers

Packet Analyzers có thể được sử dụng để xem tất cả lưu lượng mạng (network traffic) đi qua một giao diện rất chi tiết. Hầu hết các bộ packet analyzer đều có tùy chọn hoạt động trong thời gian thực, hiển thị các gói khi chúng được gửi hoặc nhận hoặc ghi thông tin gói vào một tệp và sau đó xử lý nó. Packet analysis cung cấp cho bạn khả năng xem, ở cấp độ chi tiết, loại phản hồi mà máy mục tiêu của bạn đang gửi trở lại máy chủ trên mạng mở (the open network).

Với mục đích của hướng dẫn này, chúng tôi sẽ sử dụng công cụ tcpdump. Đây là một lựa chọn tốt vì nó mạnh mẽ, linh hoạt và phổ biến trên các hệ thống Linux. Bạn sẽ sử dụng nó để capture các raw packets khi chúng ta chạy thử nghiệm trong trường hợp cần bản ghi để phân tích sau này. Một số tùy chọn phổ biến khác là Wireshark (hoặc tshark) và tcpflow có thể ghép toàn bộ các cuộc hội thoại TCP lại với nhau theo kiểu có tổ chức.

Port Scanners

Để tạo lưu lượng truy cập và phản hồi cho packet analyzer của bạn, bạn sẽ sử dụng port scanner. Port Scanners có thể được sử dụng để tạo và gửi các loại gói khác nhau đến các máy chủ từ xa để khám phá loại lưu lượng mà máy chủ chấp nhận. Người dùng ác ý thường sử dụng công cụ này như một công cụ khám phá để cố gắng tìm các dịch vụ dễ bị tấn công để khai thác (một phần lý do sử dụng tường lửa ngay từ đầu), vì vậy bạn sẽ sử dụng công cụ này để thử xem kẻ tấn công có thể phát hiện ra điều gì.

Đối với hướng dẫn này, bạn sẽ sử dụng công cụ network map nmap và port scanner. Bạn có thể sử dụng nmap để gửi các gói thuộc nhiều loại khác nhau để cố gắng tìm ra dịch vụ nào trên máy mục tiêu của bạn và quy tắc tường lửa nào bảo vệ dịch vụ đó.

Thiết lập Auditing Machine

Trước khi bắt đầu, bạn nên đảm bảo rằng chúng ta đã cài đặt các công cụ cần thiết. Bạn có thể lấy tcpdumpnmap từ kho của Ubuntu. Chạy apt update để cập nhật danh sách gói cục bộ của bạn, sau đó cài đặt chúng bằng apt install:

  1. sudo apt update
  2. sudo apt install tcpdump nmap

Tiếp theo, tạo một thư mục nơi bạn có thể lưu trữ kết quả quét của mình:

  1. mkdir ~/scan_results

Để đảm bảo rằng bạn nhận được kết quả rõ ràng, hãy thoát khỏi bất kỳ phiên nào bạn có thể mở giữa hệ thống kiểm tra và hệ thống đích. Điều này bao gồm các phiên SSH, mọi kết nối HTTP(S) mà bạn có thể đã thiết lập trong trình duyệt web, v.v.

Quét mục tiêu của bạn để tìm các cổng TCP mở

Bây giờ chúng ta đã có máy chủ và tệp sẵn sàng, bạn sẽ bắt đầu bằng cách quét máy chủ mục tiêu của mình để tìm các cổng TCP đang mở.

Thực tế có một số lần quét TCP mà nmap biết cách thực hiện. Cách tốt nhất để bắt đầu là quét SYN, còn được gọi là “half-open scan” vì nó không bao giờ thực sự đàm phán một kết nối TCP đầy đủ. Điều này thường được những kẻ tấn công sử dụng vì nó không đăng ký trên một số hệ thống phát hiện xâm nhập bởi nó không bao giờ hoàn thành quá trình handshake đầy đủ.

Thiết lập Packet Capture

Trước khi quét, bạn sẽ thiết lập tcpdump để capture lưu lượng truy cập do quá trình kiểm tra tạo ra. Điều này sẽ giúp bạn phân tích các gói được gửi và nhận chi tiết hơn sau này nếu cần. Tạo một thư mục trong ~/scan_results để bạn có thể giữ các tệp liên quan đến quá trình quét SYN của mình cùng nhau:

  1. mkdir ~/scan_results/syn_scan

Bạn có thể bắt đầu capture tcpdump và ghi kết quả vào một tệp trong thư mục ~/scan_results/syn_scan bằng lệnh sau:

  1. sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

Theo mặc định, tcpdump sẽ chạy ở nền trước. Để chạy quét nmap trong cùng một cửa sổ, bạn cần tạm dừng quá trình tcpdump và sau đó khởi động lại nó trong nền.

Chúng ta có thể tạm dừng một tiến trình đang chạy bằng cách nhấn CTRL-Z:

Output
^Z [1]+ Stopped sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

Bây giờ, bạn có thể khởi động lại công việc ở chế độ nền bằng cách gõ bg:

  1. bg

Bạn sẽ nhận được một dòng đầu ra tương tự, lần này không có nhãn “Stopped” và có ký hiệu ở cuối để cho biết rằng quy trình sẽ được chạy ở chế độ nền (tức là không chặn thiết bị đầu cuối của bạn nữa):

Output
[1]+ sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets &

Lệnh hiện đang chạy ở chế độ nền, theo dõi mọi gói tin đi giữa máy kiểm tra và máy mục tiêu của bạn. Bây giờ chúng ta có thể chạy quét SYN.

Chạy Quét SYN

Với tcpdump ghi lại lưu lượng truy cập của bạn đến máy đích, bạn đã sẵn sàng chạy nmap. Bạn có thể chạy nmap với những cờ này:

  • -sS: Thao tác này sẽ bắt đầu quá trình quét SYN. Về mặt kỹ thuật, đây là quá trình quét mặc định mà nmap sẽ thực hiện nếu không có loại quét nào được cung cấp, nhưng chúng tôi sẽ đưa nó vào đây để cho rõ ràng.
  • -Pn: Thao tác này yêu cầu nmap bỏ qua bước khám phá máy chủ, bước này sẽ hủy bỏ quá trình kiểm tra sớm nếu máy chủ không phản hồi với ping. Vì bạn biết rằng mục tiêu đang trực tuyến nên bạn có thể bỏ qua bước này.
  • -p-: Theo mặc định, quét SYN sẽ chỉ thử 1000 cổng được sử dụng phổ biến nhất. Thao tác này yêu cầu nmap kiểm tra mọi cổng có sẵn.
  • -T4: Thao tác này đặt cấu hình thời gian cho nmap, yêu cầu nó tăng tốc độ kiểm tra trước nguy cơ kết quả kém chính xác hơn một chút. 0 là chậm nhất và 5 là nhanh nhất. Vì bạn đang quét mọi cổng nên bạn có thể sử dụng cổng này làm đường cơ sở và kiểm tra lại bất kỳ cổng nào có thể đã được báo cáo không chính xác.
  • -vv: Thao tác này làm tăng tính dài dòng của đầu ra.
  • --reason: Thao tác này yêu cầu nmap cung cấp lý do trạng thái của cổng được báo cáo theo một cách nhất định.
  • -oN: Thao tác này ghi kết quả vào một tệp mà bạn có thể sử dụng để phân tích sau này.

Lưu ý: Để kiểm tra IPv6, bạn cần thêm cờ -6 vào lệnh của mình…

Cùng với nhau, lệnh sẽ trông giống như thế này:

  1. sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/scan_results/syn_scan/nmap.results target_ip_addr

Ngay cả với mẫu thời gian được đặt ở mức 4, quá trình quét có thể sẽ mất khá nhiều thời gian vì nó chạy qua 65.535 cổng. Kết quả sẽ bắt đầu được in trông như thế này:

Output
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2022-12-19 16:54 EDT Initiating Parallel DNS resolution of 1 host. at 16:54 Completed Parallel DNS resolution of 1 host. at 16:54, 0.12s elapsed Initiating SYN Stealth Scan at 16:54 Scanning 198.51.100.15 [65535 ports] Discovered open port 22/tcp on 198.51.100.15 Discovered open port 80/tcp on 198.51.100.15 SYN Stealth Scan Timing: About 6.16% done; ETC: 17:02 (0:07:52 remaining) SYN Stealth Scan Timing: About 8.60% done; ETC: 17:06 (0:10:48 remaining) . . .

Dừng tcpdump Packet Capture

Sau khi quá trình quét hoàn tất, bạn có thể đưa quy trình tcpdump của chúng tôi trở lại nền trước và dừng nó.

Đưa nó ra khỏi nền bằng cách chạy fg, dành cho “foreground”:

  1. fg

Dừng quá trình đang chạy bằng cách nhấn Ctrl+C.

Phân tích kết quả

Bây giờ bạn sẽ có hai tệp trong thư mục ~/scan_results/syn_scan. Một gói được gọi là packets, được tạo bởi quá trình chạy tcpdump và một gói được tạo bởi nmap có tên là nmap.results.

Trước tiên hãy xem tệp nmap.results:

  1. less ~/scan_results/syn_scan/nmap.results
~/scan_results/syn_scan/nmap.results
# Nmap 6.49BETA4 scan initiated Mon Dec 19 17:05:13 2022 as: nmap -sS -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/syn_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 9226 out of 23064 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 14 out of 34 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.00097s latency).
Scanned at 2022-12-19 17:05:13 EDT for 2337s
<^>Not shown: 65533 closed ports<^
<^Reason: 65533 resets<^
<^PORT   STATE SERVICE REASON<^
<^22/tcp open  ssh     syn-ack ttl 63<^
<^80/tcp open  http    syn-ack ttl 63<^

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Mon Dec 19 17:44:10 2022 -- 1 IP address (1 host up) scanned in 2336.85 seconds

Vùng được đánh dấu ở trên chứa các kết quả chính của quá trình quét. Bạn có thể suy ra rằng cổng 22 và cổng 80 đang mở trên máy chủ được quét để cho phép lưu lượng SSH và HTTP. Bạn cũng có thể quan sát thấy 65.533 cổng đã bị đóng. Một kết quả khác có thể xảy ra là “filtered”. Filtered có nghĩa là các cổng này được xác định là bị chặn bởi thứ gì đó dọc theo đường dẫn mạng. Nó có thể là tường lửa trên mục tiêu nhưng cũng có thể lọc các quy tắc trên bất kỳ máy chủ trung gian nào giữa máy kiểm tra và máy mục tiêu.

Để xem lưu lượng gói thực tế đã được gửi đến và nhận từ mục tiêu, bạn có thể đọc tệp packets trở lại tcpdump, như sau:

  1. sudo tcpdump -nn -r ~/scan_results/syn_scan/packets | less

Tệp này chứa toàn bộ cuộc trò chuyện diễn ra giữa hai máy chủ. Bạn có thể lọc theo một số cách.

Ví dụ: để chỉ xem lưu lượng được gửi đến mục tiêu, bạn có thể nhập:

  1. sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'dst target_ip_addr' | less

Tương tự, để chỉ xem lưu lượng phản hồi, bạn có thể thay đổi dst thành src:

  1. sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr' | less

Các cổng TCP mở sẽ đáp ứng các yêu cầu này bằng gói SYN. Chúng tôi có thể tìm kiếm trực tiếp các câu trả lời cho loại này bằng bộ lọc như sau:

  1. sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr and tcp[tcpflags] & tcp-syn != 0' | less

Điều này sẽ chỉ hiển thị cho bạn các phản hồi SYN thành công và phải khớp với các cổng mà bạn đã thấy trong quá trình chạy nmap:

Output
reading from file packets, link-type EN10MB (Ethernet) 17:05:13.557597 IP 198.51.100.15.22 > 198.51.100.2.63872: Flags [S.], seq 2144564104, ack 4206039348, win 29200, options [mss 1460], length 0 17:05:13.558085 IP 198.51.100.15.80 > 198.51.100.2.63872: Flags [S.], seq 3550723926, ack 4206039348, win 29200, options [mss 1460], length 0

Bạn có thể phân tích thêm dữ liệu khi bạn thấy phù hợp. Tất cả đã được ghi lại để xử lý và phân tích không đồng bộ.

Quét mục tiêu của bạn để tìm các cổng UDP mở

Bây giờ bạn đã nắm rõ cách chạy các thử nghiệm này, bạn có thể hoàn tất quy trình tương tự để quét các cổng UDP đang mở.

Thiết lập Packet Capture

Một lần nữa, hãy tạo một thư mục để lưu kết quả của bạn:

  1. mkdir ~/scan_results/udp_scan

Bắt đầu capture lại tcpdump. Lần này, hãy ghi tệp vào thư mục ~/scan_results/udp_scan mới:

  1. sudo tcpdump host target_ip_addr -w ~/scan_results/udp_scan/packets

Tạm dừng quá trình và đặt nó vào nền bằng cách nhập Ctrl+Z sau đó chạy bg:

  1. bg

Chạy quét UDP

Bây giờ bạn đã sẵn sàng để chạy quét UDP. Do tính chất của giao thức UDP, quá trình quét này thường sẽ mất nhiều thời gian hơn so với quá trình quét SYN. Trên thực tế, có thể mất hơn một ngày nếu bạn quét mọi cổng trên hệ thống. UDP là một giao thức không có kết nối, vì vậy việc không nhận được phản hồi có thể có nghĩa là cổng của mục tiêu bị chặn, cổng đó được chấp nhận hoặc gói bị mất. Để cố gắng phân biệt giữa những điều này, nmap phải truyền lại các gói bổ sung để cố gắng nhận được phản hồi.

Hầu hết các cờ sẽ giống với cờ bạn đã sử dụng để quét SYN. Trên thực tế, lá cờ mới duy nhất là:

  • -sU: Lệnh này yêu cầu nmap thực hiện quét UDP.

Tăng tốc kiểm tra UDP

Nếu lo lắng về lượng thời gian cần thiết cho việc kiểm tra này, trước tiên bạn có thể kiểm tra một tập hợp con các cổng UDP của mình. Bạn chỉ có thể kiểm tra 1000 cổng phổ biến nhất bằng cách bỏ cờ -p-. Điều này có thể rút ngắn đáng kể thời gian quét của bạn. Tuy nhiên, nếu muốn có một bức tranh hoàn chỉnh, bạn sẽ phải quay lại sau và quét toàn bộ phạm vi cổng của mình.

Bởi vì bạn đang quét cơ sở hạ tầng của riêng mình, có lẽ tùy chọn tốt nhất để tăng tốc độ quét UDP là tạm thời vô hiệu hóa giới hạn tốc độ ICMP trên hệ thống mục tiêu. Thông thường, các máy chủ Linux giới hạn phản hồi ICMP ở mức 1 lần mỗi giây (điều này thường là một điều tốt, nhưng không phải để kiểm tra), điều đó có nghĩa là quá trình quét UDP đầy đủ sẽ mất hơn 18 giờ. Bạn có thể kiểm tra cài đặt này trên máy mục tiêu của mình bằng cách nhập:

  1. sudo sysctl net.ipv4.icmp_ratelimit
Output
net.ipv4.icmp_ratelimit = 1000

“1000” là số mili giây giữa các phản hồi. Bạn có thể tạm thời vô hiệu hóa giới hạn tốc độ này trên hệ thống mục tiêu bằng cách gõ:

  1. sudo sysctl -w net.ipv4.icmp_ratelimit=0

Điều rất quan trọng là hoàn nguyên giá trị này sau khi thử nghiệm.

Chạy thử nghiệm

Hãy nhớ ghi kết quả vào thư mục ~/scan_results/udp_scan. Tất cả cùng nhau, lệnh sẽ trông như thế này:

  1. sudo nmap -sU -Pn -p- -T4 -vv --reason -oN ~/scan_results/udp_scan/nmap.results target_ip_addr

Sau khi quá trình quét hoàn tất, bạn nên hoàn nguyên giới hạn tốc độ ICMP (nếu bạn đã sửa đổi nó) trên target machine:

  1. sudo sysctl -w net.ipv4.icmp_ratelimit=1000

Dừng tcpdump Packet Capture

Đưa quy trình tcpdump trở lại nền trước trên máy kiểm tra của bạn bằng cách chạy fg:

  1. fg

Sau đó, dừng packet capture bằng Ctrl+C.

Phân tích kết quả

Bây giờ, bạn có thể xem các tập tin được tạo.

Tệp nmap.results thu được phải giống với kết quả cuối cùng:

  1. less ~/scan_results/udp_scan/nmap.results
~/scan_results/udp_scan/nmap.results
# Nmap 6.49BETA4 scan initiated Mon Dec 19 12:42:42 2022 as: nmap -sU -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/udp_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 50 due to 10445 out of 26111 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 50 to 100 due to 11 out of 23 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 100 to 200 due to 3427 out of 8567 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0010s latency).
Scanned at 2022-12-19 12:42:42 EDT for 9956s
Not shown: 65532 closed ports
Reason: 65532 port-unreaches
PORT    STATE         SERVICE REASON
22/udp  open|filtered ssh     no-response
80/udp  open|filtered http    no-response
443/udp open|filtered https   no-response

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Mon Dec 19 15:28:39 2022 -- 1 IP address (1 host up) scanned in 9956.97 seconds

Sự khác biệt chính giữa kết quả này và kết quả SYN trước đó có thể là số lượng cổng được đánh dấu là open|filtered. Điều này có nghĩa là nmap không thể xác định liệu việc thiếu phản hồi có nghĩa là dịch vụ đã chấp nhận lưu lượng truy cập hay liệu nó đã bị loại bỏ bởi một số tường lửa hoặc cơ chế lọc dọc theo đường dẫn phân phối.

Việc phân tích đầu ra tcpdump cũng khó khăn hơn đáng kể vì không có cờ kết nối và vì bạn phải khớp các phản hồi ICMP với các yêu cầu UDP.

Bạn có thể xem nmap phải gửi bao nhiêu gói đến các cổng được báo cáo là open|filtered bằng cách yêu cầu xem lưu lượng UDP đến một trong các cổng được báo cáo:

  1. sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 22'
Output
reading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet) 14:57:40.801956 IP 198.51.100.2.60181 > 198.51.100.15.22: UDP, length 0 14:57:41.002364 IP 198.51.100.2.60182 > 198.51.100.15.22: UDP, length 0 14:57:41.202702 IP 198.51.100.2.60183 > 198.51.100.15.22: UDP, length 0 14:57:41.403099 IP 198.51.100.2.60184 > 198.51.100.15.22: UDP, length 0 14:57:41.603431 IP 198.51.100.2.60185 > 198.51.100.15.22: UDP, length 0 14:57:41.803885 IP 198.51.100.2.60186 > 198.51.100.15.22: UDP, length 0

So sánh kết quả này với kết quả từ một trong các cổng được quét được đánh dấu là “closed”:

  1. sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 53'
Output
reading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet) 13:37:24.219270 IP 198.51.100.2.60181 > 198.51.100.15.53: 0 stat [0q] (12)

Bạn có thể thử xây dựng lại quy trình mà nmap thực hiện theo cách thủ công bằng cách trước tiên biên soạn danh sách tất cả các cổng mà chúng tôi đang gửi gói UDP tới bằng cách sử dụng một cái gì đó như thế này:

  1. sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets "udp" | awk '{print $5;}' | awk 'BEGIN { FS = "." } ; { print $5 +0}' | sort -u | tee outgoing

Sau đó, bạn có thể xem gói ICMP nào chúng tôi nhận được cho biết cổng không thể truy cập được:

  1. sudo tcpdump -nn -Q in -r ~/scan_results/udp_scan/packets "icmp" | awk '{print $10,$11}' | grep unreachable | awk '{print $1}' | sort -u | tee response

Sau đó, bạn có thể lấy hai phản hồi này và xem gói UDP nào chưa bao giờ nhận được phản hồi ICMP:

  1. comm -3 outgoing response

Điều này hầu hết phải khớp với danh sách các cổng mà nmap đã báo cáo (nó có thể chứa một số kết quả dương tính giả từ các gói trả về bị mất).

Khám phá máy chủ và dịch vụ

Bạn có thể chạy một số thử nghiệm bổ sung trên mục tiêu của mình để xem liệu nmap có thể xác định hệ điều hành đang chạy hoặc bất kỳ phiên bản dịch vụ nào không. Tạo một thư mục để lưu kết quả phiên bản của bạn:

  1. mkdir ~/scan_results/versions

Khám phá các phiên bản dịch vụ trên máy chủ

Bạn có thể thử đoán phiên bản dịch vụ đang chạy trên mục tiêu thông qua một quá trình được gọi là lấy dấu vân tay. Bạn lấy thông tin từ máy chủ và so sánh nó với các phiên bản đã biết trong cơ sở dữ liệu của chúng tôi.

Tcpdump sẽ không quá hữu ích trong trường hợp này nên bạn có thể bỏ qua nó. Nếu bạn vẫn muốn capture nó, hãy làm theo quy trình bạn đã sử dụng lần trước.

Quét nmap bạn cần sử dụng được kích hoạt bởi cờ -sV. Vì bạn đã thực hiện quét SYN và UDP nên bạn có thể chuyển vào các cổng chính xác mà bạn cần xem bằng cờ -p. Tại đây, bạn sẽ xem xét 22 và 80 (các cổng được hiển thị trong quá trình quét SYN của chúng tôi):

  1. sudo nmap -sV -Pn -p 22,80 -vv --reason -oN ~/scan_results/versions/service_versions.nmap target_ip_addr

Nếu bạn xem tệp kết quả, bạn có thể nhận được thông tin về dịch vụ đang chạy, tùy thuộc vào mức độ "chatty" của dịch vụ đó:

  1. less ~/scan_results/versions/service_versions.nmap
~/scan_results/versions/service_versions.nmap
# Nmap 6.49BETA4 scan initiated Mon Dec 19 15:46:12 2022 as: nmap -sV -Pn -p 22,80 -vv --reason -oN /home/user/scan_results/versions/service_versions.nmap 198.51.100.15
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0011s latency).
Scanned at 2022-12-19 15:46:13 EDT for 8s
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    syn-ack ttl 63 nginx 1.4.6 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/local/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 19 15:46:21 2022 -- 1 IP address (1 host up) scanned in 8.81 seconds

Tại đây, bạn có thể thấy rằng quá trình kiểm tra có thể xác định phiên bản máy chủ SSH và bản phân phối Linux đã đóng gói nó, cũng như phiên bản giao thức SSH được chấp nhận. Nó cũng nhận ra phiên bản Nginx và một lần nữa xác định nó phù hợp với gói Ubuntu.

Khám phá hệ điều hành máy chủ

Bạn có thể thử để nmap đoán hệ điều hành máy chủ dựa trên các đặc điểm của phần mềm và phản hồi của nó. Điều này hoạt động theo cách tương tự như phiên bản dịch vụ. Một lần nữa, chúng tôi sẽ bỏ qua quá trình chạy tcpdump khỏi quá trình kiểm tra này, nhưng bạn có thể thực hiện nó nếu muốn.

Cờ bạn cần để thực hiện phát hiện hệ điều hành là -O (chữ in hoa “O”). Một lệnh đầy đủ có thể trông giống như thế này:

  1. sudo nmap -O -Pn -vv --reason -oN ~/scan_results/versions/os_version.nmap target_ip_addr

Nếu bạn xem tệp đầu ra, bạn có thể thấy một cái gì đó như thế này:

  1. less ~/scan_results/versions/os_version.nmap
~/scan_results/versions/os_versions.nmap
# Nmap 6.49BETA4 scan initiated Mon Dec 19 15:53:54 2022 as: nmap -O -Pn -vv --reason -oN /home/user/scan_results/versions/os_version.nmap 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 65 out of 215 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 11 out of 36 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 10 to 20 due to 11 out of 35 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 20 to 40 due to 11 out of 29 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 40 to 80 due to 11 out of 31 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0012s latency).
Scanned at 2022-12-19 15:53:54 EDT for 30s
Not shown: 998 closed ports
Reason: 998 resets
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=6.49BETA4%E=4%D=8/27%OT=22%CT=1%CU=40800%PV=N%DS=2%DC=I%G=Y%TM=55
OS:DF6AF0%P=x86_64-unknown-linux-gnu)SEQ(SP=F5%GCD=1%ISR=106%TI=Z%CI=Z%TS=8
OS:)OPS(O1=M5B4ST11NW8%O2=M5B4ST11NW8%O3=M5B4NNT11NW8%O4=M5B4ST11NW8%O5=M5B
OS:4ST11NW8%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120
OS:)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4NNSNW8%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+
OS:%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
OS:T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A
OS:=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPC
OS:K=G%RUCK=G%RUD=G)U1(R=N)IE(R=N)

Uptime guess: 1.057 days (since Mon Dec 12 14:32:23 2022)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=245 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/local/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 12 15:54:24 2022 -- 1 IP address (1 host up) scanned in 30.94 seconds

Chúng ta có thể thấy rằng trong trường hợp này, nmap không đoán được hệ điều hành dựa trên chữ ký mà nó nhìn thấy. Nếu nó nhận được nhiều thông tin hơn, nó có thể sẽ hiển thị nhiều tỷ lệ phần trăm khác nhau cho biết chữ ký của máy mục tiêu khớp với chữ ký của hệ điều hành trong cơ sở dữ liệu của nó như thế nào. Bạn có thể thấy chữ ký dấu vân tay (fingerprint signature) mà nmap nhận được từ mục tiêu bên dưới dòng TCP/IP fingerprint:.

Nhận dạng hệ điều hành có thể giúp kẻ tấn công xác định cách khai thác nào có thể hữu ích trên hệ thống. Việc định cấu hình tường lửa của bạn để đáp ứng ít yêu cầu hơn có thể giúp cản trở tính chính xác của một số phương pháp phát hiện này.

Kết luận

Kiểm tra tường lửa của bạn và xây dựng nhận thức về mạng nội bộ của bạn trông như thế nào đối với kẻ tấn công bên ngoài có thể giúp giảm thiểu rủi ro cho bạn. Thông tin bạn tìm thấy từ việc thăm dò cơ sở hạ tầng của chính mình có thể mở ra một cuộc trò chuyện về việc liệu có cần xem lại bất kỳ quyết định chính sách nào của bạn để tăng cường bảo mật hay không. Nó cũng có thể làm sáng tỏ bất kỳ lỗ hổng nào trong bảo mật của bạn có thể xảy ra do đặt hàng quy tắc không chính xác hoặc quên chính sách kiểm tra. Bạn nên thường xuyên kiểm tra các chính sách của mình bằng cơ sở dữ liệu quét mới nhất để cải thiện hoặc ít nhất là duy trì mức độ bảo mật hiện tại của bạn.

0 câu trả lời