为什么简单 ping 成功时 Nmap 会报告“主机似乎关闭”?
me@computer:~$ ping 123.45.67.89
PING 123.45.67.89 (123.45.67.89) 56(84) bytes of data.
64 bytes from 123.45.67.89: icmp_req=1 ttl=45 time=91.1 ms
64 bytes from 123.45.67.89: icmp_req=2 ttl=45 time=102 ms
64 bytes from 123.45.67.89: icmp_req=3 ttl=45 time=100 ms
^C
--- 123.45.67.894 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 91.136/98.182/102.417/5.022 ms
me@computer:~$ nmap 123.45.67.89
Starting Nmap 5.21 ( http://nmap.org ) at 2014-04-02 14:23 EDT
Note: Host seems down. If it is really up, but blocking our ping probes, try -PN
Nmap done: 1 IP address (0 hosts up) scanned in 3.04 seconds
Nmap 的“ping 探测”与命令行 ping 不同吗?
答案1
Nmap 发送许多不同的探针确定主机是否已启动。在您的特定情况下,由于您运行的 Nmap 没有 root 权限,因此它无法发送 ICMP Echo 请求,而这正是实用ping
程序使用的请求。在这种情况下,它会尝试连接到端口 80 和端口 443,如果连接已打开或被拒绝,则报告主机已启动。您的目标必须有一个防火墙,可以丢弃到这些端口的所有流量。
要允许 Nmap 找到系统,请尝试使用 root 权限运行它。须藤命令经常用于此目的,例如sudo nmap 123.45.67.89
ping
可以发送ICMP数据包,因为它安装了设置用户标识为 root,这意味着任何用户都可以运行它,但运行时它将以 root 用户身份运行。setuid 程序必须格外小心,不要让普通用户通过此额外权限获得 shell。特别是 Nmap 无法阻止这种特权升级,因此永远不应将其设为 setuid。
答案2
是的,它们默认情况下是不同的,ping 是 ICMP,如果我没记错的话,nmap ping 会向端口 80 发送一个 syn 包,尝试使用 -PE、-PM、-PP 标志使其执行 ICMP ping
答案3
无需权限,你可以使用 netcat 扫描端口:
nc -z -w5 hostname 22; echo $?
如果失败则回答 1,否则回答:
连接到主机名 22 端口 [tcp/ssh] 成功!
0
答案4
这可能是防火墙设置导致的。如果是,请检查防火墙。
- $sudo systemctl 状态防火墙
- $sudo systemctl 停止防火墙