利用端口扫描进行终端合规性检查的一个示例

利用端口扫描进行终端合规性检查的一个示例html

摘要:大型的办公网络内每每运行着数量众多的终端,这些终端的安全又是网络管理员重点关注的问题,如何对使用人员开展信息安全教育以及采起哪一种技术防护措施是不少文章研究的内容,可是这些防护措施是否有效?员工是否按规定使用终端呢?本文利用端口扫描技术,针对终端应用程序检查提供了一个示例,为网络管理员对终端进行合规性检查提供了一个思路。web

关键字:端口扫描;Nmap;终端合规性浏览器

1、背景安全

现代大型公司每每都有本身的内部办公网络,根据公司业务的规模及分布,有的办公网络集中于某个地区,有的则跨省跨国。使用计算机网络的地方就必须考虑安全问题,这是计算机网络发展多年以来你们早已达成的共识。面对公司规模庞大、主机众多的网络,咱们怎么可以快速检查,找到那些存在安全隐患的主机?这是网络管理员躲避不了的问题。目前人们对于内网安全的研究比较普遍,总结起来大体是三个方面:1)增强员工安全意识教育;2)提升终端安全管理水平;3)完善终端安全防御措施。【1】笔者认为除了正面防护以外,还应考虑检查手段,否则没法验证咱们的防护手段是否有效。考虑到完整的***测试未必适用于每一个公司,所以本文提出利用端口扫描进行终端合规性检查的办法,并举例说明。但愿以点带面、抛砖引玉,促进网络管理人员对内网安全的思考。服务器


2、端口及端口扫描网络

端口只是一种软件中的抽象概念,用于区分通讯信道。 这与IP地址用于识别网络上的计算机的方式相似,端口用来标识在单个计算机上使用的特定应用程序。例如,你的Web浏览器将默认链接到HTTP URLs中的TCP端口80 若是您指定安全的HTTPS协议,浏览器将默认尝试端口443tcp

端口扫描是远程测试多个端口以肯定它们处于什么状态的行为。一般咱们最感兴趣的状态是open,这意味着应用程序正在侦听并接受端口上的链接。 虽然许多端口扫描程序传统上将全部端口都集中到openclosed状态,但咱们将要使用的工具Nmap更加精细,它将端口划分为六个状态。 这些状态不是端口自己的固有属性,而是描述Nmap如何看待它们。例如,来自与目标相同的网络的Nmap扫描可能会将端口135/tcp显示为open,而同时使用来自Internet的相同选项的扫描可能会将该端口显示为filteredide

3、问题工具

在真实环境中有时咱们会须要从一个网络中快速找出某个TCP端口开放的主机。【2】例如:在Microsoft IIS的漏洞曝光后,咱们很想知道网络中的这些主机上哪一台的TCP 80端口是打开的,而且还在运行着该服务;或者,当你发现一台被攻陷的主机上***留下的后门在端口31337上运行,你会但愿快速扫描网络,找到其它被攻陷的主机,等等。测试

4、解决办法

要解决上面的问题,最直接的办法就是运行下面的命令:

#nmap -Pn -p<portnumber> -oG <logfilename.gnmap> <target network>

这是一个搜索4096IPWeb服务器(端口80打开)的具体示例:

#nmap -Pn -p80 -oG logs/pb-port80scan-%D.gnmap 216.163.128.0/20

文件名中的D”将替换为扫描运行的数字日期(例如,200791日为“ 090107”)。尽管此扫描命令有效,但作一些选项上的优化会大大减小扫描时间。

#nmap -T4 -Pn -p80 - -max-rtt-timeout 200ms - -initial-rtt-timeout 150ms - -min-hostgroup 512 -oG logs/pb-port80scan-%D.gnmap 216.163.128.0/20

 咱们发现大部分时间都花在了反向DNS解析上。经过在上面的命令行中添加-n来禁止DNS解析,能够大大减小等待的时间。

上面的命令将grepable格式结果存储在指定的文件中。 而后,咱们再用一个简单的egrep命令将找到端口80打开的机器:

egrep ‘[^0-9]80/open’ logs/pb-port80scan-%D.gnmap

egrep模式前面带有[^ 0-9],以免虚假匹配端口(例如3180)。因为咱们仅扫描端口80,所以固然不可能发生,可是这在进行多端口扫描时是一种好习惯。 若是只须要IP地址,则使用egrep awk'{print $ 2}’

5、实例演示

有时,故事是理解决策的最佳方法,在实际例子中咱们才能更好的理解如何决定在解决方案中使用哪些命令行。例如,在一家公司里,有大约4096台终端,这些终端上可以使用的应用程序公司有明确的要求,其中有一条用户终端不得提供web服务,但面对数量如此庞大的终端数,网络管理员不可能进行普查,即使逐台检查过,你也没法保证以后会不会有人违规。运行web服务器的主机一般会开放TCP 80端口,尽管理论上此类服务器能够侦放任何端口,但可能性最大的仍是80端口。所以,咱们能够经过找到网络中80端口开放的终端来肯定那些违反公司规定的员工。

为了优化扫描的效果,咱们先对网络延迟进行了测量,平均延迟60毫秒。考虑平均延迟影响以后,咱们使用以下选项:- -max-rtt-timeout 200ms - -initial-rtt-timeout 150ms。而后再使用一个更加积极的时间模版-T4

因为咱们重视最小化整个扫描的完成时间,而不是最小化返回第一批主机结果以前的时间,所以,能够指定了较大的扫描组大小,选项- -min-hostgroup 512设定每次并行扫描512台主机。使用精确的子地址块可以避免出现低效的扫描子块,就像本例中的4096台主机若是用- -min-hostgroup 500,最后就会出现96台主机的扫描子块。

因为一次ping须要花费的时间与单端口扫描自己消耗的时间相同,所以无需在先前的ping阶段浪费时间。 所以,指定了-Pn以禁用该阶段。经过使用-n参数跳过反向DNS解析,能够节省大量时间。不然,在禁用ping扫描的状况下,Nmap会尝试查找全部4096IP。因为咱们是要寻找web服务器,因此将端口设定为80。固然,这样的设置会错过在非标准端口(例如818080)上运行的全部HTTP服务器。也不会找到使用443端口的SSL服务器。你也能够把这些端口加到选项-p以后,可是即便是多加一个端口也会让扫描时间翻倍,这大体与扫描的端口数成正比。

最后一个选项是-oG,后跟要存储grepable结果的文件名。Gordon将目标网络添加到命令的最后,而后按下enter键开始扫描。如例6所示:

6: 开始扫描

image.png


 


Nmap会在大约三分钟内扫描全部4096IP 正常输出显示一堆处于过滤状态的端口。这些IP中的大多数可能不是活动主机(端口仅显示为已过滤),由于Nmap没有收到对其SYN探针的响应。咱们使用egrep命令,从输出文件中得到web服务器的列表。如例7所示:

7: egrep命令查询开放80端口的主机 

image.png


在通过全部努力以后,发现了在4096IP中有两台主机的80端口开放。上述例子描述的状况可能已经有不少网络管理员遇到过,比起一台主机一台主机的排查,使用端口扫描的效率明显更高。固然,若是出现了极端的用户,例如:故意躲避扫描;修改web服务端口;设置本地防火墙策略等,咱们目前使用的办法效果就会大打折扣,不过有这种技术的用户自己在公司里应该就很显眼吧。

6、总结

终端合规性检查这个话题的范围其实挺大,并不只仅只有应用程序检查这一个方面。本文以检查终端TCP 80端口开放的终端为例,介绍了端口扫描技术在此方面的应用。固然,没有一种技术可以单独解决终端合规性检查的问题,咱们还须要综合利用其它手段,扩大检查范围,提升检查效率,减轻网络管理人员的工做负担。


参考文献:

[1]罗华屏.大型企业内网计算机终端安全管理探究[J].产业与科技论坛,2020,19(02):36-38.

[2]Gordon Lyon.Nmap Network Scanning[EB/OL].https://nmap.org/book/toc.html,2011.

相关文章
相关标签/搜索