使用metalog和iptables配合,对多线程连接ftp服务器的ip进行暂时的封禁
metalog.conf里ftpd的配置如下 代码: FTP Server :
program = "pure-ftpd" logdir = "/var/log/ftpd" command = "/usr/sbin/ftpdchk" #将log分三个参数提交给处理程序,分别是:时间、进程名、内容处理程序如下:
代码: #!/bin/bash # ftpdchk - check and block xx ip # benzy@bbs.pku.ecu.cn, 2003/8/1 # cp file to /usr/sbin/ftpdchk #set -x
# Too many connections (1) from this IP: [211.71.208.1] ip="`echo "$3" | grep -oe '\[[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\]'`" if [ -n "$ip" ];then log="/var/log/ftpd/ftpdchk.log" ip=${ip#[};ip=${ip%]} time=$1 # ftpd=$2 # iptable配置略。总之建一个ftp链专门处理ftp请求:) /sbin/iptables -I ftp -j DROP -p tcp --dport ftp -s $ip # 5分钟后解封 echo "/sbin/iptables -D ftp -j DROP -p tcp --dport ftp -s $ip" | at now +5minutes echo "$ip $time" >>$log fi |