• 具体的应用层过滤应用程序,例如qq xunlei这些影响网络性能的应用程序,iptables + netfilter本身是不提供这种过滤机制的,如果需要实现上面的功能,就需要通过第三方的补丁软件来提供上述功能,并且需要注意的是netfilter实现的是规则的执行,iptables实现的是规则的制定,所以需要向两个都打补;
  • 尝试编译linux.26.29内核,并且向内核提供补丁文件
[root@server14 src]# xz -d linux-2.6.28.1.tar.xz
[root@server14 src]# tar -xf netfilter-layer7-v2.22.tar.gz
[root@server14 src]#  ln -sv linux-2.6.28.1 linux
  • 然后对内核打补丁
[root@server14 linux]# patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch 
  • 复制一个内核配置文件的样本,来进行修改
[root@server14 linux]# cp /boot/config-2.6.18-308.el5 .config
  • 执行修改版本信息
  make menuconfig General setup  --->  ()  Local version - append to kernel release 
  • 找到关于网络服务的选项
  • 通过下面的链接进入
Networking support ---> Networking options  --->
[*] Network packet filtering framework (Netfilter)  ---> Core Netfilter Configuration  ---><M> Netfilter connection tracking support  
  • 启用上面的以及相关的子选项

  • 继续找到并且启动这几个选项

<M>   "state" match support
<M>   "layer7" match support
<M>   "iprange" address range match support
<M>   "conntrack" connection tracking match support
<M>   "connlimit" match support"
<M>   "connbytes" per-connection counter match support 
  • 这里面可以按照需要启动iptables相应的扩展模块
  • 关键的还需要打开关于ftp支持的模块
<M>   FTP protocol support
  • 这个模块里面的内容可以根据实际需要进行添加,更改关于netfilter的信息
Networking support ---> Networking options  --->
[*] Network packet filtering framework (Netfilter)  --->
IP: Netfilter Configuration  --->
  • 添加进去之后的第一个选项
<M> IPv4 connection tracking support (required for NAT)
  • 因为这个是nat服务器需要的
  • 同时还需要添加
<M>   Full NAT
<M>     MASQUERADE target support
<M>     NETMAP target support
<M>     REDIRECT target support
  • 说明一下,M表示作为模块,进行编译,*:表示作为内核核心的一部分;
  • 如果后期没有实际的需求,可以去掉一下不需要的模块,例如驱动的相关模块,因为这里使用的是虚拟机进行编译,对于不需要的驱动可以直接去掉
  • 编辑完成之后,保存修改后的配置文件,然后开始进行编译
  • 如果是使用ssh链接的虚拟机或者服务器,建议使用screen命令,然后执行make,防止链接中断,编译停止
[root@server14 linux]# make HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -s arch/x86/Kconfig
........这个过程需要好久,好久
  • 因为是使用虚拟机进行编译,所以,需要保证内存在2048MB以上,并且虚拟机里面不建议使用make -j #,这个选项,几次使用的经历都出现了虚拟机自动关机的情况;
  • 这是编译完成之后的截图
  • 执行make之后,执行
[root@server14 linux]# make modules_install
这个过程大约几分钟
  • 然后执行
[root@server14 linux]# make install 
  • 修改默认使用第一个进行启动
[root@server14 linux]# vim /etc/grub.conf 

  • 使用命令重新启动,并且使用新的内核
[root@server14 ~]# shutdown -r now 
  • 启动完成之后,查看内核信息

  • 接下来编译IPtabls

  • 如果需要使用RPM软件包提供管理和配置文件,可以将这些文件进行备份
[root@server14 ~]# cp /etc/init.d/iptables /mnt/
[root@server14 ~]# cp /etc/sysconfig/iptables-config /mnt/
[root@server14 ~]# cp /etc/sysconfig/iptables /mnt/iptablesRules
  • 首先停止服务,并且禁止开机自启动操作
[root@server14 ~]# /etc/init.d/iptables stop
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
[root@server14 ~]# chkconfig iptables off 
  • 然后卸载使用iptables相关的软件包
[root@server14 ~]# rpm -e iptables-ipv6 iptables iptstate --nodeps
warning: /etc/sysconfig/iptables-config saved as /etc/sysconfig/iptables-config.rpmsave   //这个信息表示保存了一份之前安装的配置文件
  • 解压iptables的软件包
[root@server14 src]# tar xf iptables-1.4.6.tar.bz2 
  • 软件包里面的常见的扩展在
[root@server14 extensions]# pwd
/usr/src/iptables-1.4.6/extensions
  • 接下来需要复制补丁里面的扩展信息到上面的这个目录里面
[root@server14 extensions]# cp ../../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* .
其实只有两个文件
  • 接下来提供选项进行编译安装
[root@server14 iptables-1.4.6]# ./configure --prefix=/usr --with-ksource=/usr/src/linux
  • 因为iptables脚本里面的环境变量和使用make安装的脚本路径不一致,所以这样进行安装,需要修改iptables里面的路径
[root@server14 iptables-1.4.6]# vim /mnt/iptables
if [ ! -x /usr/sbin/$IPTABLES ]; thenecho -n $"/usr/sbin/$IPTABLES does not exist."; warning; echoexit 0
fi
  • 复制启动脚本,并且配置开机自动启动
[root@server14 iptables-1.4.6]# cp /mnt/iptables /etc/init.d/
[root@server14 iptables-1.4.6]# chkconfig --add iptables
[root@server14 iptables-1.4.6]# chkconfig --list | grep iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
  • 复制配置脚本
[root@server14 iptables-1.4.6]# cp /mnt/iptables-config /etc/sysconfig/
  • 接下来启动iptables服务
[root@server14 ~]# /etc/init.d/iptables start
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: nat filter                [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]
  • 如果没有加载nf_nat_ftp修改配置文件添加
[root@server14 ~]# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_nat_ftp ip_conntrack_netbios_ns"
  • 查看使用的模块信息

  • 提供协议特征包

  • 对于layer7的过滤需要使用只idng特定的协议特征,协议特征包使用软件l7-protocols-2009-05-28.tar.gz软件包来提供;
  • 对于这个软件包只需要解压,并且执行make install
[root@server14 src]# tar -xf l7-protocols-2009-05-28.tar.gz
[root@server14 src]# cd l7-protocols-2009-05-28
[root@server14 l7-protocols-2009-05-28]# make install
mkdir -p /etc/l7-protocols
cp -R * /etc/l7-protocols
  • 建议重新启动一下iptables
[root@server14 l7-protocols-2009-05-28]# service iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: nf_nat_ftp ip_conntrac[  OK  ]s_ns 
  • 这个软件包支持的大量的协议在软件目录
[root@server14 l7-protocols-2009-05-28]# ll /etc/l7-protocols/protocols/
  • 支持的常见协议有:

  • 关于需要layer7的基础环境配置已经完成了,接下来需要三台主机来模拟进行实验

    server12.com: 192.169.10.20/24表示内网主机
    server14.com:两个地址172.25.23.14/24虚拟为互联网地址; 192.168.10.100/24:表示内网主机,并且作为网关地址;
    server20.com:172.25.23.30/24表示为互联网地址
    这里添加一个windows xp professional 的主机,用来安装qq,等软件,IP地址为192.168.10.40/24

  • 首先配置windows xp的网络,并且测试网络是否正常

  • 找到右下角的网络按钮,选择属性,现在显示网络是不正常的;
  • 选择TCP/IP点击属性
  • 按照规划配置下面的地址


* 使用配置的地址尝试ping网关

  • 接下来需要添加一个SNAT规则用于将内网地址转换层虚拟的外网地址
[root@server14 ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.25.23.14
  • 上面的规则用于虚拟内部主机192.168.10.0/24网段的主机访问172.25.23.14,接下来需要添加规则,配置真机允许172.25.23.14/25能够连上互联网
[root@my Desktop]# iptables -t nat -I POSTROUTING -s 172.25.23.14 -j MASQUERADE
[root@my Desktop]# iptables -I FORWARD -s 172.25.23.14 -j ACCEPT
  • 使用172.25.23.14/24ping互联网主机

  • 使用Windows Xp来安装QQ,同时也可以验证网络访问是否正常

  • 下载并且安装QQ,这里已经安装

  • 接下来指定规则,拒绝QQ的访问

[root@server14 ~]# iptables -A FORWARD -s 192.168.10.0/24 -m layer7 --l7proto qq -j REJECT
  • 这里在访问网络的过程中已经得到了一些匹配到的报文信息

  • 这里查看QQ规则是否匹配到报文,这里关心FORWARD链,这里还没有报文匹配

  • 尝试登陆QQ,这里显示由于防火墙的设置,导致登陆失败
  • 查看是否匹配到QQ对应的报文
  • 这里可以看到已经得到对应的报文,说明规则已经生效
  • 接下来删除这个规则,来允许QQ访问
  • 这里显示的是需要手机QQ进行确认,说明登陆已经是成功的了,截一张小图,说明QQ已经登陆成功,在QQ已经登陆的情况下,添加上述规则,查看QQ是否会被强制下线;
  • 规则已经重新添加
  • 虽然添加了规则,但是对于已经登陆的的QQ并不能够强制进行下线,所以状态仍然为在线
  • 还需要注意的是,一旦在报文已经生效的情况下,将状态切换为隐身,那么再切换为在线,这个切换是不能够成功的;
  • 这个QQ版本使用的是最新的版本,上面的规则是可以进行生效的;

  • 因为上面重新编译了kernel iptables并且在指定模块时将time模块加入了,所以这里是可以使用iptablestime扩展模块的

   time--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
    --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
    --timestart hh:mm[:ss]
     --timestop hh:mm[:ss]
     [!] --monthdays day[,day...][!] --weekdays day[,day...]
  • 通常来说startstop必须是结合起来使用的
  • 可以通过结合time模块来实现对于QQ的访问限制
[root@server14 ~]# iptables -R FORWARD 1 -m time --timestart 08:10:00 --timestop 12:00:00 -j DROP
[root@server14 ~]# iptables -A FORWARD  -m time --timestart 14:10:00 --timestop 18:00:00 -j DROP

iptables 7层过滤相关推荐

  1. linux 七层防火墙,iptables防火墙实现七层过滤对应用层的过滤

    一)iptables防火墙实现七层过滤对应用层的过滤.(应用模块layer7) 图如下: 1)对内核先打补丁,打上layer7的模块,然后重新编译内核 tar xf netfilter-layer7- ...

  2. iptables工具__过滤包—命令

    iptables工具__过滤包-命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...

  3. STM32 F7的MAC层过滤使用+实例代码

    前景描述 我司的以太网实现是LAN8720搭配片上MAC层做的,协议栈用LWIP 这种做法应该还是蛮常见的,反正不是LAN8720就是DP83864,再不然就是硬件协议栈的W5500了 想想还是有MA ...

  4. iptables 关于URL过滤

    iptables 关于URL过滤 方法1: 1.首先可以利用nslookup 查看下URL的IP地址:例如我禁止www.baidu.com nslookup www.baidu.com 2.禁止转发源 ...

  5. iptables7层过滤,屏蔽(QQ,MSN,迅雷,PPTV等)

    本文将以实际例子的方式简单介绍iptables实现防火墙,源IP/目的IP地址转换,iptables拓展模块,以及通过重新编译内核凭借l7-filter模块过滤QQ.迅雷等应用程序通信等内容. 一.通 ...

  6. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platfrom))

    catalog 0.引言 1.Windows 2000网络结构和OSI模型 2.NDIS驱动 3.NDIS微端口驱动编程实例 4.NDIS中间层驱动编程实例 5.TDI驱动 6.TDI驱动 7.TDI ...

  7. iptables mac地址过滤

    开启iptables ehco '1' > /proc/sys/net/ipv4/ip_forward sysctl -p 命令行里两步 首先开启地址转换 iptables -t nat -A ...

  8. iptables+geoip来过滤阻挡来源IP

    有些时候,某些国家的IP一直在对服务器进行登录尝试或***等等,需要先将可疑IP分析出来,再用iptables来封掉它.延后又耗时费力.现在可以用xtables-addons,对来源IP进行阻挡. 1 ...

  9. iptables从入门到精通

    一.主要知识点: 1. Iptables表链结构 2. 数据包过滤流程 3. Iptables书写规则 4. Iptables条件匹配 5. Iptables数据包控制 6. Iptables七层过滤 ...

最新文章

  1. TF-IDF与余弦相似性的应用(一):自动提取关键词 - 阮一峰的网络日志
  2. 习题11.6 fill_n
  3. redis 硬件要求_Redis持久化机制
  4. jQuery的属性操作
  5. 前端学习(1563):ng-if
  6. 怎么修改file文件框的无文件提示_使用LativeLink时,DO文件编制步骤
  7. java类与继承的执行顺序
  8. 第 3 章 运行时数据区概述及线程
  9. 谨防 ActiveSupport::Cache::Store 缓存 nil 值
  10. SqlServer中的Top * With Ties
  11. 安卓结课作业 音乐播放器 视频播放 游戏 附带源码
  12. EOS Wallet 操作
  13. 实践:阿里云服务器+Ubuntu系统发布javaweb项目
  14. [python 爬虫]Python爬虫抓取马蜂窝游记的照片 基于xpath
  15. ST 增加 SiC 模块生产
  16. 视频RTMP推流实践
  17. Python简要学习教程
  18. 社区团购小程序怎么盈利
  19. 从零开始学习小程序1-1开发一个单页面小程序
  20. 项目文档编写规范与代码规范

热门文章

  1. iOS 优雅的处理网络数据,你真的会吗?不如看看这篇.
  2. 千兆光模块与交换机如何搭配使用?
  3. Android菜鸟笔记-EditText相关知识整理
  4. python爬虫学到什么地步找工作_爬虫学到什么水平可以去找工作?这是我给你的一个建议!...
  5. SQL生成n位随机字符串
  6. 【亡羊补牢】计算机网络灵魂之问 第8期 tcp和udp区别
  7. 4.3计算机动画制作 教案,计算机动画制作1教案
  8. 玩转 Apple 快捷指令,打卡、切图、查快递、扫码付款等!
  9. 梦幻模拟战更新服务器正在维护,《梦幻模拟战》10月25日更新维护公告
  10. 数据结构--停车管理系统