技术实施原理
采用此方案来处理黑客攻击,我们需要提升两样处理能力。细致拆包和精确的设置防火墙规则, 目前常见的防火墙只能处理OSI 3层或4层的攻击。也就是说只能设置精确到TCP端口的防火规则,这显然是不够的。例如我们把一台web服务器的80端口从防火墙上拦截并限制其访问,那么其效果岂不等同于拔掉它的网线么,还是帮助黑客实现了攻击目的了。而我们所要做的应该是分析所有发往该主机80端口的数据包,寻找出带有攻击性数据包的特征和共性,然后针对这种情况设置一条精确匹配的防火规则。 同样是发往该主机80端口的数据包,只有满足我们设定的攻击特征才会被拦截,而且他的数据包全部方行,这才是真中有效的处理方式。
通常的防火墙产品是无法满足这样的应用需求的,据我所知著名的黑洞防火墙具备此神奇的功能,但购买一台黑洞防火墙的代价甚至大于我一个月的总利润(我宁可舍弃黑客干掉我网站三天的损失,也不愿意花那一大笔钱)。其他级别的7层防火墙也都价格不菲。在本方案中我们建议使用基于UNIX操作系统的防火墙和侦听方案。
UNIX系统的自身安全稳定性想必大家众所周知,FreeBSD UNIX对于防火墙模块的支持不同于其他系统实基于软件实现的,而BSD的防火墙模块可以被直接编译进内核。然后系统工作起来可以把硬件抽象为就是一个硬件防火墙. 下面我们来简单介绍一下所涉及的3个UNIX核心工具。
-
nload 实时过往流量分析工具
这个工具就像是一个可以每秒进行一次统计的MRTG。在处理攻击的时候我们需要随时知道网络流量的变化,而不是设定一个命令然后等5分钟再去看一下结果。所以他很简单却很实用。
-
tcpdump过往流量拆包分析工具
tcpdump非常著名,以至于几乎所有的UNIX发行版本中都捆绑了它的各个不同版本。它有丰富的可选参数,几乎可以制定出我们想要得各种侦听模式,而且是OSI-7层侦听。它与著名的Sniffer抓包工具一样,都是对当前的网络报进行探测并显示,不同之处在于Sniffer更适合于抓包记录并日后分析或取证,而tcpdump的功夫在于实时抓包侦听。它可以轻松的将每秒100Mbps的过往流量打开展示在我们的面前而不会消耗很高系统资源,更不会因此死机。在攻击发生的时候出了来了多少流量,我们更需要他来帮助我们知道来的这些流量都是什么,带有什么特征。
-
ipfw UNIX内核集成的7层防火墙
ipfw并不是一个防火墙软件,具备独立的进程来消耗CPU资源和内存,真正的防火墙系统是UNIX的内核本身,而他就像Unix Shell一样是用于与UNIX的防火墙内核模块交互命令的一个工具。它可以工作与动态防火规则和静态防火规则两种模式,如果是动态规则,那么就像其他防火墙一样当遇到大量并非连接时候他会被耗尽资源,但是静态防火规则是由于原理不同,因此它没有最大会话数量这个概念。当然也不会因此使网络瘫痪。最主要的是它是7层防火墙,也就是说我可以清楚地向UNIX内核去描绘:
#ipfw add 100 deny tcp from 60.0.0.0/8 to 210.72.2.1 dst-port 80 ipttl 116 iplen 40 setup in
请拦截由60.0.0.0/8这些地址发送到210.72.2.15的tcp 80端口并且ttl =116 并 ip包大小等于40并且类型为SYN并且是流入方向。这样我们就可以实现精确匹配工具数据包了。