当前位置: > Linux安全 >

linux下shell脚本防ssh暴力破解

时间:2014-11-18 18:51来源:linux.it.net.cn 作者:IT

功能:查询一分钟前secure文件,统计访问失败的IP和次数,并把在1分钟内失败5次的IP列入危险susperctip,1分钟内失败10次直接丢给防火墙拦截,并记录在blockip,关于关键词可以根据需求加强下

 
  1. #!/bin/bash   
  2. ## Filtering script   
  3. ## Create Time: 2012-10-12.17   
  4. #   
  5.   
  6. test -d /data/logs/secure   
  7. if [ $? -ne 0 ]; then   
  8.     mkdir -p /data/logs/secure   
  9. fi   
  10.   
  11. LOGFILE=/var/log/secure   
  12. LOGFILE2=/data/logs/secure/secure.txt   
  13. IPLIST=/data/logs/secure/iplist.txt   
  14. BLACKIP=/data/logs/secure/blockip.txt   
  15. SUSPECTIP=/data/logs/secure/susperctip.txt   
  16. TIME=`date +%_d" "%H:%M -d -1min`   
  17. WORD="Failed password"  
  18. WORD1="Failed password for root"  
  19. WORD2="Failed password for invalid user"  
  20.   
  21. grep "$TIME" $LOGFILE |grep "$WORD" |grep "ssh2" > $LOGFILE2  
  22. grep "$WORD1" $LOGFILE2 |grep -v "$WORD2" |awk '{print $11}' > $IPLIST  
  23. grep "$WORD2" $LOGFILE2 |grep -v "$WORD1" |awk '{print $13}' >> $IPLIST  
  24.   
  25. scanner=`cat $IPLIST |sort |uniq -c |awk '{print $1"="$2}'`   
  26. for i in $scanner  
  27. do  
  28.     declare -i NUM   
  29.     NUM=`echo $i |awk -F= '{print $1}'`   
  30.     IP=`echo $i |awk -F= '{print $2}'`   
  31.     if [ $NUM -ge 10 ] && [ -z "`iptables -vnL INPUT |grep $IP`" ]; then   
  32.         iptables -I INPUT -s $IP -m state --state NEW,RELATED,ESTABLISHED -j DROP   
  33.         echo -e "\033[31m\033[1m`date +%Y-%m-%d" "%H:%M`\033[0m" >> $BLACKIP  
  34.         echo "$NUM" = "$IP" >> $BLACKIP  
  35.     elif [ $NUM -ge 5 ]; then   
  36.         echo -e "\033[31m\033[1m`date +%Y-%m-%d" "%H:%M`\033[0m" >> $SUSPECTIP  
  37.         echo "$NUM" = "$IP" >> $SUSPECTIP  
  38.     fi   
  39. done   

测试效果:明显看出服务器老被别人瞎搞...

  1. [root@localhost secure]# ll   
  2. total 8   
  3. -rw-r--r--. 1 root root 1181 Nov  9 10:25 blockip.txt   
  4. -rw-r--r--. 1 root root    0 Nov  9 11:57 iplist.txt   
  5. -rw-r--r--. 1 root root    0 Nov  9 11:57 secure.txt   
  6. -rw-r--r--. 1 root root 1015 Nov  7 15:57 susperctip.txt   
  7. [root@localhost secure]# cat susperctip.txt    
  8. 2012-10-16 19:36   
  9. 5 = 112.216.140.51   
  10. 2012-10-17 21:09   
  11. 5 = 212.143.16.77   
  12. 2012-10-17 21:10   
  13. 9 = 212.143.16.77   
  14. 2012-10-18 08:54   
  15. 8 = 202.94.70.20   
  16. 2012-10-19 23:37   
  17. [root@localhost secure]# cat blockip.txt    
  18. 2012-10-17 20:00   
  19. 26 = 111.74.82.33   
  20. 2012-10-17 20:48   
  21. 15 = 115.236.101.244   
  22. 2012-10-17 21:11   
  23. 11 = 212.143.16.77   
  24. 2012-10-18 08:55   
  25. 17 = 202.94.70.20   
  26. 2012-10-19 14:51   
  27. 15 = 64.185.226.120  




(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容