软件需求请点击此处留言菜鸟资源为你准备 立即查看

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”的请求全部拒绝访问:

  1. if ($http_user_agent ~ must-revalidate)
  2. {
  3. return 403;
  4. }

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

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

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

应用这条规则后,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页面的源代码:

  1. <html>
  2. < head>
  3. < title>页面即将载入....</title>
  4. < meta http-equiv=content-type c>
  5. < META NAME="ROBOTS" C>
  6. < /head>
  7. < body bgcolor="#FFFFFF">
  8. < table cellpadding="0" cellspacing="0" border="0" width="700" align="center" height="85%">
  9. < tr align="center" valign="middle">
  10. < td>
  11. < table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family:
  12. Verdana, Tahoma; color: #666666; font-size: 11px">
  13. < tr>
  14. < td valign="middle" align="center" bgcolor="#EBEBEB">
  15. < br /><b style="font-size: 16px">页面即将载入</b>
  16. < br /><br />你刷新页面的速度过快。请少安毋躁,页面即将载入...
  17. < br /><br />[<a href="javascript:window.location.reload();"><font color=#666666>立即重新载入</font></a>]
  18. < br /><br />
  19. < /td>
  20. < /tr>
  21. < /table>
  22. < /td>
  23. < /tr>
  24. < /table>
  25. < /body>
  26. < /html>
  27. < SCRIPT language=javascript>
  28. function update()
  29. {
  30. window.location.reload();
  31. }
  32. setTimeout("update()",2000);
  33. < /script>

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

  1. #!/bin/sh
  2. status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1`
  3. NUM=`echo $status|awk '{print $1}'`
  4. IP=`echo $status|awk '{print $2}'`
  5. result=`echo "$NUM > 150" | bc`
  6. if [ $result = 1 ]
  7. then
  8. echo IP:$IP is over $NUM, BAN IT!
  9. /sbin/iptables -I INPUT -s $IP -j DROP
  10. fi
  11. 运行crontab -e,将上述脚本添加到crontab每分钟自动运行:
  12. 通过apache自带的ab工具进行服务器压力测试:
  13. ab -n 1000 -c 100 http://www.nf139.com
  14. 测试完成后,我们就可以看到系统中有IP被封的提示:
  15. [root@xxxxxx ~]#tail /var/spool/mail/root
  16. Content-Type: text/plain; charset=ANSI_X3.4-1968
  17. Auto-Submitted: auto-generated
  18. X-Cron-Env: <SHELL=/bin/sh>
  19. X-Cron-Env: <HOME=/root>
  20. X-Cron-Env: <;PATH=/usr/bin:/bin>
  21. X-Cron-Env: <LOGNAME=root>
  22. X-Cron-Env: <USER=root>
  23. 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打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    技术教程

    Centos更换阿里YUM源

    2024-3-29 20:27:20

    技术教程

    Linux swap分区及作用详解

    2024-3-30 19:32:16

    0 条回复 A文章作者 M管理员
    人的一切痛苦,本质上都是对自己的无能的愤怒
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    后退
    榜单