网站CC攻击防御方案大全

   CC攻击是 DDoS的一种,针对URL进行攻击,持续时间长,危害大。

Nginx防CC限制


在nginx.conf中http模块添加如下代码(定义触发条件):

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦


若使用CDN将$binary_remote_addr更改为$http_x_forwarded_for

在网站的server模块添加如下代码(定义达到触发条件时nginx所要执行的动作):

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦


ngx_http_limit_req_module模块是通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回503错误。
ngx_http_limit_conn_module模块则是限制IP连接数

效果:某ip访问过于频繁,打印的日志里会出现503错误



分割Nginx日志

为后续分析方便,把正常日志、错误日志、拦截日志分开
在nginx.conf中http模块添加如下代码:

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦


定义日志格式以及三个变量,$normal、$notfound、$abnormal,分别表示正常日志、拦截日志(40X)、系统异常日志。

在网站的server模块添加如下代码:

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

定义日志输出到三个文件


禁止IP

添加完防CC限制和日志分割后,可以再error.log中看到出现许多503错误,接下来就需要将那些日志中的IP ban掉

添加真实IP变量
在nginx.conf中http模块添加如下代码:


此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

新增禁止IP脚本

将下列代码放在/usr/local/bin/nginx_deny_ctl.sh中,并赋予可执行权限

注: NGINX_BIN和DENY_CONF需要根据实际情况填写


此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

测试是否正常添加删除IP:

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

增添deny目录

在网站的server模块添加如下代码:

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

注:根据实际情况填写



配置fail2ban进行自动过滤禁止

过滤器filter:/etc/fail2ban/filter.d/nginx-bad-ip.conf

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

操作action:/etc/fail2ban/action.d/nginx-deny.conf

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

配置jail:/etc/fail2ban/jail.d/nginx.local

此处内容已隐藏,需要  评论后刷新一下  才可以查看哦

logpath需要配置为网站错误日志路径


重启服务

重新启动Nginx和fail2ban服务,试一发CC,静候效果。

上面的阈值随便配的,请自行琢磨适合自己的阈值。

本博客所有文章如无特别注明均为原创。作者:小乐复制或转载请以超链接形式注明转自 众众帮
原文地址《网站CC攻击防御方案大全
分享到:更多

相关推荐

发表评论

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

网友评论(0)