|
发表于 2004-11-16 19:34:05
|
显示全部楼层
一年前写的笔记, 现在可能已经有变化了:
iptables有许多很有实际用途的功能是未被现在的内核支持的,其中我最感兴趣的就是iplimit,可以用来限定同一IP(或同一段IP)同时连接服务器(或某端口)的数目。
经过许多天的试验,终于搞定。
服务器环境:redhat7.2
1. 从www.redhat.com下载并安装最新的内核源码
kenrel-source-2.4.20-13.7-i386.rpm。
rpm -Uvh kenrel-source-2.4.20-13.7-i386.rpm
2. 进入/usr/include目录,执行以下操作:
mv asm asm_old
mv linux linux_old
mv scsi scsi_old
ln -s /usr/src/linux-2.4/include/asm ./asm
ln -s /usr/src/linux-2.4/include/linux ./linux
ln -s /usr/src/linux-2.4/include/scsi ./scsi
3. 从www.netfilter.org下载patch-o-matic-20030107.tar.tar并解压到
/usr/local/patch-o-matic-20030107,执行以下操作:
export KERNEL_DIR="/usr/src/linux-2.4"
./runme extra
按提示只需要安装自己想要的那些扩展功能补丁,我就只选择了iplimit。
4. 返回/usr/src/linux-2.4,执行make mrproper,然后用make menuconfig设置内核选项,依次进入"Networking options"->"IP: Netfilter Configuration",选择您刚才加入的扩展功能,在这里我只要把iplimit选定成M模式就可以了。然后:
make dep
make bzImage
make install
make modules
make modules_install
最后再用新内核重启系统。
5. 到www.netfilter.org下载最新的iptables源代码包,解压到
/usr/local/iptables-1.2.8,执行以下操作:
make KERNLE_DIR="/usr/src/linux-2.4"
make install KERNLE_DIR="/usr/src/linux-2.4"
make install-devel
安装完成,现在您可以输入命令检查一下你要的功能是否已经可以使用了:
iptables -A INPUT -p tcp --dport 22 --syn -m iplimit --iplimit-above 3 -j REJECT
这样,从同一个IP到服务器的SSH的连接就只不能超过3个了。 这个功能如果应用在网站上限制某些人下载网站内容是很有帮助的,比apache加载连接数限制模块的方法有效得多。
(注意:我在安装时是先下载的相应内核的rpm安装之后再进行源码包安装的,因为在安装新内核的过程中可能需要其它的支持包需要安装,利用rpm的依赖性检查将这些软件显示出来并安装,可能会减少直接用源码编译安装遇到的问题,纯属个人意见。) |
|