根据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攻击生产案例的更多相关文章

  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. dataware fact 事实 不可更新 data warehousing business intelligence 优劣判据

    不可 Kimball维度建模 维度建模,而非数据建模 文本型度量是对某些事情的描述.虽然以文本方式度量事实是可行的,但是应将其放入维度表中,除非对事实表的每个行,其文本是唯一的. 数据仓库的好坏直接取 ...

  2. 组件的详细说明和生命周期ComponentSpecs and Lifecycle

    render ReactComponent render() render() 方法是必须的. 当调用的时候,会检测 this.props 和 this.state,返回一个单子级组件.该子级组件可以 ...

  3. java的一个简单死锁的例子

    package com.deadlock; /* * 演示死锁:(由毕向东视频所得) * 一种解释:Thread—0拿到lock1锁,Thread—1拿到lock2锁,Thread—0想要lock2锁 ...

  4. windows下使用DOS命令删除大文件

    首先进入DOS命令窗口: 1.进入到将要删除的目录: 执行命令: rmdir /s/q 文件夹名称 2.删除指定文件: 进入文件的目录下,找到要删除的文件名称+扩展名:例如111.jpg执行命令: d ...

  5. MATLAB 2013b .m 文件关联

    使用绿色版的MATLAB无法自动关联.m文件,在网上查到的解决办法是,在MATLAB里运行如下命令: cwd=pwd; cd([matlabroot '\toolbox\matlab\winfun\p ...

  6. Android Weekly Notes Issue #241

    Android Weekly Issue #241 January 22nd, 2017 Android Weekly Issue #241 本期内容包括: 经典导航模式Master/Detail的设 ...

  7. {{badmatch, {error, eexist}}

    今天在编译cowboy工程在resolve release build时提示编译错误:{{badmatch, {error, eexist}} 后经调查可能是因为rebar的bug导致的,可是删除_b ...

  8. Python: PS 滤镜--表面模糊

    本文用 Python 实现 PS 滤镜中的表面模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/528 ...

  9. codevs 1143 纪念品分组

    1143 纪念品分组 2007年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description ...

  10. 洛谷 P4245 [模板]任意模数NTT —— 三模数NTT / 拆系数FFT(MTT)

    题目:https://www.luogu.org/problemnew/show/P4245 用三模数NTT做,需要注意时间和细节: 注意各种地方要取模!传入 upt() 里面的数一定要不超过2倍 m ...