网站建设资讯

NEWS

网站建设资讯

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

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

创新互联公司的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括成都网站建设、成都做网站、电商网站开发、微信营销、系统平台开发。

Iptables是用linux操作系统作为一个软件防火墙做到宏观上的保护,数据包要经过防火墙首先来到tcp/ip协议栈,防火墙通过内核的一些机制来做到对数据的过滤,内核里有这样五个函数INPUT、OUTPUT、FORWARD、POSTROUTING、PREROUTING,内核没办法直接修改我们通过使用iptables用户空间工具来对这五个函数下发规则,从而达到对流量的过滤,五个函数的架构称为netfilter,根据函数的功能可以分为下面三类:

nat:postrouting路由判断之后也就是snat,prerouting路由判断之前也就是dnat

filter:实现流量过滤,input流量目标位防火墙,output流量从防火墙出,forward流量经过防火墙

mangle:TOS、QOS

下面是五个函数对流量过滤的方式:

Input过滤进入防火墙的流量

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

OUTput过滤来自防火墙的流量

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

Forward过滤从防火墙经过的流量

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

Postrouting过滤从某接口出去的流量

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

Prerouting过滤从某接口进去的流量

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

为增加iptables防火墙(网络层过滤)的功能可以增加L7(七层协议模块化)补丁来加强对流量的过滤,另外增加squid(应用层过滤)可以使防火墙更加灵活,这样结合起来可以使防火墙更加完善

案例:

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补丁

tar jxvf linux-2.6.25.19.tar.gz2 -C /usr/src/

tar zxvf netfilter-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.patch

2、配置新内核

cp /boot/config-2.6.18-8.el5 .config//沿用旧的内核配置

make menuconfig

//配置内核时,在“Networking ---> Networking Options ---> Network Packet filtering framework (Netfilter) ”处主要注意两个地方:---> Core Netfilter Configuration将“Netfilter connection tracking suport (NEW)”选择编译为模块(M),需选取此项才能看到layer7支持的配置。

//将layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块,根据需要看着办。---> IP: Netfilter Configuration将“IPv4 connection tracking support (require for NAT)”编译成模块。将“Full NAT”下的“MASQUERADE target support”和“REDIRECT target support”编译成模块。

3、编译及安装模块、新内核

make && make modules_install && make install

编译安装成后后,重启选择使用新的内核(2.6.25.19)引导系统

重新编译iptables

1、卸载现有iptables

rpm -e iptables iptstat --nodeps

2、合并iptables+layer7补丁

tar jxvf iptables-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/

cp libxt_layer7.c libxt_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.19

make && make install

4、安装l7-protocols模式包

tar zxvf l7-protocols-2008-10-04.tar.gz -C /etc/

mv /etc/l7-protocols-2008-10-04 /etc/l7-protocols

接下来去配置防火墙:

安装squid

[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

查看规则

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

targetprot opt sourcedestination

Chain FORWARD (policy ACCEPT)

targetprot opt sourcedestination

Chain OUTPUT (policy ACCEPT)

targetprot opt sourcedestination

保证自己能够正常连接到防火墙

[root@localhost ~]# iptables -t filter -A INPUT -s 192.168.20.129 -p tcp --dport 22 -j ACCEPT

[root@localhost ~]# iptables -t filter -A OUTPUT -d 192.168.20.129 -p tcp --sport 22 -j ACCEPT

拒绝所有过防火墙的流量

[root@localhost ~]# iptables -P INPUT DROP

[root@localhost ~]# iptables -P OUTPUT DROP

[root@localhost ~]# iptables -P FORWARD DROP

允许内网用户流量通过POSTROUTING从eth3网卡出去

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth3 -j MASQUERADE

允许工程部的人员在上班时间能够访问ftp

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT

接收进入内网的所有流量

[root@localhost ~]# iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

只允许工程部人员在上班时间访问192.168.102.10的ftp

[root@localhost ~]# iptables -t filter -R FORWARD 1 -m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00 -d 192.168.102.10 -o eth3 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT

验证

[root@localhost ~]# date

Thu May 16 10:00:04 CST 2013

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

不允许工程部人员在上班时间登录qq

[root@localhost ~]# iptables -t filter -A FORWARD-m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00-o eth3 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq-j DROP

[root@localhost ~]# date

Thu May 16 10:06:47 CST 2013

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

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

下班时间无限制

[root@localhost ~]# iptables -t filter -A FORWARD -s 192.168.20.0/24 -m time --timestart 20:01 --timestop 07:59 -o eth3 -j ACCEPT

[root@localhost ~]# date -s 21:00:00

Thu May 16 21:00:00 CST 2013

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

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

软件部访问外网时使用squid代理

[root@localhost ~]# iptables -t nat -A PREROUTING -m iprange --src-range 192.168.20.21-192.168.20.30 -p tcp --dport 80 -j REDIRECT --to-port 3128

编辑squid配置文件

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

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

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

允许流量通过squid端口进入防火墙查看缓存

[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT

[root@localhost ~]# iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT

允许squid使用自己的地址去访问外部网络

[root@localhost ~]# iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

[root@localhost ~]# iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

允许软件部和经理办通过eth3的流量能够使用外部DNS

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.21-192.168.20.40 -p udp --dport 53 -o eth3 -j ACCEPT

[root@localhost ~]# vim /etc/resolv.conf 

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

[root@localhost ~]# vim /etc/squid/squid.conf

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

[root@localhost ~]# iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

[root@localhost ~]# vim /etc/squid/squid.conf

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

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

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

[root@localhost ~]# vim /etc/squid/squid.conf

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

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

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

[root@localhost ~]# vim /etc/squid/squid.conf

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

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

经理办上班时间不受限制

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.31-192.168.20.40 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 80 -o eth3 -j ACCEPT

DMZ

允许来自eth3端口的访问能够访问到dmz区域的192.168.3.200的3389端口

[root@localhost ~]# iptables -t nat -A PREROUTING -i eth3 -d 192.168.102.200 -p tcp --dport 3389 -j DNAT --to 192.168.3.200

[root@localhost ~]# iptables -t filter -A FORWARD -d 192.168.3.200 -p tcp --dport 3389 -j ACCEPT

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

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

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

 


文章名称:Iptables+L7+squid实现完善的软件防火墙
网站路径:http://cdweb.net/article/jgoocj.html