免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 928 | 回复: 0
打印 上一主题 下一主题

在linux AS5上为Iptables添加connlimit模块 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-26 17:37 |只看该作者 |倒序浏览

               
 
  
内核版本检查
  
[root@mail ~]# uname -a
  
Linux mail.lin.net 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  
 
  
下载对应源码包,地址 http://oss.oracle.com/el5/SRPMS/
  
[root@mail ~]# cd /usr/src/redhat/SRPMS/
  
[root@mail SRPMS]# ls
  
kernel-2.6.18-8.el5.src.rpm
  
 
  
解开rpm源码包
  
[root@mail SRPMS]# useradd mockbuild
  
[root@mail SRPMS]# rpm -vih kernel-2.6.18-8.el5.src.rpm
  
warning: kernel-2.6.18-8.el5.src.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
  
1:kernel ########################################### [100%]
  
[root@mail SRPMS]# cd ../SPECS/
  
[root@mail SPECS]# ls
  
kernel-2.6.spec
  
[root@mail SPECS]# rpmbuild -bp --target=$(uname -m) ./kernel-2.6.spec
  
Building target platforms: i686
  
Building for target i686
  
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.77617
  
------
  
+ sed -i -e 's/\(^export XEN_BUILDER.*$\)/\1.el5/' Makefile
  
+ sed -i -e 's/\(^export XEN_BUILDVERSION.*$\)/\1-8.el5/' Makefile
  
+ exit 0
  
[root@mail SPECS]# cd ../BUILD/kernel-2.6.18/
  
[root@mail kernel-2.6.18]# ls
  
Config.mk linux-2.6.18.i686 vanilla xen
  
 
  
将内核源代码复制到 /usr/src目录
  
[root@mail kernel-2.6.18]# cp -a linux-2.6.18.i686/ /usr/src/
  
You have mail in /var/spool/mail/root
  
[root@mail kernel-2.6.18]#
  
[root@mail kernel-2.6.18]# cd /usr/src/linux-2.6.18.i686/
  
[root@mail linux-2.6.18.i686]#
  
 
  
修改makefile头与OS上的内核相同
  
先用uname –r查询一下:
  
[root@mail linux-2.6.18.i686]# uname -r
  
2.6.18-8.el5
  
# vi Makefile
  
修改 EXTRAVERSION = -prep
  
该成EXTRAVERSION = -8.el5
  
 
  
准备各种软件
  
[root@mail src]# ls
  
ipp2p-0.99.15.tar.gz iptables-1.3.8.tar.bz2 patch-o-matic-ng-20080918.tar.bz2
  
 
  
解压软件包到/usr/src目录下
  
[root@mail src]# tar -jxvf patch-o-matic-ng-20080918.tar.bz2
  
[root@mail src]# tar -jxvf iptables-1.3.8.tar.bz2
  
[root@mail src]# tar -zxvf ipp2p-0.99.15.tar.gz
  
[root@mail src]# cd patch-o-matic-ng-20080918
  
[root@mail patch-o-matic-ng-20080918]#
  
 
  
设置环境变量
  
[root@mail patch-o-matic-ng-20080918]# export KERNEL_DIR=/usr/src/linux-2.6.18.i686/
  
[root@mail patch-o-matic-ng-20080918]# export IPTABLES_DIR=/usr/src/iptables-1.3.8/
  
[root@mail patch-o-matic-ng-20080918]# export KERNEL_SRC=/usr/src/linux-2.6.18.i686/
  
[root@mail patch-o-matic-ng-20080918]# export IPTABLES_SRC=/usr/src/iptables-1.3.8/
  
 
  
[root@mail patch-o-matic-ng-20080918]#
  
[root@mail patch-o-matic-ng-20080918]# ./runme --download
  
[color="#ff0000"]Failed to read temporary file /tmp/pom-runme-index: 1792 - aborting!
  
在这里出现错误,google一把说是
http://people.netfilter.org/ole/pom/
不能访问。换了好几个IP都出现同样的问题。最后在网上找到了connlimit包,直接复制到/usr/src/ patch-o-matic-ng-20080918/patchlets目录下。
  
 
  
[root@mail patch-o-matic-ng-20080918] mv /usr/src/connlimit ./ patchlets
  
[root@mail patch-o-matic-ng-20080918]# ./runme connlimit
  
Excellent! Source trees are ready for compilation.
  
 
  
编辑内核选上新添加的模块
  
[root@seker linux-2.6.18.i686]# make menuconfig
  
  Networking  ---> 
  
    Networking options  --->
  
·  Network packet filtering (replaces ipchains)  --->
  
                IP: Netfilter Configuration  --->
  
Connections/IP limit match support
  
选中该模块后保存退出
  
 
  
编译内核模块   
make modules_prepare     
修改net/ipv4/netfilter/Makefile,只编译connlimit模块,首先备份net/ipv4/netfilter/Makefile文件     
mv net/ipv4/netfilter/Makefile net/ipv4/netfilter/Makefile.bak     
新建 net/ipv4/netfilter/Makefile文件,并添加如下内容     
vi net/ipv4/netfilter/Makefile     
obj-m := ipt_connlimit.o     
KDIR := /lib/modules/$(shell uname -r)/build     
PWD := $(shell pwd)     
default:     
$(MAKE) -C $(KDIR) M=$(PWD) modules     
  
如果要添加其它模块,可以在makefile文件中添加,如时间模块,可加入obj-m := ipt_time.o,不过要先在内核中选择该模块,才能编译成功。
  
 
  
编译内核模块
  
[root@mail netfilter]# cd /usr/src/linux-2.6.18.i686
  
[root@mail linux-2.6.18.i686]# make M=net/ipv4/netfilter/
  
LD net/ipv4/netfilter/built-in.o
  
Building modules, stage 2.
  
MODPOST
  
CC net/ipv4/netfilter/ipt_connlimit.mod.o
  
LD [M] net/ipv4/netfilter/ipt_connlimit.ko
  
 
  
复制新编译的模块到老内核
  
[root@mail linux-2.6.18.i686]# cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/
  
[root@mail linux-2.6.18.i686]# chmod 755 /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/*.ko
  
 
  
安装IPP2P
  
修改Makefile文件   
[root@mail ipp2p-0.99.15]# vi Makefile
  
将以下三行改为:   
KERNEL_SRC = /usr/src/linux-2.6.18.i686
  
IPTABLES_SRC = /usr/src/iptables-1.3.8
  
IPTABLES_VERSION = $(IPTVER) 替换成IPTABLES_VERSION = 1.3.8
  
[root@mail ipp2p-0.99.15]# make clean
  
[root@mail ipp2p-0.99.15]# make
  
[root@mail ipp2p-0.99.15]# make install
  
cp ipt_ipp2p.ko /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/
  
cp libipt_ipp2p.so /lib/iptables/
  
depmod -a
  
 
  
安装新的IPTABLE
  
[root@mail iptables-1.3.8]# make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
  
会有以下结果:
  
cp extensions/libip6t_physdev.so /lib/iptables/libip6t_physdev.so
  
cp extensions/libip6t_policy.so /lib/iptables/libip6t_policy.so
  
cp extensions/libip6t_standard.so /lib/iptables/libip6t_standard.so
  
cp extensions/libip6t_state.so /lib/iptables/libip6t_state.so
  
cp extensions/libip6t_tcp.so /lib/iptables/libip6t_tcp.so
  
cp extensions/libip6t_udp.so /lib/iptables/libip6t_udp.so
  
cp extensions/libip6t_CONNMARK.so /lib/iptables/libip6t_CONNMARK.so
  
cp extensions/libip6t_HL.so /lib/iptables/libip6t_HL.so
  
cp extensions/libip6t_LOG.so /lib/iptables/libip6t_LOG.so
  
cp extensions/libip6t_NFQUEUE.so /lib/iptables/libip6t_NFQUEUE.so
  
cp extensions/libip6t_MARK.so /lib/iptables/libip6t_MARK.so
  
cp extensions/libip6t_TCPMSS.so /lib/iptables/libip6t_TCPMSS.so
  
cp extensions/libip6t_ah.so /lib/iptables/libip6t_ah.so
  
cp extensions/libip6t_esp.so /lib/iptables/libip6t_esp.so
  
cp extensions/libip6t_frag.so /lib/iptables/libip6t_frag.so
  
cp extensions/libip6t_ipv6header.so /lib/iptables/libip6t_ipv6header.so
  
cp extensions/libip6t_hbh.so /lib/iptables/libip6t_hbh.so
  
cp extensions/libip6t_dst.so /lib/iptables/libip6t_dst.so
  
cp extensions/libip6t_REJECT.so /lib/iptables/libip6t_REJECT.so
  
cp extensions/libip6t_rt.so /lib/iptables/libip6t_rt.so
  
cp extensions/libip6t_sctp.so /lib/iptables/libip6t_sctp.so
  
rm libiptc/libip6tc.o libipq/libipq.o libiptc/libip4tc.o
  
 
  
加载相关模块
  
[root@mail iptables-1.3.8]# modprobe ipt_connlimit
  
[root@mail iptables-1.3.8]# modprobe ipt_ipp2p
  
 
  
查看加载的模块
  
[root@mail iptables-1.3.8]# lsmod | grep x_tables
  
x_tables 17349 8 ipt_ipp2p,ipt_connlimit,ipt_REJECT,xt_state,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables
  
 
  
 
  
测试应用
  
模块 connlimit 作用:连接限制
  
--connlimit-above n 限制为多少个
  
--connlimit-mask n 这组主机的掩码,默认是connlimit-mask 32 ,即每ip.
  
这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数:
  
[root@mail iptables-1.3.8]# iptables -A INPUT -p tcp --dport 3128 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT
  
模块ipp2p作用:封杀BT类P2P软件
  
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
[/url]
               

本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u3/93926/showart_2008243.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP