iptables一些高级应用

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的依赖性检查将这些软件显示出来并安装,可能会减少直接用源码编译安装遇到的问题,纯属个人意见。)
iptabls -A INPUT -m time --timestart 8:00 --timestop 12:00 --days su -j ACCEPT

你可能感兴趣的:(apache,应用服务器,linux,redhat,ssh)