nginx防御ddos防止DDOS攻击配置(2)

Nginx防CC设置

不同于DDoS靠流量蛮力攻击,CC攻击模拟正常用户与服务器交互。CC攻击一般需找到网站/应用的薄弱处,然后通过大量连接/请求消耗服务器资源,让CPU、带宽能资源占用飙升。

并发请求和请求速率

防护CC攻击的主要手段是限制并发请求数量和请求速率。并发请求数量指的是单ip可以与服务器建立多少个连接,请求速率指的是单位时间内的请求数。两者有共同部分但意义不同,例如建立十个连接每个连接请求一次,也可以建立一个连接请求十次。前者是并发连接多,后者是请求速率高。

Nginx既支持并发请求的限制,也支持按限制请求速率。防御CC攻击主要是限制速率,理论上速率限制得好就够了。实践中建议两者结合,既防止太多连接消耗服务器资源,也防止请求速率过快。

Nginx防CC设置步骤

Nginx 防CC详细设置步骤如下:

1.  编辑Nginx配置文件,例如 /etc/nginx/nginx.conf , 在 http 段分配计数内存:

limit_conn_zone $binary_remote_addr zone=limit_conn:10m;
limit_req_zone $binary_remote_addr zone=limit_req:10m rate=10r/s;

上述配置分配了 limit_conn 和 limit_req 两个10M大小的内存块(1M内存可记录16000个会话),并设置每秒最大请求速率是10次。

2, 打开网站配置文件,例如 /etc/nginx/conf.d/tlanyan.conf,在 server 或者 location 段中开启限制:

server {
limit_conn limit_conn 5; # 并发连接数不超过5
limit_req zone=limit_req burst=10 nodelay;
# 其他设置

http中设置每秒允许10个请求,即100毫秒一个,如果突然来10个连接,后面9个直接返回503错误,这是我们不愿意看到的。limit_req中的 burst 参数用来处理突发请求,此时10个请求都会被接受以应对突发流量。如果再来10个,那就超出了允许的突发限制,Nginx直接返回503错误。

nodelay 表示在允许突发请求的情况下,直接处理所有请求,而不是每100毫秒处理一个。

实践中请根据具体情况设置并发连接数和请求速率。数值过大会影响防御效果,太小则会影响正常用户使用。此外,建议总是启用 burst 和 nodelay 以应对突发流量。

3. 保存配置文件,nginx -t 检查有无语法错误,然后 systemctl reload nginx 重新加载配置。

其他事项

1. 可以将某些ip放入白名单,避免受到速率限制。操作是在 http 段新增开启变量:

geo $whitelist {
default 1;
10.0.0.17 0; # 按照这个格式添加白名单ip
}
map $whitelist $limit {
0 “”;
1 $binary_remote_addr;
}
# limit_conn_zone 和 limit_req_zone更改为:
limit_conn_zone $limit zone=limit_conn:10m;
limit_req_zone $limit zone=limit_req:10 rate=10r/s;
#其他配置无需改变

2. limit_conn 和 limit_req 指令可以放置在 http、server、location 中使用,分别表示对所有站点、特点站点、特定url使用限制;

3. 可以同时使用多个 limit_conn 和 limit_req 应付复杂场景。WordPress 的搜索页面最消耗服务器资源,因此可以单独限制,例如每秒最多一次请求;

4. 超过允许速率后,服务器直接返回503错误,

firewalld/iptables防CC设置

Nginx可以限制并发请求数量,防火墙(iptables / firewalld)也可以做到,并且性能更好。

防火墙限制主要是两方面:

1. 将某个ip拉黑:

#iptables
iptables -I INPUt -p tcp -s 黑名单ip -j DROP
# firewalld
firewall-cmd –add-rich-rule=”rule family=’ipv4′ source address=’黑名单ip’ reject”

2. 限制ip的并发连接:

# iptables
iptables -I INPUt -p tcp –dport 443 -m connlimit –connlimit-above 5 -j DROP
# firewalld
firewall-cmd –add-rich-rule ‘rule port port=443 protocol=tcp accept limit value=”5/s”‘

修改Nginx可打开的最大文件数

默认Nginx最大可打开1024个文件/连接,在大流量时明显不够,因此需要加大。

操作方法如下:

1. 编辑 /etc/systemd/system/multi-user.target.wants/nginx.service,添加文件数限制:

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
# 增加这一行
LimitNOFILE=65535
#其他不用变

2. 重启Nginx:systemctl daemon-reload; systemctl restart nginx

3. 查看Nginx打开文件限制是否已经生效:ps aux | grep nginx 找到 nginx 的进程号,然后 cat /proc/进程号/limits,输出如下:

服务器简易防CC攻击设置-WordPress极简博客

总结

经过上述设置,配置好参数后,小型的CC攻击能防住或者减轻影响。大量ip/大流量的攻击没办法,只能通过WAF/大带宽做清洗处理。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

云资源网 » nginx防御ddos防止DDOS攻击配置(2)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
你们有qq群吗怎么加入?
当然有的,如果你是帝国cms、易优cms、和pbootcms系统的爱好者你可以加入我们的QQ千人交流群https://www.sudo1.com/page-qun.html。
  • 会员数(个)
  • 12310资源数(个)
  •        
  • 资源(G)
  •        
  • 今日下载
  • 1505稳定运行(天)

提供最优质的资源集合

立即查看 了解详情