什么是ping扫描以及如何执行ping扫描
首先,我要说的是,网络管理员或者Linux系统管理员最广泛使用的命令是PING命令。
Ping代表Packet Internet Groper,通常用于查找网络上是否存在计算机。
我将就PING的工作做专门的文章。
正常的PING请求将ICMP回显请求发送到目标主机,目标主机以ICMP回显应答进行回复。
这里要注意的一个重要事实是,出于安全原因,还可以将计算机配置为不响应ping请求,在这种情况下,我们需要应用一些不同的技术来确定目标主机是否处于活动状态。
在这篇文章中,我们将讨论ping扫描。
Ping扫描只是一种技术,可用于找出网络中存在大量主机或者大量IP地址的主机。
实际上,我必须说,我们可以使用ping扫描一次性ping通大量主机。
这意味着,如果网络为192.168.0.0/24,则可以轻松地找出那里的主机,这些主机通过ping扫描该网络来响应ping请求。
可以使用不同的工具进行ping扫描。
如何使用NMAP进行Ping扫描?
Nmap是一个很棒的工具,用于进行端口扫描。
它也可以用于执行ping扫描。
让我们来看看如何做。
[root@myvm ~]# nmap -sP 192.168.0.1-254 Starting Nmap 4.11 ( http://www.insecure.org/nmap/) at 2012-12-29 00:37 IST Host 192.168.0.1 appears to be up. Host 192.168.0.2 appears to be up. Host 192.168.0.5 appears to be up. Host 192.168.0.8 appears to be up. Nmap finished: 254 IP addresses (4 host up) scanned in 5.314 seconds
如果我们查看nmap手册页,我们使用的选项非常简单。
我们使用的-sP选项仅用于确定主机是否已启动。
仅在使用此选项时,Nmap才会执行ping扫描。
上面命令的输出说,nmap扫描了大约254个ip地址,发现4台主机正在运行。
如果我们只想扫描有限数量的主机而不是整个网络,则可以通过以下命令进行扫描。
通过指定范围。
[root@myvm ~]# nmap -sP 192.168.0.1-30
使用fping命令执行ping扫描
我们还可以使用fping命令进行ping扫描。
我们可以通过yum安装fping。
fping命令通常用于向大量主机发送ICMP回显请求(ping扫描)。
普通ping命令,一次仅将ICMP回显请求发送到单个IP或者主机。
但是,可以使用fping将ICMP回显请求发送到大量主机。
它不像ping那样工作,因为它向主机发送回显请求,然后继续到下一个主机,而不是等待回显应答。
这是以循环方式进行的。
默认情况下,如果使用fping命令对大量主机执行ping操作,则在没有来自目标主机的回显应答的情况下,它将假定该主机不可访问。
当提供大量主机时,发送请求数据包的默认差值是25毫秒。
[root@myvm ~]# cat iplist 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 192.168.0.5 192.168.0.6 192.168.0.7 192.168.0.8 192.168.0.9 192.168.0.10 [root@myvm ~]# fping -f iplist 192.168.0.1 is alive 192.168.0.3 is alive 192.168.0.4 is alive 192.168.0.2 is unreachable 192.168.0.5 is unreachable 192.168.0.6 is unreachable 192.168.0.7 is unreachable 192.168.0.8 is unreachable 192.168.0.9 is unreachable 192.168.0.10 is unreachable
在上面显示的示例中,我在文件iplist中做了一个ip地址列表,我需要其中ping。
每行一个IP是制作文件的方式。
在上面显示的活动消息和无法到达的消息结果之间,有多个回显请求发送消息,我在上面的示例中已经显示了这些消息。
我们还可以提及网络地址或者IP地址范围作为fping命令的参数,以执行ping扫描,如下所示。
[root@myvm ~]# fping -g 192.168.0.1 192.168.0.10 192.168.0.1 is alive 192.168.0.3 is alive 192.168.0.4 is alive
我们可以如下所示提及网络地址。
[root@myvm ~]# fping -g 192.168.0.1/24 192.168.0.1 is alive 192.168.0.3 is alive 192.168.0.4 is alive
Ping Sweeping阻止了ICMP的网络
许多网络基础设施安全人员会阻止针对其网络的ICMP通信。
这将阻止ping扫描。
因此,在这种情况下,nmap工具有一个不错的选择,可以确定网络中哪些主机仍然存在。
为了实现此目的,nmap使用TCP而不是ICMP扫描网络。
这称为tcp ping扫描。
可以通过以下方式完成。
[root@myvm ~]# nmap -sP -PT80 192.168.0.1-30 Starting Nmap 4.11 ( http://www.insecure.org/nmap/) at 2012-12-29 02:53 IST Host 192.168.0.1 appears to be up. Nmap finished: 30 IP addresses (1 host up) scanned in 0.769 seconds
在上述方法中,nmap要做的是尝试建立与端口80的连接,并确定主机是否还活着(即使该端口在目标主机上未打开也没关系。
但是该目标端口的流量必须是在网络中允许)
通过使用hping实用程序可以实现相同的目的。
使用简单的Bash for循环进行ping扫描
我们还可以通过在bash中使用for循环来执行简单的ping扫描。
但是,我们不能使用此技术绕过或者执行tcp扫描来确定主机是否还活着。
因为我们为此技术使用了简单的ping命令。
[root@myvm ~]# for i in {1..254}; do ping -c 1 192.168.0.$i | grep 'from'; done 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.106 ms 64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.034 ms 64 bytes from 192.168.0.4: icmp_seq=1 ttl=64 time=0.039 ms
注意:这里要考虑的重要事项是,如果我们是该网络的网络管理员,则完全可以进行ping扫描以进行测试。
但是,在没有权限的网络中进行网络ping扫描是不合法的。
预防:
通过使用维护良好的ACL,可以在一定程度上防止ping渗入网络。
或者,一种更好的方法是仅允许来自ISP的有限的ICMP消息。
Snort IDS可用于从未经授权的源地址跟踪此类ICMP ping扫描。
防火墙可以很好地维护主机级别,也可以防止从外部来源进行此类扫描。