解决DDOS攻击生产案例
根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP.
当然各个公司的IP并发数各有不同,上面只是举例说明。
因为我的Nginx的WEB日志每天进行切割处理,不然所有web日志都堆在一起,查看麻烦。
系统状态:
- [root@nginx shell]# cat /etc/redhat-release
- CentOS release 6.7 (Final)
- [root@nginx shell]# uname -r
- 2.6.-.el6.x86_64
- [root@nginx shell]# /application/nginx/sbin/nginx -v
- nginx version: nginx/1.10.
1、web日志切割脚本
脚本如下,各位网友可以根据自己的需求进行更改。
此脚本可以放在定时任务中执行,按照天数进行切割。
- #!/bin/bash
- #-------------CopyRight-------------
- # Name:Cut Ningx logs
- # Version Number:1.1
- # Type:sh
- # Language:bash shell
- # Date:--
- # Author:xubing
- # QQ:
- # Email:eeexu123@.com
- # Blog:https://www.cnblogs.com/eeexu123/
- #Nginx日志轮询切割备份
- IP=$(ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}')
- #cut every day nginx log
- cut(){
- [ -d "/application/nginx/logs" ]||{
- echo "Nginx logs is not exist."
- exit
- }
- cd /application/nginx/logs
- /bin/mv www_access.log www_access_$(date +%F).log
- /application/nginx/sbin/nginx -s reload
- }
- #tar nginx log file to /backup
- backup(){
- [ -d "/backup/$IP" ]||{
- mkdir -p /backup/$IP
- }
- tar -zcf /backup/$IP/www_access_$(date +%F).log.tar.gz www_access_$(date +%F).log
- #rysnc /backup file to backup server
- rsync -avz /backup/$IP rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password //推送到备份服务器上
- }
- #del before day nginx log
- del(){
- find /application/nginx/logs -type f -name "*$(date +%F).log" -mtime + | xargs rm -f
- find /backup/$IP -type f -name "*.tar.gz" -mtime + | xargs rm -f
- }
- main(){
- cut
- sleep
- backup
- sleep
- del
- }
- main
2、DOS攻击防护脚本
根据上述web日志进行PV统计。此脚本可以放入定时任务中。也可以在main函数中进行while循环
- #!/bin/bash
- #-------------CopyRight-------------
- # Name:defined DoS
- # Version Number:1.1
- # Type:sh
- # Language:bash shell
- # Date:--
- # Author:xubing
- # QQ:
- # Email:eeexu123@.com
- # Blog:https://www.cnblogs.com/eeexu123/
- ch_web_log(){
- awk '{print $1}' /application/nginx/logs/www_access_$(date +%F).log|sort|uniq -c|sort -rn -k1>/tmp/ip.log //将统计的IP访问次数放到ip.log文件中
- while read line
- do
- PV=`echo $line|awk '{print $1}'` //IP访问次数
- IP=`echo $line|awk '{print $2}'`
- if [ $PV -ge -a `iptables -nL|grep "$IP"|wc -l` -lt ];then //将PV大于100的IP,并且防火墙上并没有封堵此IP。不然防火墙会重复封堵IP
- iptables -I INPUT -s $IP -j DROP //防火墙封堵
- echo "$IP" >>/tmp/`date +%F`_ip.log //将封堵的IP放到此文件中
- echo "The DROP ip is $IP"
- fi
- done</tmp/ip.log
- }
#删除被防火墙封堵的IP- del(){
- exec </tmp/$(date +%F -d '1day ago')_ip.log
- while read line
- do
- iptables -D INPUT -s $line -j DROP
- done
- }
- main(){
- ch_web_log
- sleep
- del
- }
- main
解决DDOS攻击生产案例的更多相关文章
- 企业Shell面试题5:解决DOS攻击生产案例
企业Shell面试题5:解决DOS攻击生产案例 写一个Shell脚本解决DOS攻击生产案例. 请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100(读者根据实际情况设定 ...
- shell解决DOS攻击生产案例
解决DOS攻击生产案例企业实战题5:请用至少两种方法实现!写一个脚本解决DOS攻击生产案例.提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封 ...
- 抗D十招:十个方法完美解决DDoS攻击防御难题
可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...
- CentOS 系统开启防火墙,屏蔽IP,解决DDOS攻击
刚才发现网站特别慢,然后看了一下服务器状态 CPU 负载100%. 然后看了下网络,发现一个IP一直在请求本服务器的 443 端口,就是本站. 然后在终端通过 iftop 命令(一个流量健康软件,如果 ...
- 怎样预防Ddos攻击
一.为何要DDOS? 随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势.出于商业竞争.打击报复和网络敲诈等多 ...
- 解决(防止)DDOS攻击的另一种思想
本方案适合作最后的处理方案. 在服务器遭到DDOS攻击后,防火墙.高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部 ...
- 被DDOS攻击的解决方法
在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...
- 分享下今天研究的流量上限DDos攻击分析和解决方式
分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...
- DDos攻击解决办法
(1).DDos概念 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控 ...
随机推荐
- 创建私有maven库
在公司搭建私有maven库,我为了在本机做测试,我选择Sonatype nexus oss,在docker里面安装 1.Mac上安装docker 下载地址:https://github.com/boo ...
- spawn类参数command详解
我们主要来看spawn类它的构造方法参数主要有command,从字面上就是指spawn类的子程序用来执行的子程序,也就是系统所能够执行的相应的命令,对于command这个参数,我们是以字符串的方式给出 ...
- 在iOS平台使用ffmpeg解码h264视频流(转)
在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...
- KeyChain相关参数的说明
#pragma mark- 密钥类型 //密钥类型键 //CFTypeRef kSecClass // //值 //CFTypeRef kSecClassGenericPassword ...
- [usaco2003feb]impster
FJ再也不用野蛮的方式为自己的奶牛编号了.他用一个B(1<=B<=16)位二进制编码给每头奶牛编号,并刻在奶牛耳朵上的金属条上.奶牛希望自己给自己选择一个编码.于是,瞒着FJ,他们制造了一 ...
- python不同目录下的调用
转自http://blog.csdn.net/hansel/article/details/8975663 Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件 ...
- hadoop源码剖析--RawLocalFileSystem
RawLocalFileSystem是hadoop中实现的本地文件系统,在该类中与文件元数据和目录相关的操作,都是通过适配方式适配到java.io.File的对应API来完成的,适配过程简单,代码清晰 ...
- C语言教学杂记——字母排序
一个人在被告诉一个问题应该怎么被解决后,而且亲身试验效果OK后,一旦遇到类似的问题,就会条件反射般直接拿这个方法来用了.很少会去想为什么要用这个方法,会不会有什么隐患,还有没有别的方法呢,等等这些问题 ...
- RQNOJ魔法石之恋
魔法石之恋 (stone.pas/c/cpp) [问题描述] 在<Harry Potter and the Sorcerer's Stone>中,想得到魔法石,必须要通过许许多多的测试和游 ...
- slice 和 splice 区别
splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改. slice(start,end) ; start 必需.规定从何处开始选取.如果是负数,那 ...