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

来源:互联网 发布:中日翻译软件下载 编辑:程序博客网 时间:2024/04/23 20:18
主要是按照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)
原创粉丝点击