Centos+iptables+l7-filter 封QQ MSN和P2P

本文介绍如何在CentOS 4.7系统中使用L7-filter模块通过iptables实现对特定应用如P2P软件及即时通讯工具的封禁。包括内核及iptables的升级步骤、L7-filter的安装与配置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是按照 http://www.10235.com/linux/centos-iptables-l7filter.html
进行实作,只是软件都换成最新版本。
在网关上如果要封杀 QQ、MSN 或者 P2P 等软件的通讯,单纯用 iptables 逐一封服务端IP或者封通讯端口都不是很好的办法,最简单的方法是使用L7-filter。
L7-filter (Application Layer Packet Classifier for Linux), 是 Linux netfilter 的外挂模块, 它能使 Linux 的 iptables 支持 Layer 7 (Application 应用层) 过滤功能, 限制封杀 P2P、即时通讯软件。
Centos 4.7
Kernel 2.6.28
Iptables 1.4.2
1.下载所需软件包:
kernel 2.6.28
# wget http://www.kernel.org/pub/linux/kern...2.6.28.tar.bz2
iptables 1.4.2
# wget http://www.netfilter.org/projects/ip...-1.4.2.tar.bz2
L7-filter http://sourceforge.net/project/showf...group_id=80085
netfilter-layer7-v2.21.tar.gz
l7-protocols-2008-12-18.tar.gz
2.配置编译新内核
首先将所下载的软件都放置于/usr/src目录下
# tar zxvf netfilter-layer7-v2.21.tar.gz
# tar xjvf linux-2.6.28.tar.bz2
# cd linux-2.6.28
# patch -p1 < /usr/src/netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch (打L7-filter的内核补丁)
# make clean && make mrproper
# cp /boot/config-`uname -r` ./.config
# make oldconfig
(如果之前曾经编译过,需要先执行 make mrproper 。make oldconfig会自动对比之前的kernel config,根据之前版本的配置生成一个kernel config,这样方便我们在编译新核心的时候,无须在从头修改所有的核心设置)
//配置内核时,在“Networking ---> Networking Options ---> Network Packet filtering framework (Netfilter) ”处主要注意两个地方:
1) ---> Code 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)”编译成模块。
//将“Full NAT”下的“MASQUERADE target support”和“REDIRECT target support”编译成模块。
# make rpm
# rpm -i /usr/src/redhat/RPMS/i386/kernel-2.6.28-1.i386.rpm
# mkinitrd /boot/initrd-2.6.28.img 2.6.28
编辑/boot/grub/menu.lst
# vi /boot/grub/menu.lst
我的menu.lst如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$4fY3Crzn$TBJNWnddsam0vg5xmJSRa0
title CentOS (2.6.9-78.0.8.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.8.EL ro root=LABEL=/
initrd /initrd-2.6.9-78.0.8.EL.img
title CentOS (2.6.28)
root (hd0,0)
kernel /vmlinuz-2.6.28 ro root=LABEL=/
initrd /initrd-2.6.28.img
title CentOS (2.6.9-78.0.8.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.8.ELsmp ro root=LABEL=/
initrd /initrd-2.6.9-78.0.8.ELsmp.img
# shutdown -r now
# uame -a
Linux pe840.luanhe.com 2.6.28 #1 SMP Sat Jan 10 10:59:10 CST 2009 i686 i686 i386 GNU/Linux
系统已经更新至新内核 2.6.28
3.更新升级Iptalbes的Layer7补丁
# cd /usr/src
# tar xjvf iptables-1.4.2.tar.bz2
# cd /usr/src/netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/
# cp libxt_layer7.c libxt_layer7.man /usr/src/iptables-1.4.2/extensions/
# cd /usr/src/iptables-1.4.2/
# ./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.28
# make && make install
# iptables -V
iptables v1.4.2 已经更新至新版本
4. 安装Layer7 协议文件
# cd /usr/src
# tar zxvf l7-protocols-2008-12-18.tar.gz
# cd l7-protocols-2008-12-18
# make install
5.使用iptables layer-7 filter:
# iptables -t mangle -I PREROUTING -m layer7 --l7proto edonkey -j DROP (禁止edonkey)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto bittorrent -j DROP (禁止bt)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto qq -j DROP (禁止QQ通讯)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto msnmessenger -j DROP (禁止edonkey)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto xunlei -j DROP (禁止迅雷)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto kugoo -j DROP (禁止kugoo)
# iptables -t mangle -I PREROUTING -m layer7 --l7proto yahoo -j DROP (禁止Yahoo! Messenger)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值