笔者工作的单位最近发现内网有计算机感染病毒,这些计算机是可以访问互联网的,通过分析日志发现感染病毒的电脑不停地和互联网的某些IP地址建立连接。单个内网的IP建立的连接数达到了几十万,这是很不正常的现像。理论上,内网的一个IP地址不可能有这么大的连接数,因为我们内部网络管理屏蔽了部分下载软件,鉴于此,我们判断是内网的部分计算机被控制,对互联网发起了DDoS攻击。内部网络的简要拓扑图如图1所示。
图1 内部网络简要拓扑图
防火墙上面使用的动态地址映射技术,使用了四个公网IP作为地址池,当内部出现DDoS攻击时候,防火墙出现大量的新建会话,另外需要处理这些无应答的请求,CPU的利用率会不断地上升。面对这样大的攻击流,防火墙的资源被大量占用,出现一个明显的问题是Web管理界面响应变得非常缓慢,点击一个按键半天都没有反应。
通过SSH登录到防火墙上面,使用命令clear session尝试清除所有的会话,但是效果并不理想,因为刚清除的IP地址的会话又会马上建立新的session,必须要找到攻击的源头进行封堵才能解决问题。通过旁路捉包分析,结合防火墙的会话日志,发现可疑的IP地址有三个,分别是192.168.1.3、192.168.3.8、192.168.7.10, 这些IP地址发出大量的数据包,在防火墙上面建立的连接数都达到数十万,必须对其进行封堵,下面介绍一下常用的三种封堵的办法。
方法一:直接在三层网关设备上面进行封堵。
这种方式总结为野蛮模式的封堵,就是以封堵为大前提,牺牲小部分用户保住整体网络。内部局域网都是划分Vlan网段的,把 192.168.1.3、192.168.3.8、192.168.7.10对应的Vlan找出来,直接interface Vlan ID 然后再输入shutdown命令,这是最快捷的方式,比拔网线还高效率,但是很自然地被shutdown的Vlan 整个网段的IP都无法访问了,等于是消失在局域网中,攻击的源头自然就会被封堵。接下来就是发通知,找到那几台IP对应的机子进行网络隔离,再把shutdown的Vlan重新启动。
方法二:在防火墙上面使用添加黑名单的方式进行封堵。
这种方式是利用防火墙的黑名单功能,建立策略将匹配规则的IP地址进行封堵。简要的配置命令如下:
命令的意思是将192.1 68.1.3、192.168.3.8、192.168.7.10 放进防火墙的全局黑命单,放置的时间是600秒钟,这段时间内上述的IP地址发起的请求将被阻止,不会产生新的session。实际上病毒感染的电脑还是会不断地发起建立连接的请求,流量还是会流向防火墙,只是设备将不会响应黑命单里的请求。
方法三:使用黑洞路由,添加一条路由指向NULL 0接口。
如图1所示,核心层的交换机与汇聚层的设备通过OSPF路由协议互联,所以在核心层建立一条黑洞路由就能使全网学习到。简要配置如下:
Null 0接口是一个永远不会down的接口,它的配置命令跟静态路由差不多,实现起来较为简单,最后面加上描述信息用于标记此路由条目。这样能把感染病毒的IP指向了一个黑洞,请求不会到达防火墙也不需要在防火墙上面添加策略封堵,能减轻防火墙的负担。
综上所述,对于局域网内部的IP地址封堵,可以结合多种方式进行,最理想的状态是在接入端着手,从最靠近攻击源头的设备将流量进行阻塞,若出现多个不同网段的IP发起攻击,使用shutdown Vlan的方式就比较困难,个人建议是先编辑好一个黑洞路由的脚本,只要把封堵IP地址都写上,直接在交换机上面粘贴配置,这样的方式效果又快又明显。