1. Tổng quan.
Nmap là một công cụ mạng mã nguồn mở mạnh mẽ và phổ biến trong hệ thống Linux, được sử dụng để quét mạng và kiểm tra bảo mật hệ thống. Nó cung cấp nhiều tính năng mạnh mẽ cho việc khám phá mạng, xác định các dịch vụ mạng, và kiểm tra lỗ hổng bảo mật. Trong bài viết này, chúng ta sẽ tìm hiểu về cách sử dụng Nmap trong Linux để nắm rõ cách công cụ này hoạt động và làm thế nào để tận dụng nó trong việc bảo vệ hệ thống.
2. Cài đặt Nmap.
Nmap thường đã được cài sẵn trên nhiều bản phân phối Linux, nhưng nếu bạn chưa có nó, bạn có thể cài đặt bằng cách sử dụng trình quản lý gói của hệ thống. Ví dụ, trên Ubuntu, bạn có thể sử dụng lệnh sau:
sudo apt-get install nmap -y
3. Các ví dụ với cú pháp cơ bản.
– Scan port đang mở trên một IP ở chế độ port mặc định (1-1024), ví dụ scan các port đang mở trên IP 192.168.13.225.
$ nmap 192.168.13.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:05 +07
Nmap scan report for 192.168.13.225
Host is up (0.0050s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
3128/tcp open squid-http
Nmap done: 1 IP address (1 host up) scanned in 1.10 seconds
– Nmap quét cổng mặc định từ 1 đến 1024, do đó nếu máy chủ của mình đang sử dụng cổng 8006, Nmap không sẽ không phát hiện nó trong kết quả quét mặc định. Để kiểm tra cổng 8006 trên máy chủ 192.168.13.225, mình sẽ thể sử dụng tùy chọn -p
để chỉ định cổng cụ thể bạn muốn quét:
$ nmap -p 8006 192.168.13.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:06 +07
Nmap scan report for 192.168.13.225
Host is up (0.0049s latency).
PORT STATE SERVICE
8006/tcp open wpl-analytics
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
– Hoặc có thể chỉ định range port cụ thể ví dụ như 1 – 10000.
$ nmap -p 1-10000 192.168.13.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:07 +07
Nmap scan report for 192.168.13.225
Host is up (0.0049s latency).
Not shown: 9968 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
3128/tcp open squid-http
4082/tcp open lorica-out
4083/tcp open lorica-out-sec
4084/tcp open fortisphere-vm
4085/tcp open ezmessagesrv
6800/tcp open unknown
6801/tcp open acnet
6802/tcp open unknown
6803/tcp open unknown
6804/tcp open unknown
6805/tcp open unknown
6806/tcp open unknown
6807/tcp open unknown
6808/tcp open unknown
6809/tcp open unknown
6810/tcp open unknown
6811/tcp open unknown
6812/tcp open unknown
6813/tcp open unknown
6814/tcp open unknown
6815/tcp open unknown
6816/tcp open unknown
6817/tcp open pentbox-sim
6818/tcp open unknown
6819/tcp open unknown
6820/tcp open unknown
6821/tcp open unknown
6822/tcp open unknown
6823/tcp open unknown
8006/tcp open wpl-analytics
Nmap done: 1 IP address (1 host up) scanned in 10.22 seconds
– Hoặc bạn cũng có thể scan chỉ định port cụ thể.
$ nmap -p 80,443,8006,22 192.168.13.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:12 +07
Nmap scan report for 192.168.13.225
Host is up (0.0049s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
443/tcp closed https
8006/tcp open wpl-analytics
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
– Scan một range IP, kết quả là những IP nào không xuất hiện trong danh sách có nghĩa chúng chưa được sử dụng.
$ nmap 192.168.13.180-244
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:11 +07
Nmap scan report for 192.168.13.180
Host is up (0.0053s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
<đã bỏ bớt một số kết quả>
Nmap scan report for 192.168.13.238
Host is up (0.0048s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
Nmap scan report for 192.168.13.239
Host is up (0.0057s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
Nmap scan report for 192.168.13.244
Host is up (0.0050s latency).
Not shown: 994 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs
32769/tcp open filenet-rpc
32770/tcp open sometimes-rpc3
Nmap done: 65 IP addresses (34 hosts up) scanned in 39.54 seconds
Bạn cũng có thể chỉ định range port cụ thể đối với range IP nhé.
$ nmap -p 20-23 192.168.13.180-190
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:17 +07
Nmap scan report for 192.168.13.180
Host is up (0.0056s latency).
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
Nmap scan report for 192.168.13.181
Host is up (0.0056s latency).
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
Nmap scan report for 192.168.13.190
Host is up (0.0056s latency).
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
Nmap done: 11 IP addresses (3 hosts up) scanned in 1.68 seconds
– Để chỉ quét giao thức ICMP trên dải mạng 192.168.199.0/24, bạn có thể sử dụng tùy chọn -sn
(không quét cổng) để chỉ kiểm tra trạng thái online/offline của các máy chủ trong dải mạng. Dưới đây là cách bạn có thể làm điều này:
$ nmap -sn 192.168.199.0/24
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:19 +07
Nmap scan report for 192.168.199.1
Host is up (0.00043s latency).
Nmap scan report for 192.168.199.10
Host is up (0.00023s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 21.12 seconds
Lệnh trên sẽ thực hiện quét dải mạng 192.168.199.0/24 và kiểm tra xem các máy chủ trong dải này có trạng thái online hay offline thông qua giao thức ICMP. Nó sẽ không quét cổng TCP hoặc UDP, chỉ kiểm tra trạng thái qua giao thức ICMP.
– Để quét các IP trống trong subnet 192.168.13.0/24, bạn có thể sử dụng Nmap với các tham số dưới đây.
$ nmap 192.168.13.0/24 -n -T4 -p 22,8006,3306,80,443,1433,3389
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:24 +07
Nmap scan report for 192.168.13.11
Host is up (0.0056s latency).
PORT STATE SERVICE
22/tcp closed ssh
80/tcp closed http
443/tcp closed https
1433/tcp closed ms-sql-s
3306/tcp closed mysql
3389/tcp closed ms-wbt-server
8006/tcp closed wpl-analytics
Nmap scan report for 192.168.13.13
Host is up (0.0060s latency).
<đã bỏ một số kết quả>
PORT STATE SERVICE
22/tcp closed ssh
80/tcp closed http
443/tcp closed https
1433/tcp closed ms-sql-s
3306/tcp closed mysql
3389/tcp closed ms-wbt-server
8006/tcp closed wpl-analytics
Nmap scan report for 192.168.13.15
Host is up (0.0059s latency).
PORT STATE SERVICE
22/tcp filtered ssh
80/tcp open http
443/tcp filtered https
1433/tcp filtered ms-sql-s
3306/tcp filtered mysql
3389/tcp open ms-wbt-server
8006/tcp filtered wpl-analytics
Nmap done: 256 IP addresses (38 hosts up) scanned in 19.89 seconds
Ở đây:
192.168.13.0/24
: Đây là dải mạng mà bạn muốn quét. Dải này bao gồm tất cả các địa chỉ từ 192.168.13.0 đến 192.168.13.255.-n
: Ngăn Nmap thử tìm kiếm tên máy chủ cho các địa chỉ IP.-T4
: Thiết lập tốc độ quét. T4 là một cấu hình tương đối nhanh và thường được sử dụng.-p 22,8006,3306,80,443,1433,3389
: Điều này giúp bạn kiểm tra trạng thái của các máy chủ trên các cổng 80 (HTTP) và 443 (HTTPS).
Khi bạn chạy lệnh này, Nmap sẽ quét dải mạng 192.168.13.0/24 và xác định trạng thái online/offline của các máy chủ trong dải mạng này. Bất kỳ máy chủ nào có trạng thái online sẽ được liệt kê trong kết quả. Các máy chủ nào có trạng thái offline sẽ không xuất hiện trong danh sách kết quả.
– Để lấy kết quả về các địa chỉ IP được sử dụng trong dải mạng 192.168.13.0/24, bạn có thể sử dụng Nmap và sau đó phân tích kết quả để tìm các địa chỉ IP có trạng thái “open” (đã được sử dụng). Dưới đây là cách bạn có thể làm điều này:
$ nmap -sn -T4 192.168.13.180-244 -oG -
# Nmap 7.94 scan initiated Sun Oct 22 18:02:16 2023 as: nmap -sn -T4 -oG - 192.168.13.180-244
Host: 192.168.13.180 () Status: Up
Host: 192.168.13.181 () Status: Up
Host: 192.168.13.190 () Status: Up
Host: 192.168.13.191 () Status: Up
Host: 192.168.13.192 () Status: Up
Host: 192.168.13.193 () Status: Up
Host: 192.168.13.194 () Status: Up
Host: 192.168.13.195 () Status: Up
Host: 192.168.13.196 () Status: Up
Host: 192.168.13.197 () Status: Up
Host: 192.168.13.200 () Status: Up
Host: 192.168.13.205 () Status: Up
Host: 192.168.13.206 () Status: Up
Host: 192.168.13.209 () Status: Up
Host: 192.168.13.211 () Status: Up
Host: 192.168.13.212 () Status: Up
Host: 192.168.13.213 () Status: Up
Host: 192.168.13.214 () Status: Up
Host: 192.168.13.215 () Status: Up
Host: 192.168.13.216 () Status: Up
Host: 192.168.13.217 () Status: Up
Host: 192.168.13.218 () Status: Up
Host: 192.168.13.219 () Status: Up
Host: 192.168.13.220 () Status: Up
Host: 192.168.13.221 () Status: Up
Host: 192.168.13.223 () Status: Up
Host: 192.168.13.224 () Status: Up
Host: 192.168.13.225 () Status: Up
Host: 192.168.13.226 () Status: Up
Host: 192.168.13.227 () Status: Up
Host: 192.168.13.228 () Status: Up
Host: 192.168.13.238 () Status: Up
Host: 192.168.13.239 () Status: Up
Host: 192.168.13.244 () Status: Up
# Nmap done at Sun Oct 22 18:02:19 2023 -- 65 IP addresses (34 hosts up) scanned in 3.03 seconds
Ở đây:
-n
: Ngăn Nmap thử tìm kiếm tên máy chủ cho các địa chỉ IP.-T4
: Thiết lập tốc độ quét. T4 là một cấu hình tương đối nhanh và thường được sử dụng.-p 22,8006,3306,80,443,1433,3389
: Liệt kê các cổng bạn muốn quét.192.168.13.0/24
: Đây là dải mạng bạn muốn quét.-oG -
: Chuyển đầu ra của Nmap sang định dạng Greppable (Grep-able) và gửi đầu ra đó đến stdout (màn hình).grep "Status: Up"
: Lọc các dòng trong đầu ra của Nmap để chỉ lấy những dòng có chứa “Status: Up” (đã được xác định là online).awk '{print $2}'
: Trích xuất các địa chỉ IP từ các dòng đã lọc và in chúng ra màn hình.
Kết quả sẽ là danh sách các địa chỉ IP trong dải mạng 192.168.13.0/24 mà Nmap xác định là được sử dụng dựa trên việc có cổng trong danh sách quét được mở trên nó.
– Nmap có khả năng quét các cổng UDP cũng như cổng TCP. Để quét cổng UDP, bạn có thể sử dụng tùy chọn -sU
. Dưới đây là cách sử dụng Nmap để quét cổng UDP trên một máy chủ hoặc dải mạng cụ thể:
$ sudo nmap -sU -p U:5060,53 192.168.13.200
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:49 +07
Nmap scan report for 192.168.13.200
Host is up (0.0063s latency).
PORT STATE SERVICE
22/udp closed ssh
53/udp closed domain
5060/udp open sip
Nmap done: 1 IP address (1 host up) scanned in 0.14 seconds
Trong ví dụ trên, chúng ta đang quét cổng UDP 53 (DNS) và 5060 (SIP) trên máy chủ có địa chỉ IP là 192.168.13.200. Bạn có thể điều chỉnh danh sách cổng UDP cụ thể mà bạn muốn quét bằng cách chỉ định chúng sau tùy chọn -p
. Và bạn cũng lưu ý là việc quét UDP thường mất thời gian hơn và phức tạp hơn so với quét TCP, do UDP không cung cấp cơ chế xác nhận trạng thái như TCP.
– Để quét các cổng UDP từ 5061 đến 5700 và cổng 5060, bạn nên sử dụng cú pháp như sau:
$ sudo nmap -sU -T4 -n -p U:5060,U:5061-5070 192.168.13.200
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-22 17:59 +07
Nmap scan report for 192.168.13.200
Host is up (0.0074s latency).
PORT STATE SERVICE
5060/udp open sip
5061/udp closed sip-tls
5062/udp closed na-localise
5063/udp closed unknown
5064/udp closed ca-1
5065/udp closed ca-2
5066/udp closed stanag-5066
5067/udp closed authentx
5068/udp closed unknown
5069/udp closed i-net-2000-npr
5070/udp closed vtsas
Nmap done: 1 IP address (1 host up) scanned in 4.56 seconds
Trong lệnh này, chúng ta đã sử dụng “U:” để chỉ định rõ ràng rằng chúng ta đang quét các cổng UDP. Khi bạn sử dụng “U:”, Nmap sẽ biết rằng bạn đang quét các cổng UDP cụ thể mà bạn đã chỉ định.
4. Phân tích kết quả.
Nmap cung cấp thông tin chi tiết về các máy chủ và dịch vụ trên mạng. Bạn có thể tìm hiểu về các dịch vụ đang chạy, các cổng mạng mở và các lỗ hổng bảo mật. Dưới đây là một số cách phân tích kết quả:
- Xác định phiên bản dịch vụ: Nmap có thể cố gắng xác định phiên bản chính xác của các dịch vụ mạng. Điều này có thể giúp bạn xác định các lỗ hổng cụ thể liên quan đến phiên bản.
- Kiểm tra bảo mật: Dựa vào kết quả quét, bạn có thể kiểm tra xem có các lỗ hổng bảo mật nào đang tồn tại trên mạng và thực hiện các biện pháp bảo mật phù hợp.
5. Chế độ ẩn của nmap.
Nmap cũng có khả năng hoạt động trong chế độ ẩn (stealth mode) để giảm thiểu truy cập mạng của bạn. Điều này có thể hữu ích trong các tình huống yêu cầu tính ẩn danh hoặc bảo mật cao.
Kết luận.
Nmap là một công cụ mạng mạnh mẽ trong Linux, giúp bạn kiểm tra bảo mật hệ thống và quét mạng. Với kiến thức về cách sử dụng và phân tích kết quả, bạn có thể nâng cao bảo mật hệ thống của mình và xác định lỗ hổng tiềm ẩn. Hãy tìm hiểu thêm về Nmap và tận dụng công cụ này để bảo vệ dữ liệu và hệ thống của bạn trước các mối đe dọa tiềm ẩn.