根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP.

当然各个公司的IP并发数各有不同,上面只是举例说明。

因为我的Nginx的WEB日志每天进行切割处理,不然所有web日志都堆在一起,查看麻烦。

系统状态

  1. [root@nginx shell]# cat /etc/redhat-release
  2. CentOS release 6.7 (Final)
  3. [root@nginx shell]# uname -r
  4. 2.6.-.el6.x86_64
  5. [root@nginx shell]# /application/nginx/sbin/nginx -v
  6. nginx version: nginx/1.10.

1、web日志切割脚本

脚本如下,各位网友可以根据自己的需求进行更改。

此脚本可以放在定时任务中执行,按照天数进行切割。

  1. #!/bin/bash
  2.  
  3. #-------------CopyRight-------------
  4. # Name:Cut Ningx logs
  5. # Version Number:1.1
  6. # Type:sh
  7. # Language:bash shell
  8. # Date:--
  9. # Author:xubing
  10. # QQ:
  11. # Email:eeexu123@.com
  12. # Blog:https://www.cnblogs.com/eeexu123/
  13.  
  14. #Nginx日志轮询切割备份
  15. IP=$(ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}')
  16.  
  17. #cut every day nginx log
  18. cut(){
  19. [ -d "/application/nginx/logs" ]||{
  20. echo "Nginx logs is not exist."
  21. exit
  22. }
  23.  
  24. cd /application/nginx/logs
  25. /bin/mv www_access.log www_access_$(date +%F).log
  26. /application/nginx/sbin/nginx -s reload
  27. }
  28.  
  29. #tar nginx log file to /backup
  30. backup(){
  31. [ -d "/backup/$IP" ]||{
  32. mkdir -p /backup/$IP
  33. }
  34.  
  35. tar -zcf /backup/$IP/www_access_$(date +%F).log.tar.gz www_access_$(date +%F).log
  36.  
  37. #rysnc /backup file to backup server
  38. rsync -avz /backup/$IP rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password //推送到备份服务器上
  39. }
  40.  
  41. #del before day nginx log
  42. del(){
  43. find /application/nginx/logs -type f -name "*$(date +%F).log" -mtime + | xargs rm -f
  44. find /backup/$IP -type f -name "*.tar.gz" -mtime + | xargs rm -f
  45. }
  46.  
  47. main(){
  48. cut
  49. sleep
  50. backup
  51. sleep
  52. del
  53. }
  54. main

2、DOS攻击防护脚本

根据上述web日志进行PV统计。此脚本可以放入定时任务中。也可以在main函数中进行while循环

  1. #!/bin/bash
  2.  
  3. #-------------CopyRight-------------
  4. # Name:defined DoS
  5. # Version Number:1.1
  6. # Type:sh
  7. # Language:bash shell
  8. # Date:--
  9. # Author:xubing
  10. # QQ:
  11. # Email:eeexu123@.com
  12. # Blog:https://www.cnblogs.com/eeexu123/
  13.  
  14. ch_web_log(){
  15. awk '{print $1}' /application/nginx/logs/www_access_$(date +%F).log|sort|uniq -c|sort -rn -k1>/tmp/ip.log //将统计的IP访问次数放到ip.log文件中
  16.  
  17. while read line
  18. do
  19. PV=`echo $line|awk '{print $1}'` //IP访问次数
  20. IP=`echo $line|awk '{print $2}'`
  21. if [ $PV -ge -a `iptables -nL|grep "$IP"|wc -l` -lt ];then //将PV大于100的IP,并且防火墙上并没有封堵此IP。不然防火墙会重复封堵IP
  22. iptables -I INPUT -s $IP -j DROP //防火墙封堵
  23. echo "$IP" >>/tmp/`date +%F`_ip.log //将封堵的IP放到此文件中
  24. echo "The DROP ip is $IP"
  25. fi
  26. done</tmp/ip.log
  27. }

  28. #删除被防火墙封堵的IP
  29. del(){
  30. exec </tmp/$(date +%F -d '1day ago')_ip.log
  31. while read line
  32. do
  33. iptables -D INPUT -s $line -j DROP
  34. done
  35. }
  36.  
  37. main(){
  38. ch_web_log
  39. sleep
  40. del
  41. }
  42. main

解决DDOS攻击生产案例的更多相关文章

  1. 企业Shell面试题5:解决DOS攻击生产案例

    企业Shell面试题5:解决DOS攻击生产案例 写一个Shell脚本解决DOS攻击生产案例. 请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100(读者根据实际情况设定 ...

  2. shell解决DOS攻击生产案例

    解决DOS攻击生产案例企业实战题5:请用至少两种方法实现!写一个脚本解决DOS攻击生产案例.提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封 ...

  3. 抗D十招:十个方法完美解决DDoS攻击防御难题

    可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...

  4. CentOS 系统开启防火墙,屏蔽IP,解决DDOS攻击

    刚才发现网站特别慢,然后看了一下服务器状态 CPU 负载100%. 然后看了下网络,发现一个IP一直在请求本服务器的 443 端口,就是本站. 然后在终端通过 iftop 命令(一个流量健康软件,如果 ...

  5. 怎样预防Ddos攻击

    一.为何要DDOS? 随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势.出于商业竞争.打击报复和网络敲诈等多 ...

  6. 解决(防止)DDOS攻击的另一种思想

    本方案适合作最后的处理方案. 在服务器遭到DDOS攻击后,防火墙.高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部 ...

  7. 被DDOS攻击的解决方法

    在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...

  8. 分享下今天研究的流量上限DDos攻击分析和解决方式

    分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...

  9. DDos攻击解决办法

    (1).DDos概念 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控 ...

随机推荐

  1. 创建私有maven库

    在公司搭建私有maven库,我为了在本机做测试,我选择Sonatype nexus oss,在docker里面安装 1.Mac上安装docker 下载地址:https://github.com/boo ...

  2. spawn类参数command详解

    我们主要来看spawn类它的构造方法参数主要有command,从字面上就是指spawn类的子程序用来执行的子程序,也就是系统所能够执行的相应的命令,对于command这个参数,我们是以字符串的方式给出 ...

  3. 在iOS平台使用ffmpeg解码h264视频流(转)

    在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...

  4. KeyChain相关参数的说明

    #pragma mark- 密钥类型 //密钥类型键 //CFTypeRef kSecClass // //值 //CFTypeRef kSecClassGenericPassword         ...

  5. [usaco2003feb]impster

    FJ再也不用野蛮的方式为自己的奶牛编号了.他用一个B(1<=B<=16)位二进制编码给每头奶牛编号,并刻在奶牛耳朵上的金属条上.奶牛希望自己给自己选择一个编码.于是,瞒着FJ,他们制造了一 ...

  6. python不同目录下的调用

    转自http://blog.csdn.net/hansel/article/details/8975663 Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件 ...

  7. hadoop源码剖析--RawLocalFileSystem

    RawLocalFileSystem是hadoop中实现的本地文件系统,在该类中与文件元数据和目录相关的操作,都是通过适配方式适配到java.io.File的对应API来完成的,适配过程简单,代码清晰 ...

  8. C语言教学杂记——字母排序

    一个人在被告诉一个问题应该怎么被解决后,而且亲身试验效果OK后,一旦遇到类似的问题,就会条件反射般直接拿这个方法来用了.很少会去想为什么要用这个方法,会不会有什么隐患,还有没有别的方法呢,等等这些问题 ...

  9. RQNOJ魔法石之恋

    魔法石之恋 (stone.pas/c/cpp) [问题描述] 在<Harry Potter and the Sorcerer's Stone>中,想得到魔法石,必须要通过许许多多的测试和游 ...

  10. slice 和 splice 区别

    splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改. slice(start,end)  ; start 必需.规定从何处开始选取.如果是负数,那 ...