现在的位置: 首页shell>正文
linux下shell脚本防ssh暴力破解 [原创]
2012年03月12日 shell 评论数 1 ⁄ 被围观 18,150 次+

上次随便写了一篇《查看哪些ip破解你ssh密码以及次数》有些对linux不是太熟悉的朋友要求写一个脚本来实现这一功能,下面我们就来简单的写一个,统计访问失败的IP和次数。根据这些可以通过防火墙规则来限制这些IP再次暴破,脚本如下:

  1. #!/bin/sh   
  2. SCANIP=`grep "Failed" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | awk '{print $1"="$2;}'`   
  3. for i in $SCANIP   
  4. do  
  5.     NUMBER=`echo $i | awk -F= '{print $1}'`   
  6.     SCANIP=`echo $i | awk -F= '{print $2}'`   
  7.     echo "$NUMBER($SCANIP)"  
  8.     if [ $NUMBER -gt 10 ] && [ -z "`/sbin/iptables -vnL INPUT | grep $SCANIP`" ]   
  9.     then   
  10.         /sbin/iptables -I INPUT -s $SCANIP -m state --state NEW,RELATED,ESTABLISHED -j DROP   
  11.         echo "`date` $SCANIP($NUMBER)" >> /var/log/scanip.log   
  12.     fi   
  13. done  

由于/var/log/secure是以星期为轮询的,所以我们每次可以查看这个文件,利用shell脚本统计出其中访问失败比较频繁的IP,并定义一个阀值为10(可自行修改为合适的值),如果超过这个阀值并且查看防火墙列表中有没有这条IP的记录,如果没有则添加相应防火墙规则,阻止此IP进行SSH登录,每隔一段时间进行一次检查,如果下次排查的某IP次数又大于10,并且检查它在不在我们的防火墙列表中,如果在的话就无视过去;如果不在,就继续添加进iptables中。然后我们定义一个计划任务,让每一个小时检测一次

  1. 0   */1 *   *   *   /bin/sh /data/soft/scan_sshd_linux.sh  

当然也有的朋友说了,可以将这些IP写入/etc/hosts.deny中,也不是不可以,总之方法是有很多,看个人喜好了!~

对于使用FreeBSD系统的来说可以移步《FreeBSD下shell脚本防ssh/vsftpd暴力破解 [原创]

测试如下图:

本文地址:http://www.92csz.com/49/1090.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 1 条留言 其中:访客:0 条, 博主:0 条 引用: 1