使用 nmap 扫描开放的 TCP 和 UDP 端口
在本步骤中,你将学习如何使用 nmap
工具扫描你自己的系统以查找开放的网络端口。网络端口是操作系统中通信的端点。当一个程序想要从网络接收信息时,它会在特定端口上“监听”。扫描开放端口是评估机器安全性的基本第一步,因为每个开放端口都代表着攻击者潜在的入口点。
首先,你需要安装 nmap
,因为它不包含在基础环境中。在安装新软件之前更新你的包列表是一个好习惯。
运行以下命令更新包列表:
sudo apt-get update
现在,通过运行以下命令安装 nmap
:
sudo apt-get install -y nmap
你应该会看到输出表明 nmap
及其依赖项正在被安装。
接下来,你需要找到你机器的 IP 地址,以便告诉 nmap
要扫描什么。你可以使用 ip
命令找到它。
ip addr show
查找类似 eth0
或 ens33
的条目。你的 IP 地址将列在 inet
旁边。它看起来会像 172.16.50.13/24
。
如何从输出中识别你的 IP 地址:
- 查找状态为
state UP
的接口(通常是 eth0
)
- 找到以
inet
开头(不是 inet6
)的行
- 只取
/
前面的 IP 地址部分(例如,如果你看到 inet 172.16.50.13/24
,你的 IP 地址是 172.16.50.13
)
- 忽略带有 IP
127.0.0.1
的回环接口(lo
)
在本次实验的其余部分,我们将使用 <your_IP_address>
作为你实际 IP 地址的占位符。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:04:c3:1d brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.13/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159940sec preferred_lft 1892159940sec
inet6 fe80::216:3eff:fe04:c31d/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:1d:45:49:f8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
现在你已准备好执行你的第一次扫描。让我们开始扫描开放的 TCP(传输控制协议)端口。TCP 是一个面向连接的协议,用于许多常见服务,如 SSH(端口 22)和 HTTP(端口 80)。nmap
中的 -sT
选项执行 TCP 连接扫描。
重要提示: 将 <your_IP_address>
替换为你从上一步找到的实际 IP 地址。例如,如果你的 IP 是 172.16.50.13
,命令将是 nmap -sT 172.16.50.13
。
用你找到的 IP 替换 <your_IP_address>
并运行命令:
nmap -sT <your_IP_address>
输出将列出处于“open”状态的端口。你的系统默认可能开放了 SSH 端口(22),并且可能在其他端口上运行了额外的服务。
Starting Nmap 7.80 ( https://nmap.org ) at 2025-07-01 14:08 CST
Nmap scan report for iZrj93qpoj98oqswu96cqfZ (172.16.50.13)
Host is up (0.00013s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
3001/tcp open nessus
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
接下来,让我们扫描 UDP(用户数据报协议)端口。UDP 是一个无连接协议,用于 DNS(端口 53)和 DHCP(端口 67/68)等服务。UDP 扫描可能比 TCP 扫描慢且不太可靠。使用 sudo
可以为 UDP 扫描提供更好的结果。-sU
选项告诉 nmap
执行 UDP 扫描。
请记住: 将 <your_IP_address>
替换为你从上一步找到的实际 IP 地址。
用你的 IP 替换 <your_IP_address>
并运行命令:
sudo nmap -sU <your_IP_address>
输出可能显示端口为 open|filtered
。这意味着 nmap
无法确定端口是开放的还是被防火墙阻止了扫描。这是 UDP 扫描的常见结果。
Starting Nmap 7.80 ( https://nmap.org ) at 2025-07-01 14:09 CST
Nmap scan report for iZrj93qpoj98oqswu96cqfZ (172.16.50.13)
Host is up (0.0000060s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
68/udp open|filtered dhcpc
5353/udp open|filtered zeroconf
Nmap done: 1 IP address (1 host up) scanned in 1.29 seconds
通过完成这些扫描,你已成功识别出在你机器上监听网络连接的服务。