当前位置 : 主页 > 操作系统 > centos >

linux系统之编译内核实现iptables应用层过滤

来源:互联网 收集:自由互联 发布时间:2022-06-20
温馨提示 : 之前己经介绍了Linux防火墙iptables的原理及命令用法,在前面说过 iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。以基于网络层

温馨提示

之前己经介绍了Linux防火墙iptables的原理及命令用法,在前面说过iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。以基于网络层的数据包过滤机制为主,同时提供少量的传输层、数据链路层的过滤功能。难以判断数据包对应于何种应用程序(如:视频,QQ)

一、前言

为了解决上述问题,可以为netfilter打上补丁,由于netfilter是基于Linux内核的,所以要重新编译,而后也要为iptables添加相应的补丁文件,重新编译安装后提供基于应用层(第7层)的扩展功能。通过独立的l7-protocols协议包提供对各种应用层协议的特征识别与定义,从而达到限定应用程序的目的。

二、具体实现过程

注:

1、 目前,官网的layer7只支持到内核版本较低,如要使用,只有两个办法,第一种方法将内核降级,另一个是修改layer7中的源代码,使之适用于当前内核的版本。

2、这里所说的内核版本是指redhat再编译整合后的发布的内核版本,并不是kernel.org中的内核版本。所以要使用请到redhat的ftp站点去下载。

=========================================================================================

1、实验所需要的相关包

内核源码包:kernel-2.6.32-431.11.2.el6.src.rpm 下载地址iptables:iptables-1.4.7-11.el6.src.rpm 下载地址

l7-protocols协议包:l7-protocols-2009-05-28.tar.gz 下载地址

2、安装过程

⑴、 获取并编译内核

# useradd mockbuild 添加安装src格式的软件包需要的用户

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序

  解压缩到指定的目录中

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_02

制作软链接,便于以后使用

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_03

⑵、为内核打上netfilter-layer7-v2.23补丁

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_04

⑶、基于本地系统中的内核配置文件编译此内核

# cp /boot/config-2.6.32-431.el6.x86_64 .config # make menuconfig

①、网络支持

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_05

②、参数设定子项

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_06

③、设定过滤模板

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_07

④、核心过滤配置

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_08

⑤、支持layer7匹配器

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_09

⑥、确保支持连接追踪

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_10

⑦、基于IP过滤配置

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_11

⑧、ipv4的nat连接追踪功能

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_12

⑨、取消编译验证

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_13

⑩、取消模块签名认证

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_14

进入API接口

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_15

取消签名检查

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_16

退出并保存

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_17

⑷、编译并安装内核

# make # make modules_install # make install

这样就会在/boot/grub/grub.conf文件中有一个新的内核版本,将default设置到此内核版本次序上,就可以启动新的内核了。

(5)、重启系统,启用新内核

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_18

3、编译iptables

#cd /download # tar xf iptables-1.4.20.tar.bz2 # cp /download/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/* extensions/

说明:之前己经将nerfilter编译到内核中了,在此将netfilter新的功能支持到kernel2.6.20之后的版本复制到iptabels扩展功能中。

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_19

备份启动脚本与配置文件

# cp /etc/rc.d/init.d/iptables /download # cp /etc/sysconfig/iptables-config /download

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_20

# make && make install

注:在此处出现如下警告,提示netfilter_conntrack没有找到,这个可以忽略,在安装完成后使用 modprobe加载即可。

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_21

还原启动脚本与配置文件

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_22

4、为layer7模块提供其所识别的协议的特征码

# tar zxvf l7-protocols-2009-05-28.tar.gz # cd l7-protocols-2009-05-28 # make install

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_23

5、如何使用layer7模块

⑴、安装完成后,查看iptabels的版本。

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_24

⑵、修改脚本

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_25

⑶、ACCT的功能已经可以在内核参数中按需启用或禁用。此参数需要装载nf_conntrack模块后方能生效

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_26

⑷、加载nf_conntrack模块(之前警告处提示的那个)

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_27

6、测试layer7应用层程序限定

注:更新后iptables在原有基础上新增了应用层的扩展语法,支持更多的扩展功能。

其格式如:

# iptables [specify table & chain] -m layer7 --l7proto [protocol name] -j [action]

三、测试环境系统 :windows xp 安装软件QQ

系统 :linux 基于iptables 的防火墙。

1、网络属性:

windows xp

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_28

linux网络属性

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_29

2、配置完成后,测试windows xp与linux的连通性

注:

但无法ping通物理机所在的192.168.1.0网段中的网关(192.168.1.253)

3、linux开启包转发与地址伪装

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_30

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_31

4、xp上网测试

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_32

5、限定某一网络内的主机不可以上QQ#iptables -I FORWARD -m layer7 --l7proto qq -j REJECT

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_33

6、查看效果

linux系统之编译内核实现iptables应用层过滤_linux、iptables、应用层程序_34

注:如果想了解更多的l7-protocols支持对那些应用程序限定,请移步官网

====================================完=============================================

上一篇:定制属于自己的 linux 内核(Step 2)
下一篇:没有了
网友评论