免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2839 | 回复: 4
打印 上一主题 下一主题

防止SSH/ftp暴力检测的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-23 16:18 |只看该作者 |倒序浏览
本帖最后由 stevenkoh 于 2012-06-24 07:04 编辑

总是有一些非常讨厌的人扫描我的服务器 只能屏蔽了之。研究了下,虽然有fail2ban这个工具,但好像搞得太大了些。自己写了一个,给大家共享

原贴发于 http://blog.csdn.net/stevenkoh/article/details/7686155

如有疑问,请CSDN提问,这里不定期更新


1.IPMonitor.sh

这个东西,每隔10分钟跑一次,如果有人多次攻击,自动屏蔽。屏蔽的IP超过了15分钟自动解锁。
  1. #!/bin/bash
  2. export PATH=$PATH:/sbin:/usr/sbin

  3. curbanIP=/tmp/curBanInputIps.txt
  4. curLog=/tmp/curlogIn20mins.txt

  5. taillines=2000
  6. expiredMins=15
  7. #15Mins

  8. MaxRetries=20

  9. IDWORD="IPMT10"

  10. #Check expired rules
  11. iptables -L INPUT -n --line-number  | grep $IDWORD | awk '{print $1,$5,substr($8,8)}' | tac > $curbanIP

  12. num=`cat $curbanIP | wc -l`
  13. if [ $num -gt 0 ] ;then
  14.         #>0
  15.         exipredTMSTAMP=`date -d "$expiredMins min ago" +%s`
  16.        
  17.         cat $curbanIP | while read idx IP TMSTMP
  18.         do       
  19.                 if [ $TMSTMP -gt $exipredTMSTAMP ] ;then
  20.                         iptables -D INPUT $idx
  21.                         #removed
  22.                 fi
  23.         done
  24. fi


  25. #check the attacking IP

  26. min1=`date -d '10 mins ago' '+%b %e %T'|cut -c1-11`
  27. min2=`date '+%b %e %T'|cut -c1-11`

  28. cat /var/log/secure | egrep "$min1|$min2" |grep 'authentication failure' | awk -F'rhost=' '{print $2}' | cut -d' ' -f1 | sort | uniq -c | awk '{if (length($2)>0) print $1,$2}' > $curLog
  29. num=`cat $curLog | wc -l`
  30. if [ $num -gt 0 ] ;then
  31.         #>0
  32.        
  33.         cat $curLog | while read failtimes IP
  34.         do       
  35.                 if [ $failtimes -gt $MaxRetries ] ;then
  36.                         if ! [[ $IP =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}]] ; then
  37.                                 tmpIP=`ping -c1 -W1 $IP | head -n1 | cut -d'(' -f2 | cut -d')' -f1`
  38.                                 IP=$tmpIP
  39.                         fi
  40.                        
  41.                         if ! iptables -L INPUT -n|grep $IP ; then
  42.                                 tmpStr=`date '+%F %T'`
  43.                                 tmpStmp=`date +%s`
  44.                                 iptables -A INPUT -s $IP -j DROP  -m comment --comment "tmstmp:$tmpStmp ,add at $tmpStr,baned by $IDWORD"
  45.                         fi                       
  46.                 fi
  47.         done
  48. fi


  49. rm -f $curbanIP $curLog
复制代码
2. IPMonitorDaily.sh

跑了几天,发现几个变态IP,每隔45分钟折腾一次,持续了好几天。算下来折腾了2000多次,简直就是神经病,偷窥狂。只能再折腾一次
  1. #!/bin/bash

  2. export PATH=$PATH:/sbin:/usr/sbin

  3. curbanIP=/tmp/curBanInputIps.txt
  4. curLog=/tmp/curPermanentIPS.txt

  5. attacktimes=20

  6. IDWORD="IPMTPERMANENT"

  7. #Check expired rules
  8. iptables -L INPUT -n --line-number  | grep $IDWORD | awk '{print $1,$5,substr($8,8)}' | tac > $curbanIP

  9. num=`cat $curbanIP | wc -l`
  10. if [ $num -gt 0 ] ;then
  11.         #>0       
  12.         cat $curbanIP | while read idx IP TMSTMP
  13.         do       
  14.                 if ! grep $IP /var/log/secure > /dev/null ;then
  15.                         iptables -D INPUT $idx
  16.                         #removed
  17.                 fi
  18.         done
  19. fi


  20. #check the attacking IP

  21. cat /var/log/secure | grep 'authentication failure' | awk -F'rhost=' '{print $2}' | cut -d' ' -f1 | sort | uniq -c | awk '{if ($1>100) print $2}' > $curLog

  22. num=`cat $curLog | wc -l`
  23. if [ $num -gt 0 ] ;then
  24.         #>0       
  25.         cat $curLog | while read IP
  26.         do
  27.                 attackdays=`cat /var/log/secure | grep $IP | cut -c1-6 | uniq -c | wc -l`
  28.                 if [ $attackdays -gt 1 ] ;then

  29.                         if ! iptables -L INPUT -n|grep $IP > /dev/null ; then
  30.                                 tmpStr=`date '+%F %T'`
  31.                                 tmpStmp=`date +%s`
  32.                                 iptables -A INPUT -s $IP -j DROP  -m comment --comment "tmstmp:$tmpStmp ,add at $tmpStr,baned by $IDWORD"
  33.                         fi                       
  34.                        
  35.                 fi
  36.         done
  37. fi

  38. rm -f $curbanIP $curLog


复制代码
把以上两个放到crontab 里面,效果很好,一个10分钟跑一次。一个每天23:30跑一次 。终于都杀掉了

平时可以看看 iptables -L INPUT -n 看看效果。讨厌的IP都在里面。

以上脚本在CentOS 5.x 通过,转发请注明出处



希望大家有用处

论坛徽章:
0
2 [报告]
发表于 2012-06-27 22:39 |只看该作者
留做备用

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
3 [报告]
发表于 2012-07-01 19:52 |只看该作者
感谢分享 ! ^_^

论坛徽章:
0
4 [报告]
发表于 2012-08-17 11:03 |只看该作者
你联系方式吗,以后常交流.问下$IDWORD的值,从哪里得到的

论坛徽章:
0
5 [报告]
发表于 2012-08-20 16:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP