使用方法
将代码保存为blockip.sh,并设置为开机启动
原理:通过logread捕获超过失败登录5次的IP,并比对iptables,添加到DROP列表
#!/bin/sh
log_file="/var/log/add_block.log"
block_list="/var/log/block_list.log"
while true
do
last_ips=`iptables -L input_wan_rule -v -n |awk '/DROP/{print $8}'|uniq`
for ip in $(logread | grep -A1 'authpriv.warn' | awk '{match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}' |grep -v '^$'|sort | awk '{if ($1 == ip) count++; else {ip=$1; count=1}; if (count>=5) print ip}' |uniq);
do
if [[ ! "$last_ips" =~ "$ip" ]]; then
iptables -A input_wan_rule -s $ip -j DROP
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Blocked connection from $ip." >> "$log_file"
fi
done
sleep 10s
echo $last_ips > $block_list
done