本文转自网络
下载文件
最新内核: http://www.kernel.org/pub/linux/kernel/v2.6/
我下载的最新的 linux-2.6.30.tar.bz2 (注意,这个内核layer7没标明测试通过)
查看netfilter-layer7里的readme,2.6.30版本还是untested
附内核支持情况http://l7-filter.sourceforge.net/kernelcompat
iptables:
http://www.netfilter.org/projects/iptables/files/iptables-1.4.4.tar.bz2
netfilter:
http://sourceforge.net/projects/l7-filter/files/
netfilter-layer7-v2.22.tar.gz
l7-protocols:
http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2009-05-28.tar.gz
(这个我在sourceforge.net/projects/l7-filter的目录下没找到,后来在别的地方找的上面的链接)
下载完成后将4个文件全部放在/usr/src目录下(当然,放其它目录也可以)
#tar -jxvf linux-2.6.30.tar.bz2
#tar -jxvf iptables-1.4.4.tar.bz2
#tar -zxvf netfilter-layer7-v2.22.tar.gz
#tar -zxvf L7-protocols-2009-05-28.tar.gz
打内核打l7补丁并升级内核
#cd linux-2.6.30
#patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
将以前的内核配置参数copy到当前目录下为.config
#cp /boot/config-2.6.18-92.el5 .config
#make menuconfig
选择 Load an Alternate Configuration File
选择 .config
再按以下项目配置 networking support----->networking options---->network packet filtering framework(netfilter)
1 ---->core netfilter configuration
A 将 "Netfilter connection tracking suport (NEW)" 选择编译为模块(M),需选取此项才能看到下面layer7支持的配置。(开始不知道这个,找了半天没看到layer7,晕)
B 将layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块,根据需要看着办
C 将netbios name service protocal support(new)编译成模块,不然后面升级iptables后启动时会出错
2 ----->IP: Netfilter Configuration
A 将 "IPv4 connection tracking support (require for NAT)" 编译成模块。
B 将 "Full NAT" 下的 "MASQUERADE target support" 和 "REDIRECT target support" 编译成模块。
关闭Selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
#make 这步要很久,等了快1个小时完成
#make modules
#make modules_install
#make install
#reboot
#uname -r
2.6.30
系统起来了,成功了一半,继续
升级iptables并加入layer7补丁
#cd /usr/src/iptables-1.4.4
copy libxt_layer7.c与libxt_layer7.man到iptables目录下
#cp /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/* extensions/
#./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.30
或./configure --with-kernel=/usr/src/linux-2.6.30
#make ; make install
#reboot
#iptables -V
iptables v1.4.4 (已经更新至新版本)
安装Layer7 协议文件
# cd /usr/src/l7-protocols-2009-05-28
# make install
#cd /etc/l7-protocols/protocols
#ls (以下都是l7定义好的模板)
100bao.pat hotline.pat shoutcast.pat
aim.pat http.pat sip.pat
aimwebcontent.pat http-rtsp.pat skypeout.pat
applejuice.pat ident.pat skypetoskype.pat
ares.pat imap.pat smb.pat
armagetron.pat imesh.pat smtp.pat
battlefield1942.pat ipp.pat snmp.pat
battlefield2142.pat irc.pat socks.pat
battlefield2.pat jabber.pat soribada.pat
bgp.pat kugoo.pat soulseek.pat
biff.pat live365.pat ssdp.pat
bittorrent.pat liveforspeed.pat ssh.pat
chikka.pat lpd.pat ssl.pat
cimd.pat mohaa.pat stun.pat
cisco.pat msn-filetransfer.pat subspace.pat
citrix.pat msnmessenger.pat subversion.pat
counterstrike-source.pat mute.pat teamfortress2.pat
cvs.pat napster.pat teamspeak.pat
dayofdefeat-source.pat nbns.pat telnet.pat
dazhihui.pat ncp.pat tesla.pat
dhcp.pat netbios.pat tftp.pat
directconnect.pat nntp.pat thecircle.pat
dns.pat ntp.pat tonghuashun.pat
doom3.pat openft.pat tor.pat
edonkey.pat pcanywhere.pat tsp.pat
fasttrack.pat poco.pat unknown.pat
finger.pat pop3.pat unset.pat
freenet.pat pplive.pat uucp.pat
ftp.pat qq.pat validcertssl.pat
gkrellm.pat quake1.pat ventrilo.pat
gnucleuslan.pat quake-halflife.pat vnc.pat
gnutella.pat radmin.pat whois.pat
goboogy.pat rdp.pat worldofwarcraft.pat
gopher.pat replaytv-ivs.pat x11.pat
guildwars.pat rlogin.pat xboxlive.pat
h323.pat rtp.pat xunlei.pat
halflife2-deathmatch.pat rtsp.pat yahoo.pat
hddtemp.pat runesofmagic.pat zmaap.pat
使用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)
注意: layer7屏蔽的信息日志会在终端画面显示,搞得满屏都是,可以通过改变以下参数来关闭终端的显示:
#vim /etc/sysconfig/syslog
KLOGD_OPTIONS="-x -c 3"
#service syslog restart
最后:
如果启动iptables时报ip_conntrack_netbios_ns有错
在/etc/sysconfig/iptables-config
将以下一行注释掉。
IPTABLES_MODULES="ip_conntrack_netbios_ns"
ip_conntrack_netbios_ns是配置netbios穿越NAT用的,一般用不到的。