linux下Shell脚本分析Nginx日志抗小量ddos攻击

互联网十八般武艺 互联网十八般武艺

对于小量的ddos攻击我们可以使用iptables来防止了,当然也可以使用智能的shell脚本来实现了,下面我们一起来看看Shell脚本分析Nginx日志抗小量ddos攻击的例子.

网站被ddos攻击,遂写了个脚本来抵抗一下,实现方式:

1.攻击特征,不同ip不断POST网站首页,造成资源消耗过度.

2.分析nginx访问日志,判断POST特征取得客户端访问ip.

3.将连接数大于50的攻击ip封杀.

4.记录攻击ip到文档.

5.每次取得的攻击ip与已有攻击ip比较.

查看源代码:

  1. #!/bin/bash
  2. WEBSITES=(
  3. example.com
  4. )
  5. minute_now=`date+%M`
  6. max_connections=50
  7. banips="/wwwdata/jobs/banips.txt"
  8. forsitein${WEBSITES[*]}
  9. do
  10. access_log_file="/wwwdata/logs/${site}.access.log"
  11. if[-f"${access_log_file}"]
  12. then
  13. cat${access_log_file}|grepPOST|awk'{print$1}'|sort|uniq-c|sort-nr>/wwwdata/jobs/ip_records.txt
  14. lines=`wc-l/wwwdata/jobs/ip_records.txt|awk'{print$1}'`
  15. echo"Lines:$lines"
  16. i=1
  17. while[${i}-le${lines}]
  18. do
  19. ip_record=`head-${i}/wwwdata/jobs/ip_records.txt|tail-1|sed's/^[\t]*//g'`
  20. ip_count=`echo${ip_record}|awk'{print$1}'`
  21. ip_address=`echo${ip_record}|awk'{print$2}'`
  22. echo"${ip_count}${ip_address}"
  23. if[${ip_count}-gt${max_connections}]
  24. then
  25. banned=`cat${banips}|grep${ip_address}|wc-l`
  26. if[${banned}-lt1]
  27. then
  28. iptables-AINPUT-sx.x.x.x-ptcp-mstate--stateNEW-mtcp--dport80-jDROP
  29. echo${ip_address}>>${banips}
  30. fi
  31. fi
  32. i=`expr${i}+1`
  33. done
  34. serviceiptablessave
  35. serviceiptablesrestart
  36. if[${minute_now}-eq30]
  37. then
  38. cat${access_log_file}>>/wwwdata/logs/olds/${site}.access.log
  39. cat/dev/null>${access_log_file}
  40. fi--phpfensi.com
  41. fi
  42. done
  43. if[${minute_now}-eq30]
  44. then
  45. servicenginxrestart
  46. fi

相关广告
  • linux下Shell脚本分析Nginx日志抗小量ddos攻击 linux下Shell脚本分析Nginx日志抗小量ddos攻击 linux下Shell脚本分析Nginx日志抗小量ddos攻击
相关阅读

linux下Shell脚本分析Nginx日志抗小量ddos攻击

2019/10/10 17:46:39 | 谷歌SEO算法 | 挖矿