当前位置:首页技术教程NGINX防御CC攻击
NGINX防御CC攻击
°
  • 素材类型: 资源-素材
  • 上传时间:

在讲之前呢,先给大家讲解一下什么是cc攻击:

攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。

为了防止软件对网站压力测试或者恶意攻击,当服务器遭遇CC攻击时,我们可以快速查看日志,分析其请求的特征,比如User-agent。下面的是某一次CC攻击时的User-agent Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate
几乎没有正常的浏览器会在User-agent中带上“must-revalidate”这样的关键字。所以我们可以以这个为特征进行过滤,将User-agent中带有“must-revalidate”的请求全部拒绝访问:

if ($http_user_agent ~ must-revalidate)
 {
 return 403;
 }

再用cc攻击软件,全部返回403,用360奇云测访问正常

也可以通过以下办法,被动防御
Discuz!是使用比较多的一个php论坛程序。以Discuz!7.0为例,程序目录下有比较多的可以直接访问的php文件,但其中最容易受到攻击的一般有index.php(首页)、forumdisplay.php(板块显示)、viewthread.php(帖子显示)。攻击者一般会对这些页面发起大量的请求,导致HTTP服务器连接数耗尽、mysql数据库停止响应,最终导致服务器崩溃。
为了防止上述页面被攻击,我们可以设定以下的规则进行防御:


 http {
      limit_zone   myzone_bbs  $binary_remote_addr  10m;
      limit_req_zone $binary_remote_addr zone=bbs:10m rate=1r/s;
      …
      server {
          …
          location ~ ^/bbs/(index|forumdisplay|viewthread).php$ {
              limit_conn   myzone_bbs  3;
              limit_req zone=bbs burst=2 nodelay;
              root           html;
              fastcgi_pass   unix:/dev/shm/php-cgi.sock;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
              include        fastcgi_params;
          }
      }
 }

应用这条规则后,bbs目录下的index.php、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。
虽然这样的规则一般来说对正常的用户不会产生影响(极少有人在1秒内打开3个页面),但是为了防止影响那些手快的用户访问,可以在nginx中自定义503页面,503页面对用户进行提示,然后自动刷新。
在Nginx中自定义503页面:
error_page 503 /errpage/503.html;
503页面的源代码:

<html>
< head>
< title>页面即将载入....</title>
< meta http-equiv=content-type c>
< META NAME="ROBOTS" C>
< /head>
< body bgcolor="#FFFFFF">
< table cellpadding="0" cellspacing="0" border="0" width="700" align="center" height="85%">
< tr align="center" valign="middle">
< td>
< table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family:
Verdana, Tahoma; color: #666666; font-size: 11px">
< tr>
< td valign="middle" align="center" bgcolor="#EBEBEB">
< br /><b style="font-size: 16px">页面即将载入</b>
< br /><br />你刷新页面的速度过快。请少安毋躁,页面即将载入...
< br /><br />[<a href="javascript:window.location.reload();"><font color=#666666>立即重新载入</font></a>]
< br /><br />
< /td>
< /tr>
< /table>
< /td>
< /tr>
< /table>
< /body>
< /html>
   
< SCRIPT language=javascript>
function update()
{
window.location.reload();
}
setTimeout("update()",2000);
< /script>

2.被动防御
虽然主动防御已经抵挡了大多数HTTP GET FLOOD攻击,但是道高一尺魔高一丈,攻击者会总会找到你薄弱的环节进行攻击。所以我们在这里也要介绍一下被动防御的一些方法。
1)封IP地址
访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问。
以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:

#!/bin/sh
status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1`
NUM=`echo $status|awk '{print $1}'`
IP=`echo $status|awk '{print $2}'`
result=`echo "$NUM > 150" | bc`
if [ $result = 1 ]
then
echo IP:$IP is over $NUM, BAN IT!
/sbin/iptables -I INPUT -s $IP -j DROP
fi
运行crontab -e,将上述脚本添加到crontab每分钟自动运行:
通过apache自带的ab工具进行服务器压力测试:
ab -n 1000 -c 100 http://www.nf139.com
测试完成后,我们就可以看到系统中有IP被封的提示:
[root@xxxxxx ~]#tail /var/spool/mail/root
Content-Type: text/plain; charset=ANSI_X3.4-1968
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <;PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
IP:58.246.xx.xx is over 1047, BAN IT!

另外还有一种下下策

使用Cloudflare的CDN和云锁抗CC模块双管齐下

配置危险ip验证码访问和自动验证,如果遭受的攻击太大,可以考虑临时开启5秒盾和云锁的验证码盾

温馨提示:

文章标题:NGINX防御CC攻击

文章链接:https://www.xiciw.com/jsjc/2962.html

更新时间:2024年03月29日

本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiciw#qq.com我们将第一时间处理!

资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

                               

所有资源仅限于参考和学习,版权归原作者所有,更多请阅读菜鸟资源服务协议

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
技术教程

Centos更换阿里YUM源

2024-3-29 20:27:20

技术教程

Linux swap分区及作用详解

2024-3-30 19:32:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索