IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

nginx网站被持续攻击1个月后最终防攻策略

发布时间:2016-09-07 17:22文章来源:互联网文章作者: 佚名点击次数:
上上个月架构全部迁移上云以后,总的来说比较稳定,业务量也上来,可爱的坏人也来了,7X24小时不停恶意攻击我的网站,第一次收到报警是网站流入流量1分钟以内连续3次超过1000000bps,换算下1M/s秒,平时没那么大流量的啊,当时刚好在朋友家玩,于赶紧开本本连v

上上个月架构全部迁移上云以后,总的来说比较稳定,业务量也上来,可爱的坏人也来了,7X24小时不停恶意攻击我的网站,第一次收到报警是网站流入流量1分钟以内连续3次超过1000000bps,换算下1M/s秒,平时没那么大流量的啊,当时刚好在朋友家玩,于赶紧开本本连vpn检查,发现全是访问同一个页面的请求,而且是正常访问http 200,应该是被恶意攻击了。

发现问题:发现问题第一反应,赶紧将请求地址截图发给开发们看看,问问这个具体是什么?最后得知是为短信验证码接口,据后来统计在被持续攻击的一个多小时中损失16000多条短信。

\

解决问题:

一期防攻击策略:发现问题当然要立马解决了,当时思路就是统计nginx日志,当单个ip在10秒钟内访问 /account/sendPhoneCode次数超过5次,就禁用这个ip,正常用户不可能有么大的访问量,于是就有了下面的防攻击shell脚本。

这个脚本加在定时任务里每分钟执行一次,半夜0点自动重启动防火墙,释放IP,基本上防止了攻击,大概使用了半个月。

#!/bin/bash

#write: lijing QQ 858080796

#date: 20160528 v2.0

#description:拦截非法IP

#定义变量

RETVAL=0

Date=$(date '+%Y-%m-%d')

Time=$(date '+%Y:%H:%M' -d '-1 minute')

MON=$(date|awk -F" " '{print $2}')

TODAY=$(date|awk -F" " '{print $3}')

Log="/data/logs/nginx/access.log "

LINE="70000"

#关键字

Key01="sendPhoneCode"

Status=/tmp/statuS_deny_ip

/sbin/service iptables status > $Status

#定义函数

#禁止时间函数

secure_deny_time(){

Time01=$(date "+%H:%M:%S" -d " -10 second")

Time02=$(date "+%H:%M:%S" -d " -9 second")

Time03=$(date "+%H:%M:%S" -d " -8 second")

Time04=$(date "+%H:%M:%S" -d " -7 second")

Time05=$(date "+%H:%M:%S" -d " -6 second")

Time06=$(date "+%H:%M:%S" -d " -5 second")

Time07=$(date "+%H:%M:%S" -d " -4 second")

Time08=$(date "+%H:%M:%S" -d " -3 second")

Time09=$(date "+%H:%M:%S" -d " -2 second")

Time10=$(date "+%H:%M:%S" -d " -1 second")

echo "$Time01 $Time02 $Time03 $Time04 $Time05 $Time06 $Time07 $Time08 $Time09 $Time10 "

}

# 禁止关键字函数

secure_key(){

tail -n $LINE $LOG |grep "$TODAY\/$MON"|grep -v ^$|grep $TIME|grep $1 |grep $2 |grep $3 |grep $4 |awk -F " " '{print $1}' |sort >> $Deny

echo " grep "$TODAY\/$MON" $LOG |grep -v ^$|grep $TIME|grep $1 |grep $2 |grep $3 |grep $4 |awk '{print $1}' |sort"

}

#执行防火墙拦截函数

secure_deny_ip()

{

cat $Deny

echo ......................

cat $Deny02

for i in $IP;do

NUM=$(cat $Deny02|grep $i|awk -F" " '{print $1}')
nginx网站被持续攻击1个月后最终防攻策略
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/netsafe/Website/445449.html

标签分类:

上一篇:上一篇:python实现自动监控网站并发送邮件告警
下一篇: 下一篇:美国卫生部对违反卫生信息流通与责任法案(HIPAA)的医疗机构开
无觅关联推荐,快速提升流量