设为首页 收藏本站
查看: 837|回复: 0

[经验分享] Iptables+layer7+squid的应用

[复制链接]

尚未签到

发表于 2018-12-27 07:04:28 | 显示全部楼层 |阅读模式
Iptables+layer7+squid的应用
一、iptables+layer7+squid简介
  (1)Iptables是网络层防火墙 ,主要用于网络层、传输层的过滤,对应用层的过滤较少,但是支持的应用比较多,如NAT转换
  (2)Layer7  能使iptables基于应用层过滤
  (3)Squid 是一个应用层代理服务器,不仅可以过滤网络层、还可以过滤应用层,就是支持的应用比较少。
二、iptables+layer7+squid应用实例
案例配置:


1、实施环境:
RedHat 5.6(实现iptables,layer7和squid),windows PC作为测试机器


2、案例要求:
公司有三个部门工程部门(192.168.2.10--192.168.2.20)、软件部门(192.168.2.21-192.168.2.30)、经理办(192.168.2.31-192.168.2.40),上班时间(周一---周五 08:20:00),现要求工程部门上班时间可以ftp 【192.168.1.253】(使用iptables)允许qq (使用layer7)不允许http (layer7)迅雷(layer7)下班后无限制软件部门可以http不允许非法站点sina {squid),不允许使用迅雷 (layer7),连接数最多3个 (iptables)不允许聊天(l7)不允许看图片 (squid)下班后无限制经理办公室httpqq {l7}都可以,下班后无限制dmz区域rdp  server  服务器进行发布


  3、案例拓扑图:
  
  先分析一下需求,你会发现这些功能单纯的iptables根本没法实现啊,因为包过滤机制只是适用于传输层,那禁用QQ,禁用迅雷,又是不能看图片,都是应用层,怎么办呢?想想啊,还有一个神奇的东东,代理服务器squid,想起来没啊,当然对与禁用QQ、迅雷那一类的东东还是可以用iptables来实现的,只不过是得做做手脚,把你的iptables改造一下,打上补丁,当然iptables是和内核紧密相关的啦,为了能支持打了补丁的iptables,使用新内核打上补丁重新编译,具体介绍如下实施。
  

  4、案例实施:
  

  (1)重新编译内核,为内核打layer7的补丁
  //解压内核补丁安装包和layer7协议安装包
  [root@server ~]# tar -jxvf linux-2.6.25.19.tar.gz2 -C /usr/src/
  [root@server ~]# tar -zxvf netfilter-layer7-v2.20.tar.gz -C /usr/src/
  [root@server ~]# cd /usr/src/linux-2.6.25.19/
  //为内核打上layer7补丁
  [root@server linux-2.6.25.19]# patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch
  //生成内核的编译文件
  [root@server linux-2.6.25.19]# cp /boot/config-2.6.18-164.el5 .config
  [root@server linux-2.6.25.19]# make menuconfig
    HOSTCC  scripts/basic/fixdep    //使用旧内核配置
  /bin/sh: gcc: command not found  
  //安装menuconfig所依赖的相关安装包
  [root@server linux-2.6.25.19]# yum install gcc
  [root@server linux-2.6.25.19]# yum install ncurses-devel
  安装完后再重新执行make menuconfig命令
  [root@server linux-2.6.25.19]# make menuconfig
  执行完make menuconfig命令后出现以下界面,如下图所示:
  
  //配置内核,具体如下操作:
  在“Networking ---> Networking Options ---> Network Packet filtering framework (Netfilter) ”处主要注意两个地方:
  1) ---> Core Netfilter Configuration
将“Netfilter connection tracking suport (NEW)”选择编译为模块(M)(注:选择按空格键),需选取此项才能看到layer7支持的配置。
将layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块,根据需要看着办。
2) ---> IP: Netfilter Configuration
将“IPv4 connection tracking support (require for NAT)”编译成模块(M)
将“ Full NET下的“MASQUERADE target support”和“REDIRECT target support”编译成模块(M)
编辑配置完后保存退出,然后编译、安装。
//编译及安装模块、新内核
[root@server linux-2.6.25.19]# make && make modules_install && make install
//编译安装成后后,重启选择使用新的内核(2.6.25.19)引导系统
在重新启动时先按下任意键进入以下界面,如下图所示:

然后选择上图所显示的内核(2.6.25.19)引导系统启动。

  (2)重新编译iptables
  //把原来的iptables控制脚本文件复制一份
  [root@server ~]# cd /etc/init.d/
  [root@server init.d]# cp iptables iptables.bk
  //卸载现有的iptables
  [root@server ~]# yum remove iptables
  //解压iptables源码安装包
  [root@server ~]# tar -jxvf iptables-1.4.2.tar.bz2 -C /usr/src/
  //为iptables打上layer7补丁
  [root@server ~]# cd /usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward/
  [root@server iptables-1.4.1.1-for-kernel-2.6.20forward]# cp libxt_layer7.c libxt_layer7.man /usr/src/iptables-1.4.2/extensions/
  //切换到iptables解压目录下进行编译
  [root@server ~]# cd /usr/src/iptables-1.4.2/
  [root@server iptables-1.4.2]# ./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.25.19
  //执行make和make  install
  [root@server iptables-1.4.2]# make && make install
  //安装l7-protocols模式包
  [root@server ~]# tar -zxvf l7-protocols-2008-10-04.tar.gz -C /etc
  [root@server ~]# mv /etc/l7-protocols-2008-10-04 /etc/l7-protocols
  

  (3)防火墙iP地址配置
  连接LAN接口IP地址的配置如下:
  
  连接WAN接口的IP地址配置如下:

  连接DMZ区域的IP地址配置如下:

  //首先打开路由转发功能
  [root@server ~]# vim /etc/sysctl.conf

  [root@server ~]# sysctl -p   //刷新路由协议
  

  (4)软件部门实现要求
  //把自己所在终端加入防火墙策略中,然后设置默认拒绝
  [root@server ~]# iptables -t filter -A INPUT -s 192.168.2.1 -p tcp --dport 22 -j ACCEPT
  [root@server ~]# iptables -P INPUT DROP //默认拒绝
  [root@server ~]# iptables -t filter -A OUTPUT -d 192.168.2.1 -p tcp --sport 22 -j ACCEPT
  [root@server ~]# iptables -P OUTPUT DROP
  [root@server ~]# iptables -P FORWARD DROP
  //上班时间允许访问ftp
  [root@server ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.10-192.168.2.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -d 192.168.1.253 -j ACCEPT
  [root@server ~]# iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  [root@server ~]# modprobe ip_nat_ftp  //添加ftp模块
  [root@server ~]# iptables -t filter -D FORWARD 1//删除已有的
  //查看已有的策略规则
  [root@server ~]# iptables -t filter -L -n -v --line-numbers
  //上班时间不允许qq
  [root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.10-192.168.2.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq -j DROP
  //不允许使用迅雷下载
  [root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.10-192.168.2.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto xunlei -j DROP
  //不允许访问http
[root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.10-192.168.2.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto http -j DROP
  (5)工程部门实现要求
  //允许dns访问,做nat转换
  [root@server ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.21-192.168.2.40 -p udp --dport 53 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
  //做透明代理
  [root@server ~]# iptables -t nat -A PREROUTING -m iprange --src-range 192.168.2.21-192.168.2.40 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 80 -j REDIRECT --to-port 3128
  [root@server ~]# iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT[root@server ~]# iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
  [root@server ~]# iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
  [root@server ~]# iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
  //安装squid
  [root@server ~]# mkdir /media/cdrom   //创建挂载点
  [root@server ~]# mount /dev/cdrom /media/cdrom //挂载光盘
  [root@server ~]# yum install squid
  //编辑squid的配置文件
  [root@server ~]# vim /etc/squid/squid.conf

  //启动squid的服务
  [root@server ~]# service squid start
  //拒绝迅雷下载和qq聊天
  [root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto xunlei -j DROP
  [root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq -j DROP
  

  (6)经理办实现要求
  //允许访问http
  [root@server ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.31-192.168.2.40 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 80 -j ACCEPT
  [root@server ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.31-192.168.2.40 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq -j ACCEPT
  //下班时间无限制
  [root@server ~]# iptables -t filter -A FORWARD -m time --timestart 20:01 --timestop 07:59 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
  [root@server ~]# iptables -t filter -A FORWARD -m time --weekdays Sat,Sun -j ACCEPT
  

  (7)dmz区域
//对rdp服务器进行发布
[root@server ~]# iptables -t nat -A PREROUTING -d 192.168.1.3 -p tcp --dport 3389 -j DNAT --to 192.168.3.100
[root@server ~]# iptables -t filter -I FORWARD -d 192.168.3.100 -p tcp --dport 3389 -j ACCEPT
//查看规则
[root@server ~]# iptables -t nat -L -n -v --line-number

5、案例测试:
(1)在工程部的主机上访问FTP,结果如下:

(2)在软件部主机上,在上班时间测试,访问百度和新浪结果如下所示:
//访问百度



//访问新浪被拒绝,如下:



访问163发现图片被拒绝,如下所示:



登录qq,结果如下:
  

  


  

  (3)dmz区域测试
  在经理办或其他部门找一台PC机进行测试,远程连接的结果如下图所示:

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656214-1-1.html 上篇帖子: CentOS 6 squid 3.x 下篇帖子: CentOS 6.5上安装squid 3.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表