扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Iptables+l7+squid的应用
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、乐都网络推广、微信小程序、乐都网络营销、乐都企业策划、乐都品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供乐都建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
Iptables是网络层防火墙 ,主要用于网络层、传输层的过滤,对应用层的过滤较少,但是支持的应用比较多,如NAT转换
Layer7 能使iptables基于应用层过滤
Squid 是一个应用层代理服务器,不仅可以过滤网络层、还可以过滤应用层,就是支持的应用比较少。
所以iptables+l7+squid不愧是一个完美组合。下面就通过一个小案例来说明一下
一个公司有两个部门和一个经理部,要求对他们在上班时间(周一到周六 08:00--20:00)做如下的上网限制:
技术部:可以使用ftp来上传和下载资料 ,不允许使用QQ聊天,不允许浏览网页,不允许使用迅雷下载东西。
市场部:可以浏览网页,但不允许访问一些非法站点,如sina ,也不允许使用迅雷,和QQ聊天,不允许使用pplive,不允许浏览图片,每个用户的最大连接数为5
经理办 http qq 都可以使用
下班后,没用任何限制。
公司还要发布自己的www服务器
Linux防火墙的eth0网卡连接内网,eth2网卡连接外网,eth3网卡连接DMZ
Eth0 192.168.101.166
Eth2 192.168.2.253
Eth3 192.168.3.253
技术部ip范围 192.168.2.1----192.168.2.100
市场部ip范围 192.168.2.101-----192.168.2.200
经理办ip范围 192.168.2.201---192.168.2.210
www服务器ip地址为 192.168.3.66
拓扑图就不画了
分析:
ftp的控制我们使用iptables ,对于QQ的聊天、迅雷下载控制我们用L7控制,对于网页浏览、禁止浏览非法站点,图片信息我们用squid控制。
1、首先开启数据包转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 --修改为1即开启转发
sysctl -p --立即生效
2、设置默认拒绝所用
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
3、配置SNAT,使内网用户可以上网
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth2 -j MASQUERADE
4、控制
(1) 允许ftp
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.100 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
--允许转发的通过
(2)禁用QQ 、迅雷(不写规则也是可以的,默认是拒绝的,加强一下)
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.200 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq -j DROP
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.200 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto xunlei -j DROP
(3)squid的控制
Vim /etc/squid/squid.conf 修改和添加如下几行如下:
919 http_port 3128 transparent
2994 visible_hostname 192.168.2.253
4134 DNS_nameservers 222.88.88.88 222.85.85.85
重启squid,以上是squid的基本配置,下面的是控制配置
(4) iptables控制
iptables -t nat -A PREROUTING -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m connlimit --connlimit-above 5 --connlimit-mask 32 -p tcp --dport 80 -j REDIRECT --to-port 3128
--将80端口重定上到3128,来实现透明代理
iptables -t filter -A OUTPUT -m state --state EASTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.2.101-192.168.2.210 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p udp --dport 53 -j MASQUERADE --对DNS解析进行NAT(这一条规则好像没用流量匹配)
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.101-192.168.2.210 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p udp --dport 53 -j ACCEPT --
iptables -t filter -A OUTPUT -p tcp --dport 80 -s 192.168.101.166 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT --允许squid代理的查询
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.101-192.168.2.200 -m layer7 --l7proto pplive -j DROP
市场部的squid控制
重启squid
iptables -t filter -R FORWARD 8 -m iprange --src-range 192.168.2.201-192.168.2.210 -o eth2 -j ACCEPT
服务器发布
iptables -t nat -A POSTROUTING -s 192.168.3.66/32 -o eth2 -j SNAT --to 192.168.101.166
(5)下班后无限制
iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.201-192.168.2.210 -o eth2 -j ACCEPT
(星期六、日不允许的是。)功能以实现!!!!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流