Linux构建企业应用防火墙(一)

时间: 2010-09-28 / 分类: 防火墙 / 浏览次数: 9,759 / 4个评论 发表评论

目标:让Iptables实现ISA Server能实现的功能
公司的那个烂DLINK的路由器实在是太弱了,时不时还死一下机,受不了,于是准备换一台主机来做网关,在以前用ISA的过程中发现很多问题,比如时间只能控制到整点(虽然有人用脚本实现了控制到半小时),无法针对MAC地址来做过滤等等,于是准备用iptables来代替Dlink DI-604LB+。
系统:CentOS 5.5
软件:Iptables 1.4.3,Squid 2.6,netfilter-layer7-v2.22,linux-2.6.28,l7-protocols-2009-05-28
为什么选这几个软件版本,Squid就用的系统自带的,省得麻烦,l7-protocols这已经是最新的了,虽然很多已经失效了,可以自己再去更新。首先得看netfilter-layer7,2.22已经是最新的版本了,再看看它的README,貌似2.6.28就是它支持的最高内核版本,同样,iptable 1.4.3也是它所支持的最新的版本。
首先当然是安装系统,CentOS5.5安装了基本系统和开发库还有开发工具,这两个得选上,后面还有编译内核呢。
Centos5.5的默认内核版本是2.6.18-194.el5PAE,先解压2.6.8内核到/usr/src里
#tar vxjf linux-2.6.28.tar.bz2
再把内核支持七层过滤的补丁netfilter-layer也解压到这个目录
#tar vxzf netfilter-layer7-v2.22.tar.gz
然后给内核打layer7补丁

#cd linux-2.6.28
#patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch OK,接下来开始编译内核了 #make mrproper #make clean 清除之前编译产生的一些文件,当然,咱这是新系统,不用搞这步,形成习惯也好,我可是重复编译了N次才收手的。 复制系统默认的配置到这里,咱在默认系统的基础上来配置,以前自己配置内核时吃过苦头,有些地方选择或漏选会搞死人的。 #cp /boot/config-2.6.18-194.el5PAE ./.config #make menuconfig 首先呢,改改处理器类型,命名pentium Dual core,还默认选的pentium pro,改成core2的好点。 另外呢,基本配置里面,把kernel .config support编译成模块,下面的子项也选上,这样以后好输出内核.config文件。 再到文件系统配置里把NTFS文件系统支持选成模块,盘上还有NTFS分区呢,顺便把FAT的默认codepage改为936,缺省iocharset改为utf8吧。 最后就是咱编译内核最终的目的网络支持了,进入Networking options下,Qos里面的一些都编译成模块吧,比如TC等以后可能用得到,然后Network packet filtering framework (Netfilter)下Core Netfilter Configuration里,Layer7的支持就在这个里面了,看不到?那就选上Netfilter connection tracking support,这下可以看到下面的"Layer 7" match support了吧?赶快选上,当然,time支持也得选上,最后呢?当然是这个项目下的所有能选的都选为编译成模块啦,省得到以后缺少什么支持的时候再重编译内核。 然后返回上一层,再进入IP:Netfilter Configuration,这个照样,所有都选成模块,好几次都是这里漏选了结果导致iptables没有nat表。 选完了,再可以慢慢悠哉游哉看看其他的选项了,因为CentOS默认的内核是通用支持的,所以很多东西对我们来说是没用的,比如什么dell、东芝笔记本的支持啦,PC卡、无线网卡、蓝牙的支持啦,什么万兆网卡的支持啦,许许多多咱确定用不到的,就把它去掉吧,有些你搞不清楚的东西,最好别动它,否则不知道怎么死的。 设置完,保存配置文件,开始编译内核 #make dep && make -j 2 bzImage && make -j 2 modules && make modules_install && make install 直接一个make可以写下去的,貌似我编译的时候出错了,算了,写多几个没事,回车后就可以去玩玩了,一会回来内核就编译安装完了。 #vi /boot/grub/menu.lst 把默认引导改为新内核,重启,再登录就是新的2.6.28内核的系统了。 再安装iptables 1.4.3 #tar vxjf iptables-1.4.3.tar.bz2 #cd iptables-1.4.3 #cp /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ./extensions/ 把iptables的layer7支持文件复制过来,然后编译安装iptables #./configure --with-ksource=/usr/src/linux-2.6.28/ --prefix=/sbin 指定一下安装目录吧,不然系统会默认安装到/usr/local/sbin下了,之前就是不知道,就形成了两个版本的iptables共存的结果,导致脚本运行跟手动输入命令使用的版本不一样,这里不指定还可以在安装好之后把/usr/local/sbin下的文件复制到/sbin目录去也行。 #make #make install 很快就安装完了,可以运行iptables -v查看一下iptables版本。 然后安装layer7的协议文件 #tar vxzf l7-protocols-2009-05-28.tar.gz #cd l7-protocols-2009-05-28 #make install 直接安装,也就是复制一个目录到/etc/下。 这时候iptables就可以使用layer7匹配了。

4个评论

  1. spray gun
    2010/11/12 14:02:05

    让Iptables实现ISA Server能实现的功能这个比较难,我上次实验了下但是没有成功。

  2. 秦大少
    2010/11/11 18:47:07

    到此一游

  3. daoxiaoke
    2010/11/10 00:24:26

    买了本linux入门书开始看,以后常来看看拜读。

  4. 泥人
    2010/11/05 18:36:47

    是很强大的说,不过如果用来做路由,可能routerOS更好些。稳定性上讲已经很成功了。

发表评论

您的昵称 *

您的邮箱 *

您的网站