案例需求
——公司最近发现有很多员工在工作期间使用QQ、MSN等工具聊天,严重影响工作效率。为了加强工作纪律管理,公司采取了一些行政手段禁止员工采用类似工具私自聊天,同时要求网络管理员在网关服务器上做相应的技术封锁。由于使用IP地址和端口号过滤的方式灵活性较差,需要为netfilter/iptables体系增加Layer7补丁,以更便于对员工的应用层访问进行控制
需求描述
重新编译Linux内核,添加l7-filter应用层过滤补丁
重新编译iptables,添加l7-filter应用层过滤补丁
设置过滤规则,禁止使用QQ、MSN等聊天工具
设置过滤规则,禁止使用BT、电驴等下载工具
实现思路
1. 解压释放netfilter-layer7和Linux内核源码包,使用patch工具合并补丁文件
2. 重新配置内核编译参数,添加state机制及layer7支持
附:
在配置界面中的操作
方向键á、a、?、à用于定位功能项、菜单项
菜单项 <Select>、<Exit>、<Help>
空格键用于选择配置类型
对不同功能的配置选择
[ ]:空选时表示不需要在新内核中使用该功能
[ M ]:表示将此项功能编译为模块,以便在需要时加载
[ * ]:将此项功能直接编入新内核,作为新内核的一部分
A. Code Netfilter Configuration 网络过滤代码配置
B. IP: Netfilter Configuration IP包过滤功能配置
3. 编译新内核,并安装新内核文件、复制模块文件(编译(make)的过程耗时有点儿长啊)
4. 调整GRUB引导菜单,使系统默认以新内核启动,然后重启主机(因默认仍然以老的内核启动系统)
5. 卸载系统原有的iptables相关软件包
6. 解压释放iptables源码包,并应用补丁文件(复制到extensions子目录即可)
7. 配置、编译并安装iptables,需使用”—with-ksource”参数指定内核源码路径
8. 安装L7-protocols协议定义包
9. 使用iptables设置应用层过滤功能(这里我编写了一个Shell脚本,便于移植)
注意事项
为了节省编译时间,可直接从“make modules_install”步骤开始即可
注意选择的layer7补丁文件要与内核、iptables的版本相匹配
附:layer7应用层过滤功能
默认 netfilter/iptables 体系的不足
以基于网络层的数据包过滤机制为主,同时提供少量的传输层、数据链路层的过滤功能
难以判断数据包对应于何种应用程序(如QQ、MSN)
netfilter-layer7 补丁包的作用
由“L7-filter”项目提供
源码站点位于 http://l7-filter.sourceforge.net
通过为Linux内核、iptables添加相应的补丁文件,重新编译安装后提供基于应用层(第7层)的扩展功能
通过独立的 l7-protocols 协议包提供对各种应用层数据的特征识别定义,便于更新
使用的软件包列表
Linux内核源码包:linux-2.6.28.8.tar.bz2
iptables源码包:iptables-1.4.2.tar.bz2
layer7补丁源码包:netfilter-layer7-v2.21.tar.gz
协议定义包:l7-protocols-2009-05-10.tar.gz
pdf资料下载: http://down.51cto.com/data/102033