本文为sshd被***的自动防御方法v1的第二版(改进版本),本版本的处理脚本会把***者信息记录入库,并根据上次***者的封锁时间进行成2倍级的封锁,这就意味着***越频繁封锁时间越长。1、增加了“
..本文为sshd被***的自动防御方法v1的第二版(改进版本),本版本的处理脚本会把***者信息记录入库,并根据上次***者的封锁时间进行成2倍级的封锁,这就意味着***越频繁封锁时间越长。.. ..1、增加了“频繁***的封锁时间”,即设置为上次***时间的2倍..2、加入了数据库支持,将***者相关信息记录入库,如***者ip、***次数、封锁时间..3、简化了代码.. ..具体实现步骤如下:.. ..1、创建用于记录***者信息的数据库及表..# sqlite3 /root/sshd_blocked_ip.db "create table ip(ip,count,blocktime)".. ..2、将v1版的第二步中的***处理脚本修改为..exec "/root/swatch-new.sh $1".. ..3、创建***检测到后的处理脚本/root/swatch-new.sh,需要执行权限哦..#!/bin/sh..ip=$1.. ..sql="/usr/bin/sqlite3 /root/sshd_blocked_ip.db "..blockcmd="/sbin/iptables -I INPUT -s $ip -p tcp --dport 22 -j DROP"..unblockcmd=${blockcmd/-I/-D}..blocktime=$($sql "select blocktime from ip where ip='$ip'")..: ${blocktime:=0}..$blockcmd..if [ $blocktime -eq 0 ];then
/usr/bin/at "now + 1 hours" <<< "$unblockcmd" 2>> /root/at_result.log
$sql "insert into ip values('$ip',1,1)"
else
((blocktime*=2))
/usr/bin/at "now + $blocktime hours" <<< "$unblockcmd" 2>> /root/at_result.log
$sql "update ip set blocktime=$blocktime,count=count+1 where ip='$ip'"
fi.. ..其他步骤和v1版相似,自己琢磨吧,结束.. ..另附查看***者信息的方法:..sqlite3 /root/sshd_blocked_ip.db "select * from ip"..