Iptables+layer7+squid

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),下班后无限制。经理办公室http和qq {l7}都可以,下班后无限制。dmz区域rdp  server  服务器进行发布

3、案例拓扑图:

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

4、案例实施:

(1)重新编译内核,为内核打layer7的补丁

//解压内核补丁安装包和layer7协议安装包

[[email protected] ~]# tar -jxvf linux-2.6.25.19.tar.gz2 -C /usr/src/

[[email protected] ~]# tar -zxvf netfilter-layer7-v2.20.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/linux-2.6.25.19/

//为内核打上layer7补丁

[[email protected] linux-2.6.25.19]# patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch

//生成内核的编译文件

[[email protected] linux-2.6.25.19]# cp /boot/config-2.6.18-164.el5 .config

[[email protected] linux-2.6.25.19]# make menuconfig

HOSTCC  scripts/basic/fixdep    //使用旧内核配置

/bin/sh: gcc: command not found

//安装menuconfig所依赖的相关安装包

[[email protected] linux-2.6.25.19]# yum install gcc

[[email protected] linux-2.6.25.19]# yum install ncurses-devel

安装完后再重新执行make menuconfig命令

[[email protected] 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)。

编辑配置完后保存退出,然后编译、安装。

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

[[email protected] linux-2.6.25.19]# make && make modules_install && make install

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

在重新启动时先按下任意键进入以下界面,如下图所示:

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

(2)重新编译iptables

//把原来的iptables控制脚本文件复制一份

[[email protected] ~]# cd /etc/init.d/

[[email protected] init.d]# cp iptables iptables.bk

//卸载现有的iptables

[[email protected] ~]# yum remove iptables

//解压iptables源码安装包

[[email protected] ~]# tar -jxvf iptables-1.4.2.tar.bz2 -C /usr/src/

//为iptables打上layer7补丁

[[email protected] ~]# cd /usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward/

[[email protected] 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解压目录下进行编译

[[email protected] ~]# cd /usr/src/iptables-1.4.2/

[[email protected] iptables-1.4.2]# ./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.25.19

//执行make和make  install

[[email protected] iptables-1.4.2]# make && make install

//安装l7-protocols模式包

[[email protected] ~]# tar -zxvf l7-protocols-2008-10-04.tar.gz -C /etc

[[email protected] ~]# mv /etc/l7-protocols-2008-10-04 /etc/l7-protocols

(3)防火墙iP地址配置

连接LAN接口IP地址的配置如下:

连接WAN接口的IP地址配置如下:

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

//首先打开路由转发功能

[[email protected] ~]# vim /etc/sysctl.conf

[[email protected] ~]# sysctl -p   //刷新路由协议

(4)软件部门实现要求

//把自己所在终端加入防火墙策略中,然后设置默认拒绝

[[email protected] ~]# iptables -t filter -A INPUT -s 192.168.2.1 -p tcp --dport 22 -j ACCEPT

[[email protected] ~]# iptables -P INPUT DROP //默认拒绝

[[email protected] ~]# iptables -t filter -A OUTPUT -d 192.168.2.1 -p tcp --sport 22 -j ACCEPT

[[email protected] ~]# iptables -P OUTPUT DROP

[[email protected] ~]# iptables -P FORWARD DROP

//上班时间允许访问ftp

[[email protected] ~]# 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

[[email protected] ~]# iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# modprobe ip_nat_ftp  //添加ftp模块

[[email protected] ~]# iptables -t filter -D FORWARD 1//删除已有的

//查看已有的策略规则

[[email protected] ~]# iptables -t filter -L -n -v --line-numbers

//上班时间不允许qq

[[email protected] ~]# 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

//不允许使用迅雷下载

[[email protected] ~]# 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
[[email protected] ~]# 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转换

[[email protected] ~]# 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

//做透明代理

[[email protected] ~]# 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

[[email protected] ~]# iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT[[email protected] ~]# iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT

[[email protected] ~]# iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

[[email protected] ~]# iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

//安装squid

[[email protected] ~]# mkdir /media/cdrom   //创建挂载点

[[email protected] ~]# mount /dev/cdrom /media/cdrom //挂载光盘

[[email protected] ~]# yum install squid

//编辑squid的配置文件

[[email protected] ~]# vim /etc/squid/squid.conf

//启动squid的服务

[[email protected] ~]# service squid start

//拒绝迅雷下载和qq聊天

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

//下班时间无限制

[[email protected] ~]# iptables -t filter -A FORWARD -m time --timestart 20:01 --timestop 07:59 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT

[[email protected] ~]# iptables -t filter -A FORWARD -m time --weekdays Sat,Sun -j ACCEPT

(7)dmz区域

//对rdp服务器进行发布

[[email protected] ~]# iptables -t nat -A PREROUTING -d 192.168.1.3 -p tcp --dport 3389 -j DNAT --to 192.168.3.100

[[email protected] ~]# iptables -t filter -I FORWARD -d 192.168.3.100 -p tcp --dport 3389 -j ACCEPT

//查看规则

[[email protected] ~]# iptables -t nat -L -n -v --line-number

5、案例测试:

(1)在工程部的主机上访问FTP,结果如下:

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

//访问百度

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

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

登录qq,结果如下:

(3)dmz区域测试

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

时间: 2024-08-18 17:10:15

Iptables+layer7+squid的相关文章

【linux基础】22、iptables layer7 实现七层应用过滤

一.iptables layer7简介 iptables layer7模块根据应用层协议对访问请求进行过滤 iptables工作于二,三,四层,本身不具备7层过滤功能,第三方开发者为iptables新增了layer7模块,能检测每一个报文的内部应用层协议是什么,并根据协议对请求进行过滤,但不支持对应用层协议的方法进行过滤. 需要对内核中的netfilter打layer7补丁并重新编译内核,对iptables打补丁,补上layer7模块并重新编译iptables 项目官网:http://l7-fi

Netfilter/Iptables Layer7 应用层过滤策略部署

Netfilter/Iptables Layer7 应用层过滤策略部署 环境:内核版本:Linux version 2.6.32-431.el6.x86_64 iptables版本:iptables v1.4.7 gcc版本:4.6.1 软件准备:wget http://download.clearfoundation.com/l7-filter/netfilter-layer7-v2.23.tar.gz wget https://www.kernel.org/pub/linux/kernel/

自动安装squid+iptables上网代理及上网行为管理脚本(二)。

#本节内容为配置iptables 与 squid ,并以文件来获取规则,以方便管理规则. #接上一个脚本内容,此部分内容需根据需求更改部分内容. #停止squid服务 systemctl enable squid &> /dev/null systemctl stop squid #编辑squid配置文件 squid_conf_file=/etc/squid/squid.conf mv $squid_conf_file $squid_conf_file.bk cat > $squid_

iptables防火墙介绍+实战

第1章 iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制.特别是它可以在一台非常低的硬件配置下跑的非常好.iptables+zebra+squid Iptables是linux2.4及2.6内核中集成的服务.其功能与安全性比其老一辈ipfwadm,ipchains强大的多,Iptables主要

iptables的常用设置

iptables -F #清空所有规则链 iptables -X #删除特定手工设置的链 iptables -P INPUT DROP #默认INPUT规则 丢弃 iptables -P OUTPUT DROP #默认OUTPUT规则 丢弃 iptables -P FORWARD DROP #默认FORWARD规则 丢弃 iptables -A INPUT  -p tcp --dport 22 -o eth0 -j ACCEPT #开SSH服务进站端口 iptables -A INPUT  -p

企业防火墙-iptables策略

阅读目录 1.1 企业中安全优化配置原则 1.2 iptables防火墙简介 1.3 iptables 表和链 1.4 iptables工作流程 1.5 iptables操作 1.6 iptables filter表配置实例 1.7 iptables nat表配置实例 1.8 自定义链的配置 1.9 附录-防火墙状态机制 1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的情况,不能开ip

企业防火墙之iptables

1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全 1.1.1 生产中iptables的实际应用 主要应用方向 1.主机防火墙(filter表的INPUT链). 2.局域网共享上网(nat表的POSTROUTING链).半个路由器,NAT功能. 3.端口及IP映射(nat表的PREROUTING链),硬防的NAT功能. 4

企业软件防火墙iptables

1.1 企业中安全优化配置原则 推荐:尽可能不给内部服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 使用场景: 大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全 小并发的情况,选择软件防火墙:iptables(centos 6).firewalld(centos 7) firewalld 是最新的软件防火墙centos 7在使用 1.1.1 生产中iptables的实际应用 主要应用方向 1.主机防火墙(fi

Iptables 网络安全

第1章 Iptables网络安全 1.1 Iptables防火墙介绍 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具 Netfilter一个系统的内核模块,通过netfilter内核控制硬件设备 Iptables相当于是一个控制软件 iptables+zebra+squid == 一台硬件防火墙 iptables主要工作在OSI七层的二.三.四层 实现应用层访问控制:nginx WAF实现应用访问