菜鸟资源网站全面焕新升级啦!全新的界面设计,简洁而不失雅致,让您一目了然,轻松上手。我们还对资源分类进行了细致梳理,确保各类资源条理清晰,便于您按需筛选与查找。 立即查看
通知图标

正在访问 NGINX防御CC攻击

NGINX防御CC攻击

NGINX防御CC攻击

在讲之前呢,先给大家讲解一下什么是cc攻击: 攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。 为了防止软件对网站压力测试或者恶意攻击,当服务器遭遇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秒盾和云锁的验证码盾

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

常见问题

  • 如何安装和激活?

    每款软件会附带有安装教程,您打开安装包一目了然

  • 程序是否已损坏?文件损坏?还是其他错误?

    有错误问题,请您参考:https://www.xxx.com/error

  • 如何更新?正式激活后会发生什么情况?

    除非安装说明中另有说明,否则官方更新可能会导致无法激活。 要从本网站更新软件,您需要在此处下载此软件的新版本(如果可用),并将其安装在计算机上安装的版本之上(替换)。在这种情况下,您将保存此软件的激活和设置。

  • 如何下载?链接不起作用?

    我们使用百度网盘,132云盘和微软网盘,除了百度网盘,其他两款不限速,如果链接失效,请您联系客服处理

  • 已发布更新。我什么时候升级我的版本?

    所有软件如有更新,我们第一时间推送,视自己情况更新使用

  • 如何更改语言?

    打开“系统偏好设置”->“通用>语言和地区”->应用程序-“+”。 选择应用和语言。此方法适用于大多数应用程序。 Adobe 产品中的语言通常是在产品本身的安装阶段选择的。 游戏中的语言通常会在游戏本身的设置中发生变化。

  • 如何删除软件?

    有很多选择。最简单的方法是使用特殊的实用程序来卸载应用程序,例如App Cleaner Uninstaller 要删除 Adobe 产品,请使用 Creative Cloud Cleaner Tool

  • 需要远程帮助吗?

    网站已开通永久会员的可享受免费远程,如果非永久会员,远程安装另外收费

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

Centos更换阿里YUM源

2024-3-29 20:27:20

技术教程

Linux swap分区及作用详解

2024-3-30 19:32:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
后退
榜单