如何用NetfilterWord下载.docx
- 文档编号:5824927
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:9
- 大小:18.86KB
如何用NetfilterWord下载.docx
《如何用NetfilterWord下载.docx》由会员分享,可在线阅读,更多相关《如何用NetfilterWord下载.docx(9页珍藏版)》请在冰点文库上搜索。
在具体操作之前,先要了解一下升级内核补丁需要的一些相关软件:
linux-2.4.20-8.tar.gz、patch-o-matic-20040609.tar.bz2、iptables-1.2.8.tar.bz2、iptables-p2p-0.3.0a.tar.gz和ipp2p-0.5c.tar.gz。
这里的测试环境为RedHat9.0,内核为2.4.20-8。
由于2.4.*是一个稳定的内核,因此不能把当前开发的一些新功能提交到主内核中去,而只能首先在patch-o-matic中测试,然后打补丁到内核中。
在CVS中可以找到最新的patch-o-matic包—Patch-o-matic-20040609.tar.bz2。
有了内核支持后,还需要iptables支持,其中iptables-p2p-0.3.0a.tar.gz为netfilter/iptables组织开发的专门支持P2P的iptables扩展软件包;
ipp2p-0.5c.tar.gz为EickeFriedrich开发的一个支持P2P的iptables扩展包。
这两个扩展包各有特色,后面将会分别介绍。
装载模块
首先在/usr/src下解压软件包:
#bzip2-dpatch-o-matic-20040609.tar.bz2
生成patch-o-matic-20040609.tar.out。
#tarxvfpatch-o-matic-20040609.tar.out
生成补丁目录patch-o-matic-20040609。
RedHat9.0中默认的内核目录为/usr/src/linux-2.4。
进入补丁目录/usr/src/patch-o-matic-20040609,由于支持P2P协议控制选项需要CONNMARK模块,该模块在extra子目录下,因此需要运行如下命令来升级内核补丁。
#KERNEL_DIR=/usr/src/linux-2.4./runmeextra
运行该命令后会出现一个模块选择界面,界面有两个区域,一个给出相关的模块名、模块功能、用法和语法实例;
另一个给出各种选项,如N/y/b/r.../q/?
,其中第一个为大写字母,表示缺省选项,n表示下一个模块,y表示确定,b表示上一个模块,q表示退出。
首先应该确定当前的模块是否需要,不需要就按“N”键后回车,继续显示下一个模块的相关信息。
当出现需要的模块时,按“Y”键确认,同时应该将里面的相关语法实例抄录下来以备用。
选择完所有需要的模块后,按“Q”键退出。
编译内核
进入内核文件所在目录/usr/src/linux-2.4,开始编译内核:
#makemrproper
#makexconfig(或#makemenuconfig)
注意,在配置选项中必须选择Networkingoptions→IP:
NetfilterConfiguration→Connectionmarktrackingsupport和CONNMARKtargetsupport两个选项。
确保关键文件在正确位置:
#makedep
编译大内核:
<
CENTER>
ccid_nobr>
tablewidth="
400"
border="
1"
cellspacing="
0"
cellpadding="
2"
bordercolorlight="
black"
bordercolordark="
#FFFFFF"
align="
center"
>
tr>
<
tdbgcolor="
e6e6e6"
class="
code"
style="
font-size:
9pt"
pre>
ccid_code>
#makebzImage
编译选择的模块:
#makemodules
将编译后的模块转移到系统标准位置:
#makemodules_install
让系统自动修改启动配置文件grub.conf:
#makeinstall
重新启动系统,选择RedHatLinux(2.4.20-8custom)选项,则启动了新编译的内核。
升级iptables
安装iptables-1.2.8
首先解压iptables-1.2.8.tar.bz2文件:
#bzip2-diptables-1.2.8.tar.bz2
#tarxvfiptables-1.2.8.tar.out
编译iptables-1.2.8:
#makeKERNEL_DIR=/usr/src/linux-2.4
#makeinstallKERNEL_DIR=/usr/src/linux-2.4
#makeinstall-devel
拷贝可执行文件到相应目录:
#cpiptablesiptables-saveiptables-restore/sbin
安装iptables-p2p软件
首先解压iptables-p2p-0.3.0a.tar.gz:
#tarzxvfiptables-p2p-0.3.0a.tar.gz
#cdiptables-p2p-0.3.0a
拷贝iptables-1.2.8的头文件到适当的目录:
#cp-a/usr/src/iptables-1.2.8/include/*/usr/include
运行“make”编译iptables-p2p,并拷贝相关文件到相应的目录:
#make
#cpkernel/ipt_p2p.o/lib/modules/2.4.20-8custom/kernel/net/ipv4/netfilter/
#cpiptables/libipt_p2p.so/lib/iptables/
安装ipp2p软件
首先修改Makefile文件中的源目录、内核目录和netfilter版本号,将以下内容:
IKERNEL=-I/usr/src/linux/include
IUSER=-I/usr/src/iptables-1.2.7a/include
NETFILTER_VERSION=\"
1.2.7a\"
改为:
IKERNEL=-I/usr/src/linux-2.4/include
IUSER=-I/usr/src/iptables-1.2.8/include
1.2.8\"
编译软件,并拷贝库文件到相应的目录:
#cplibipt_ipp2p.so/lib/iptables
装入模块:
#insmodipt_ipp2p
应用和检测P2P限制功能
iptables-p2p的应用
1.iptables-p2p目前支持如下协议:
◆FastTrack(KaZaa、Grokster......)
◆eDonkey(eDonkey、eMule......)
◆DirectConnect
◆Gnutella(regularclientsandShareaza'
sgnutella2)
◆BitTorrent
◆OpenFT(giFT)
需要安装CONNMARK模块,通过CONNMARK模块的标记包来使用iptables-p2p。
2.通过-help参数获取帮助:
#iptables-mp2p-help
……
P2Pmatchv0.3.0aoptions:
--p2p-protocol[!
]protocol[,...]
--p2p...
matchapplication-layerprotocol(匹配的应用层协议)
Validp2pprotocols:
(P2P支持的有效协议如下:
)
fasttrack
gnutella
edonkey
dc
bittorrent
openft
iptables-p2p模块通过-mp2p参数来实现对所有已知P2P连接请求的识别。
注意,-mp2p只能识别P2P类型的连接请求,不能识别所有的P2P包,可以通过--p2p-protocol子参数来识别P2P的各种已知协议类型。
3.应用实例
#iptables-AFORWARD-mp2p-jDROP
阻塞网络上所有的P2P连接请求。
#iptables-AFORWARD-mp2p--p2p-protocolfasttrack,bittorrent-jDROP
阻塞网络上fasttrack和bittorrent协议连接请求。
在实际使用过程中必须和CONNMARK目标结合起来,然后通过tc过滤才能真正对所有P2P包进行限制。
更多的信息可以参考example/limit-p2p.sh的实例脚本。
ipp2p的应用
1.ipp2p目前支持如下Linux内核和iptables版本:
◆Linux-Kernels2.6:
2.6.3
◆Linux-Kernels2.4:
2.4.18、2.4.19、2.4.20、2.4.21、2.4.22、2.4.23
◆iptables(filter.org)1.2.7a、1.2.8、1.2.9
2.获取ipp2p帮助
#iptables-mipp2p--help
……
IPP2Pv0.5coptions:
--ipp2pGraballknownp2ppackets
(抓所有已知的P2P包)
--ipp2p-dataGraballknownp2pdatapackets
(抓所有已知P2P数据包)
--edkGraballknowneDonkey/eMule/Overnetpackets
(抓所有已知的eDonkey/eMule/Overnet类型的包)
--edk-dataGraballeDonkey/eMule/Overnetdatapackets
(抓所有已知的eDonkey/eMule/Overnet数据包)
--dcGraballknownDirectConnectpackets
(抓所有已知的直接连接包)
--dc-dataGraballDirectConnectdatapackets
(抓所有已知的直接连接数据包)
--kazaaGraballKaZaApackets
(抓所有KaZaA包)
--kazaa-dataGraballKaZaAdatapackets
(抓所有KaZaA数据包)
--gnuGraballGnutellapackets
(抓所有Gnutella包)
--gnu-dataGraballGnutelladatapackets
(抓所有Gnutella数据包)
--bitGraballBitTorrentpackets(beta-handlewithcare)
(抓所有BitTorrent包)
--appleGraballAppleJuicepackets(beta-handlewithcare)
(抓所有AppleJuice包)
--soulSoulSeek(beta-handlewithcare)
(SoulSeek类型的包)
ipp2p只能识别P2P连接请求,而不能识别所有P2P包,因此也必须和CONNMARK目标结合在一起使用,目前只支持TCP协议标示。
下面来看一个实例。
#iptables-APREROUTING-tmangle-ptcp-jCONNMARK--restore-mark
上面代码表明从CONNMARK目标中恢复标记。
#iptables-APREROUTING-tmangle-ptcp-mmark!
--mark0-jACCEPT
上面代码表明接收所有非0的标记包。
#iptables-APREROUTING-tmangle-ptcp-mipp2p--ipp2p-jMARK--set-mark1
上面代码表明将ipp2p连接标记为“1”。
#iptables-APREROUTING-tmangle-ptcp-mmark--mark1-jCONNMARK--save-mark
上面代码表明保存所有标记为“1”的包到CONNMARK目标中。
通过上面设置得到的结果是,每一个标示为P2P连接的包被标记成“1”,然后再通过tc过滤,执行下面的操作:
#tcfilteradddeveth0parent1:
0protocolipprio4handle1fwclassid1:
11
#tcfilteradddeveth1parent2:
0protocolipprio4handle1fwclassid2:
使用HTB和过滤,将所有标记为“1”的包放到每一个设备类中,通过对这些设备类的限制来达到对P2P连接带宽的限制。
更多的信息可以参考http:
//rnvs.informatik.uni-leipzig.de/ipp2p/。
应用效果
笔者在单位防火墙上应用了iptables-p2p和ipp2p配置,对P2P的FastTrack协议进行限制后,用贪婪BT(ABC)进行测试,取得了理想的效果,能有效地限制P2P通信(如图1)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 何用 Netfilter