Iptables+L7+squid实现完善的软件防火墙

本文发布时间: 2019-Mar-21
Iptables是用linux操作系统作为一个软件防火墙做到宏观上的保护,数据包要经过防火墙首先来到tcp/ip协议栈,防火墙通过内核的一些机制来做到对数据的过滤,内核里有这样五个函数INPUT、OUTPUT、FORWARD、POSTROUTING、PREROUTING,内核没办法直接修改我们通过使用iptables用户空间工具来对这五个函数下发规则,从而达到对流量的过滤,五个函数的架构称为netfilter,根据函数的功能可以分为下面三类:nat:postrouting路由判断之后也就是snat,prerouting路由判断之前也就是dnatfilter:实现流量过滤,input流量目标位防火墙,output流量从防火墙出,forward流量经过防火墙 mangle:TOS、QOS下面是五个函数对流量过滤的方式:Input过滤进入防火墙的流量OUTput过滤来自防火墙的流量Forward过滤从防火墙经过的流量Postrouting过滤从某接口出去的流量Prerouting过滤从某接口进去的流量为增加iptables防火墙(网络层过滤)的功能可以增加L7(七层协议模块化)补丁来加强对流量的过滤,另外增加squid(应用层过滤)可以使防火墙更加灵活,这样结合起来可以使防火墙更加完善案例:要求:公司有三个部门:工程部门192.168.20.10—192.168.20.20软件部门192.168.20.21-192.168.20.30经理办192.168.20.31-192.168.20.40上班时间(周一---周五08:20:00)工程部门:上班时间只能访问192.168.102.10的ftp,不允许登录qq不允许上网,下班后无限制。软件部门:通过squid可以上网,但不允许访问非法站点sina,连接数最多3个,不允许看图片,下班后无限制。经理办公室:可以上网可以登录qq,下班后无限制dmz区域:开启远程控制用于外部人员控制访问。配置步骤:为iptables增加layer7补丁,实现应用层过滤重新编译内核1、合并kernel+layer7补丁tarjxvflinux-2.6.25.19.tar.gz2-C/usr/src/tarzxvfnetfilter-layer7-v2.20.tar.gz-C/usr/src/cd/usr/src/linux-2.6.25.19/patch-p1</usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch2、配置新内核cp/boot/config-2.6.18-8.el5.config//沿用旧的内核配置makemenuconfig//配置内核时,在“Networking--->NetworkingOptions--->NetworkPacketfilteringframework(Netfilter)”处主要注意两个地方:--->CoreNetfilterConfiguration将“Netfilterconnectiontrackingsuport(NEW)”选择编译为模块(M),需选取此项才能看到layer7支持的配置。//将layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块,根据需要看着办。--->IP:NetfilterConfiguration将“IPv4connectiontrackingsupport(requireforNAT)”编译成模块。将“FullNAT”下的“MASQUERADEtargetsupport”和“REDIRECTtargetsupport”编译成模块。3、编译及安装模块、新内核make&&makemodules_install&&makeinstall编译安装成后后,重启选择使用新的内核(2.6.25.19)引导系统重新编译iptables1、卸载现有iptablesrpm-eiptablesiptstat--nodeps2、合并iptables+layer7补丁tarjxvfiptables-1.4.2.tar.bz2-C/usr/src/cd/usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward/cplibxt_layer7.clibxt_layer7.man/usr/src/iptables-1.4.2/extensions/3、编译安装cd/usr/src/iptables-1.4.2/./configure--prefix=/--with-ksource=/usr/src/linux-2.6.25.19make&&makeinstall4、安装l7-protocols模式包tarzxvfl7-protocols-2008-10-04.tar.gz-C/etc/mv/etc/l7-protocols-2008-10-04/etc/l7-protocols接下来去配置防火墙:安装squid[root@localhostServer]#rpm-ivhsquid-2.6.STABLE21-3.el5.i386.rpm查看规则[root@localhost~]#iptables-LChainINPUT(policyACCEPT)targetprotoptsourcedestinationChainFORWARD(policyACCEPT)targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)targetprotoptsourcedestination保证自己能够正常连接到防火墙[root@localhost~]#iptables-tfilter-AINPUT-s192.168.20.129-ptcp--dport22-jACCEPT[root@localhost~]#iptables-tfilter-AOUTPUT-d192.168.20.129-ptcp--sport22-jACCEPT拒绝所有过防火墙的流量[root@localhost~]#iptables-PINPUTDROP[root@localhost~]#iptables-POUTPUTDROP[root@localhost~]#iptables-PFORWARDDROP允许内网用户流量通过POSTROUTING从eth2网卡出去[root@localhost~]#iptables-tnat-APOSTROUTING-s192.168.20.0/24-oeth2-jMASQUERADE允许工程部的人员在上班时间能够访问ftp[root@localhost~]#iptables-tfilter-AFORWARD-miprange--src-range192.168.20.10-192.168.20.20-mtime--timestart08:00--timestop20:00--weekdaysMon,Tue,Wed,Thu,Fri-ptcp--dport21-jACCEPT接收进入内网的所有流量[root@localhost~]#iptables-tfilter-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT只允许工程部人员在上班时间访问192.168.102.10的ftp[root@localhost~]#iptables-tfilter-RFORWARD1-miprange--src-range192.168.20.10-192.168.20.20-mtime--timestart08:00--timestop20:00-d192.168.102.10-oeth2--weekdaysMon,Tue,Wed,Thu,Fri-ptcp--dport21-jACCEPT验证[root@localhost~]#dateThuMay1610:00:04CST2013QTkc=" />不允许工程部人员在上班时间登录qq[root@localhost~]#iptables-tfilter-AFORWARD-miprange--src-range192.168.20.10-192.168.20.20-mtime--timestart08:00--timestop20:00-oeth2--weekdaysMon,Tue,Wed,Thu,Fri-mlayer7--l7protoqq-jDROP[root@localhost~]#dateThuMay1610:06:47CST2013QTkc=" width="650" />下班时间无限制[root@localhost~]#iptables-tfilter-AFORWARD-s192.168.20.0/24-mtime--timestart20:01--timestop07:59-oeth2-jACCEPT[root@localhost~]#date-s21:00:00ThuMay1621:00:00CST2013软件部访问外网时使用squid代理[root@localhost~]#iptables-tnat-APREROUTING-miprange--src-range192.168.20.21-192.168.20.30-ptcp--dport80-jREDIRECT--to-port3128编辑squid配置文件允许流量通过squid端口进入防火墙查看缓存[root@localhost~]#iptables-tfilter-AINPUT-ptcp--dport3128-jACCEPT[root@localhost~]#iptables-tfilter-AINPUT-mstate--stateESTABLISHED-jACCEPT允许squid使用自己的地址去访问外部网络[root@localhost~]#iptables-tfilter-AOUTPUT-ptcp--dport80-jACCEPT[root@localhost~]#iptables-tfilter-AOUTPUT-mstate--stateESTABLISHED-jACCEPT允许软件部和经理办通过eth2的流量能够使用外部dns[root@localhost~]#iptables-tfilter-AFORWARD-miprange--src-range192.168.20.21-192.168.20.40-pudp--dport53-oeth2-jACCEPT[root@localhost~]#vim/etc/resolv.conf[root@localhost~]#vim/etc/squid/squid.conf[root@localhost~]#iptables-tfilter-AOUTPUT-pudp--dport53-jACCEPT[root@localhost~]#vim/etc/squid/squid.conf[root@localhost~]#vim/etc/squid/squid.conf[root@localhost~]#vim/etc/squid/squid.conf经理办上班时间不受限制[root@localhost~]#iptables-tfilter-AFORWARD-miprange--src-range192.168.20.31-192.168.20.40-mtime--timestart08:00--timestop20:00--weekdaysMon,Tue,Wed,Thu,Fri-ptcp--dport80-oeth2-jACCEPTDMZ允许来自eth2端口的访问能够访问到dmz区域的192.168.3.200的3389端口[root@localhost~]#iptables-tnat-APREROUTING-ieth2-d192.168.102.200-ptcp--dport3389-jDNAT--to192.168.3.200[root@localhost~]#iptables-tfilter-AFORWARD-d192.168.3.200-ptcp--dport3389-jACCEPT


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表