Nmap把端口分成六个状态:open(开放的),closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的),open|filtered(开放或者被过滤的),或者closed|filtered(关闭或者被过滤的)。
这些状态并非端口本身的性质,而是描述Nmap怎样看待它们。例如,对于同样的目标机器的135/tcp端口,从同网络扫描显示它是开放的,而跨网络做完全相同的扫描则可能显示它是filtered(被过滤的)。
1.open:(开放的)用程序正在该端口接收TCP或者UDP报文。它常常是端口扫描的主要目标。
2.closed:(关闭的)关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听。
3.filtered:(被过滤的)由于目标上设置了包过滤(如防火墙设备),使得探测报文被阻止到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。
4.unfiltered:(未被过滤的)未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。用其它类型的扫描如窗口扫描、SYN扫描、FIN扫描来扫描这些未被过滤的端口可以帮助确定端口是否开放。
5.open|filtered:(开放或被过滤的):当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着目标主机上报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。
6.closed|filtered:(关闭或被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle扫描中。
1.5 时间参数优化改善扫描时间的技术有:忽略非关键的检测、升级最新版本的Nmap(文档中说nmap版本越高性能越好)等。此外,优化时间参数也会带来实质性的优化,这些参数如下:
TIMING AND PERFORMANCE:
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
--min-parallelism/max-parallelism <numprobes>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissions.
--host-timeout <time>: Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
--min-rate <number>: Send packets no slower than <number> per second
--max-rate <number>: Send packets no faster than <number> per second
其中最主要的是前3种:
1.-T<0-5>:这表示直接使用namp提供的扫描模板,不同的模板适用于不同的环境下,默认的模板为"-T 3",具体的看man文档,其实用的很少。
2.--min-hostgroup <milliseconds>; --max-hostgroup <milliseconds> (调整并行扫描组的大小)
Nmap具有并行扫描多主机端口的能力,实现方法是将所有给定的目标IP按空间分成组,然后一次扫描一个组。通常组分的越大效率越高,但分组的缺点是只有当整个组扫描结束后才会返回该组中主机扫描结果。例如,组的大小定义为50,则只有前50个主机扫描结束后才能得到这50个IP内的结果。
默认方式下,Nmap采取折衷的方法。开始扫描时的组较小,默认值为5,这样便于尽快产生结果,随后增长组的大小,默认最大为1024。但最小和最大确切的值则依赖于所给定的选项。
--max-hostgroup选项用于说明使用最大的组,Nmap不会超出这个大小。--min-hostgroup选项说明最小的组,Nmap会保持组大于这个值。如果在指定的接口上没有足够的目标主机来满足所指定的最小值,Nmap可能会采用比所指定的值小的组。
这些选项的主要用途是说明一个最小组的大小,使得整个扫描更加快速。通常选择256来扫描C类网段,对于端口数较多的扫描,超出该值没有意义,因为它只是分组了,但是cpu资源是有限的。对于端口数较少的扫描,2048或更大的组大小是有帮助的。
3.--min-parallelism <milliseconds>; --max-parallelism <milliseconds> (调整探测报文的并行度,即探针数)