|
root@www:~/Desktop# cat safe_ssh.sh
#!/usr/bin/php -q
<?
//心之语,2009-5,www.lybase.net
//登录失败次数
$FailTimes=5;
//本程序的执行日志
$drop_log_path='/var/log/ssh_drop.log';
//取得当前防火墙的IP地址
$iptables=`iptables -nL`;
preg_match_all("/(\d{1,3}\.){3}\d{1,3}/",$iptables,$iptables);
$iptables=array_count_values($iptables[0]);
unset($iptables['0.0.0.0']);
$iptables=(array_keys($iptables));
//使用lastb取得ssh登录不成功的用户
$datas=`lastb`;
preg_match_all("/(\d{1,3}\.){3}\d{1,3}/",$datas,$results);
$ips=array_count_values($results[0]);
//将防火墙中不存在的登录失败次数超过5次的IP加以屏蔽
foreach($ips as $ip=>$times){
if($times>=$FailTimes)
if(!in_array($ip,$iptables)){
`/usr/sbin/iptables -A INPUT -s $ip -j DROP`;
$command='echo -e \#'.date('Y-m-d H:i:s')."\\\\n \/usr\/sbin\/iptables -A INPUT -s $ip -j DROP\\\\n >> $drop_log_path";
`$command`;
}
}
?>
root@www:~/Desktop# |
|