NGINX 防御 CC 攻击教程

CC 攻击就是靠大量并发去消耗你服务器资源,资源消耗完就导致网站无法访问。
CC 攻击即 http flood,以攻击成本低(只需数台 http 代理服务器即可实现攻击)、隐蔽性强(中小 CC 攻击一般不会造成网络瓶颈)、难防御(与正常访问的请求很难区分开)、威力强大(造成和 DDOS 流量攻击一样的效果,网站长时间无法打开)等特点著称。常规的 http flood 防御为 JS 弹回,二次请求验证加入白名单 和 多层缓存(七层、四层共同缓存)实现防御体。
CC 攻击,首先造成的后果往往是被攻击服务器 CPU 爆满、内存占用高、甚至磁盘 IO 高占用。通常服务器上有永远处理不完的任务,所以,CC 攻击,也是以拒绝服务为目的的攻击,属于 DDOS 攻击中的一种。
那么 CC 攻击应该如何防御呢?
首先站长朋友需要冷静下来,对手攻击你的项目,目的就是要你自乱阵脚,冷静下来,才好准备拔剑迎战。
我先用之前的文章写的 5 秒盾来试了一下效果,他服务器是 1H1G 的,配置不太好,所以这个效果也就不太好. 于是开始分析量有多少:
netstat -an | grep ':80 ' -c

这是判断 80 端口的连接数,用这个数字与网站上第三方统计代码相比对,如果差距悬殊,甚至服务器卡到统计不出来,那么就肯定是 CC 攻击。 如果资源占用太高甚至 SSH 命令执行都困难,先暂停一段时间的 WEB 服务(不要觉得失去什么,服务已经无法访问,何必留着继续耗资源?)
擒贼擒王:找出攻击共同特征 按连接数排序
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
> 找出连接数最大的 IP(假设是 22.00.**.11),在日志中匹配
cat /log/nginx/access.log | grep "22.00.**.11" | more
找出访问日志中攻击者所用工具的特征,然后尝试在 conf 中封禁掉。
报仇不留情:封禁
假如攻击者使用工具的 UA 包含 “Bench” 字段,那么可以在 conf 中屏蔽掉:
location /{
    if ( $http_user_agent ~ "Bench" ) {
        return 444;
    }
}
日志分析 将日志中访问频率过高的 IP 封禁 将日志中不符合人的特征的 IP 封禁(同一 URL 访问不合理次数等等) 宝塔还可以试试以下方法: 肉鸡代理攻击。因为其真实访问,宝塔防火墙屏蔽不了,只能是手动分析日志,进行拦截! 下面放出几条规则,大家可以进行参考。
1. 根据访问地址过滤。 检测到访问地址有 test = 这些关键词,自动跳转到公安备案网。
if ($request_uri ~* test=) {
return 301 http://www.beian.gov.cn;
}
2. 根据访问地址过滤。
检测到来源地址有 Baiduspider,自动跳转到公安备案网。 有的版权狗软件,顺序都搞不清楚,改改就拿来用了!
if ($http_referer ~* Baiduspider) {
return 301 http://www.beian.gov.cn;
}
3. 根据 ua 过滤 检测到 ua,有 Baiduspider 直接过滤。反正被打也会打不开,跟过滤蜘蛛一个性质!
if ($http_user_agent ~* Baiduspider) {
return 403;
}
您阅读这篇文章共花了: 0小时00分10秒
本博客所有文章如无特别注明均为原创。作者:fyq复制或转载请以超链接形式注明转自 免费精品资源分享
原文地址《NGINX 防御 CC 攻击教程
生成文章海报

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)