网络设备最经常用到的,也是最重要的一个安全设备就是防火墙了。作为一款IT设备,无非两种选择方式。一种是购买品牌防火墙成品,另一种是自己DIY防火墙。两种方式各有自己的优劣,购买品牌防火墙最大的问题莫过于是投入较多的资金,却可以得到更多的后期维护。而自己 DIY防火墙的最大弊端就在于需要一个专业的人员来定制,还要投入更多的精力做后期的维护。
作为一个热血IT青年,自己DIY一个防火墙设备,不仅仅能够带来投入的节省,最重要的是你可以在这个过程中,得到许多一个电话CALL来的售后服务那里,所学到的到东西要多得多。DIY一个防火墙设备,最最重要的是要认清硬件架构和软件架构的特点,以及最适合于那种搭配。
基于通用CPU的X86架构的安全网关,一般采用Intel或AMD公司的芯片,X86在架构系统时还需要北桥和南桥芯片,采用该种硬件架构,软硬件配套资源比较多,便于快速推出产品,企业投资少,最初的防火墙大都是基于X86架构。X86架构采用通用CPU和PCI总线接口,具有很高的灵活性和可扩展性,过去一直是防火墙开发的主要平台。其产品功能主要由软件实现,可以根据用户的实际需要而做相应调整,增加或减少功能模块,产品比较灵活,功能十分丰富。
但其性能发展却受到体系结构的制约,作为通用的计算平台,x86的结构层次较多,不易优化,且往往会受到PCI总线的带宽限制。虽然PCI总线接口理论上能达到接近2Gbps的吞吐量,但是通用CPU的处理能力有限,尽管防火墙软件部分可以尽可能地优化,很难达到千兆速率。同时很多X86架构的防火墙是基于定制的通用操作系统,安全性很大程度上取决于通用操作系统自身的安全性,可能会存在安全漏洞。
从总线速度来看,基于32位PCI总线的X86平台,也就是我们所说的基于传统X86架构的防火墙,做为百兆防火墙的方案是没有任何问题的。但X86平台的防火墙方案,数据从网卡到CPU之间的传输机制是靠“中断”来实现的,中断机制导致在有大量数据包的需要处理的情况下(如:64 Bytes的小包,以下简称小包),X86平台的防火墙吞吐速率不高,大概在30%左右,并且CPU占用会很高。这是所有基于X86平台的防火墙所共同存在的问题。因此,基于32位PCI总线的X86平台是不能做为千兆防火墙使用的问题。
X86平台的防火墙其最大的缺点就是小包通速率低,只有30%-40%,造成这个问题的主要原因是因为X86平台的中断机制以及X86平台的防火墙所有数据都要经过主CPU处理。早期的千兆防火墙仅仅是将百兆接口替换为千兆接口而已。这种基于X86体系结构的千兆防火墙主体仍然是软件,其性能受到很大制约,无法达到千兆的处理速度。因此,这些防火墙只是具有千兆接入能力的防火墙,而不是真正具有千兆处理能力的防火墙因此可以说是一种“换汤不换药”的形式改变。
Intel提出了解决方案,可以把32位的PCI总线升级到PCI-E总线,即:PCI-Express,这样,PCI-E 4X的总线的速度就可以达到 2000MB Bytes/S,即:16Gbits/S,并且PCI-E各个PCI设备之间互相独立不共享总线带宽,每个基于PCI-E的网口可以使用的带宽为:2000MB Bytes/S,即:16Gbits/S,所以基于PCI-E 4X的X86从系统带宽上来说,做为千兆防火墙是没有任何问题的。但是,基于PCI-E的防火墙数据从网卡到CPU之间传输同样使用“中断”机制来传输数据,所以小包(64 Bytes)的通过率仍然为:30-40%,基于x86的防火墙,其最高性能只能达到2Gbps!同时CPU和外围芯片组发热比较大,产品寿命和稳定性难以保证。
如果你选择的硬件是x86架构的,我建议只有一个系统合适你,就是freebsd,要么自己定制防火墙,要么选择m0llowakk或者pfsense!为什么不是linux?很简单,当遇到大量小包攻击的时候(syn),freebsd的扛压能力大大超过linux,最极端的时候可以开启网卡polling模式,可以有效地降低cpu中断负载,不至于你的cpu0 100%占用!而且,特别是pfsense选用了openbsd的pf防火墙,支持syn三次握手代理,地址池,自动黑名单等等有用的功能,而且很小巧稳定,性能只是比linux 差一点,不过完全够用!可以直接配置一台不带硬盘,只有cpu,内存,内存卡的小盒子系统,省电,稳定,完全!而且可以通过ipfw-classic实现和iptable layer-7一样的应用层过滤,反正大家都是山寨人家clearos公司的!还有商业的panbit,流控大师也是选用freebsd的,不过可惜啊,特征码给加密了。
虽然研发成本较高,灵活性受限制、无法支持太多的功能,但其性能具有先天的优势,非常适合应用于模式简单、对吞吐量和时延指标要求较高的电信级大流量的处理。ASIC芯片集网络包处理和内容处理为一身,芯片首先完成流重组,然后直接在网络层匹配规则,并执行动作处理安全事件,需要进一步分析的才送CPU。网络中90%以上的数据在ASIC芯片中直接完成处理。
基于ASIC架构的防火墙从架构上改进了中断机制,数据从网卡收到以后,不经过主CPU处理,而是经过集成在系统中的一些芯片直接处理,由这些芯片来完成传统防火墙的功能,如:路由、NAT、防火墙规则匹配等。这样数据不经过主CPU处理,不使用中断机制。但随之而来的问题是,ASIC架构的防火墙是芯片一级的,所有的防火墙动作由芯片来处理。这些芯片的功能比较单一,要升级维护的开发周期比较长。
几年前,以Intel为代表的国际芯片厂商推出了具有革命性意义的网络处理器(NP),业界观察家也曾十分看好并极力称颂,NP将引发不可预期的网络革命。然而,NP并没有如观察家所期待的那样结出硕果,各NP厂商的NP业务基本都处于亏损状态。 从2002年开始NP开始在网络安全领域应用,2003年IBM就把NP业务卖给了Hifn,2006年6月27日,Intel正式宣布把NP业务卖给Marvell。
网络处理器比较典型的产品有Marvell(Intel)公司的IXP1200系列、IXP2400系列和IXP2800系列和Freescale(motorola)公司的C-5、Cisco公司的Toaster 2、Hifn(IBM)的NP3G4S等。
NP架构实现的原理和ASIC类似,但升级、维护远远好于ASIC 架构。NP架构在的每一个网口上都有一个网络处理器,即:NPE,用来处理来自网口的数据。每个网络处理器上所运行的程序使用微码编程,其软件实现的难度比较大,开发周期比ASIC短,但比X86长。
最早提出网络处理器开发的时间是1997年,正式的商用芯片于2000年面世。Intel、IBM、Motorola、MMC Networks、Ezchip、Lucent、Vitesse(Sitera)等厂商参与了网络处理器的早期研究。这一阶段仅仅是研究阶段,而真正将网络处理器投入商业应用的厂商是中国的华为,2000年华为开始开发基于网络处理器的核心路由器,并率先推出了基于NP的NE80/NE40系列核心路由器产品。
当你的防火墙要对付高流量,小包攻击ddos。请选用嵌入式,arm,NP,mips构架防火墙硬件,操作系统就直接选择linux正营吧,其代表就是起源于ciso/syslink系统的opoenwrt或者dd-wrt,tomato(国人的支持多wan口叠加其实就是策略路由),为什么不选择freebsd-因为freebsd不支持硬件,为什么不选择netbsd/openbsd,因为性能低下,很多无线,新硬件,网卡不支持!而且防火墙不开放什么服务器软件,不需要太高的防渗透入侵,强制访问安全等等。这其中我建议选择openwrt吧,免费、可定制非常高,就和一台linux机器一样的配置!dd-wrt收费!tomato也是根据openwrt来的,作者配置好了策略路由支持双、四wan!至于route,ros也是国人改的linux系统,收费,功能繁琐,网吧可以考虑下!
功能选择
现在很多防火墙默认都很强大,,web界面控制,7层过滤,ids/ips,甚至还把防火墙放到交换机中,路由器中 组成了什么7层交换机啊 ,四层交换机,7层四层路由器等等,当然他们也不是简单的利用bsd/linux装交换机软件,路由软件,或者防火墙,是进行了二次开发的,可以有效地加速交换,路由性能,但是如果我们是Diy的防火墙需要那么多功能吗?
一个原则,功能影响性能,也同样影响安全!反过来也是功能影响安全,影响性能!其实我们要根据自己的情况来开启功能:
1,关闭web控制,既然是定制,肯定都是高手了,全屏幕console操作,手写防火墙,路由规则,要哪个web干嘛!影响性能安全!
2,关闭远程登录访问入口,直接本地登录防火墙diy机器,进行控制,什么ssh,telent就算了吧保持防火墙就干三件事,就是转发过滤流控!!就用基本的系统定制内核,配置策略路由,防火墙转发过滤,或者使用layer7过滤(不过要自己定制7层过滤特征码,免费的都很过时了,使用分析包软件分析,书写正则表达式,不难学,需要耐性和观察力呵呵!
3,至于,ids,ips还是通过过防火墙转发到独立的电脑上进行分析,处理吧,防火墙本身就是拿老硬件定制的,不是什么专业的硬件防火墙,不要运行那么多消耗资源大的程序,
4,当所有的配置都设置好了,就可以学习m0n0wall干脆吧控制台也禁用了吧,谁也别想登陆了!
硬件的购买
1,选择老的硬件,淘汰的电脑,最好找个U盘吧硬盘去掉,最容易出错的东东!
2,到专门的定制防火墙设备的地方,定制盒子机箱,电源的等等,主板最好选择嵌入式开发板,或者nimi型x86板子
3,想支持无线,3G只要购买无线网卡,3G网卡插上就去了只要系统支持10跟天线都可以呵呵
4, diy防火墙的成本控制(购买新硬件)看你要达到那款品牌防火墙性能,如果是20万的防火墙性能,你最好准备5000左右吧,一般是1/10-1/100,要看品牌黑不黑了
好了,就说怎么多,就一句话概括,选择防火墙一看构架(影响OS),二看小包转发带宽,三看 价格 ,希望能给大家一点启示