Shell脚本防攻击一例

发表于:2012-5-31 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yunweixiaoyu    来源:51Testing软件测试网采编

分享:

  我们来运行一下,运行几分钟后,如下图所示

  经过半个小时的观察,服务器负载也降到0.几了,脚本也不断在封一些CC攻击的ip。

  一直让他运行着,晚上应该能睡个好觉了。

  下来我们来对脚本进行解释一下。

  1. #vim fengip.sh 
  2.  
  3. #! /bin/bash 
  4. Touch all    #建立all文件,后面有用到 
  5. for i in `seq 1 32400` #循环32400次,预计到早上9点的时间 
  6. do 
  7. sleep 1 
  8.  
  9. x=`tail -500 access.log |grep 'HTTP/1.1" 499 0 "-" "Opera/9.02'|awk '{print $1}'|sort -n|uniq` #查看最后500行的访问日志,取出包含 'HTTP/1.1" 499 0 "-" "Opera/9.02' 的行的ip并排序,去重复 
  10. if [ -z "$x" ];then 
  11. echo "kong" >>/dev/null #如果$x是空值的话,就不执行操作,说明500行内,没有带 'HTTP/1.1" 499 0 "-" "Opera/9.02' 的行 
  12. else 
  13. for ip in `echo $x` #如果有的话,我们就遍历这些ip 
  14. do 
  15. real=`grep -l ^$ip$ all` #查看all文件里有没有这个ip,因为每封一次,后面都会把这个ip写入all文件,如果all文件里面有这个ip的话,说明防火墙已经封过了。 
  16. if [ $? -eq 1 ];then #如果上面执行不成功的话,也就是在all文件里没找到,就用下面的防火墙语句把ip封掉,并把ip写入all文件 
  17. echo iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP 
  18. iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP 
  19. echo $ip >>all 
  20. fi 
  21. done 
  22. fi 
  23. done

  脚本很简单,大牛略过啊。。。

  有什么不明白话,欢迎一起探讨学习。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号