树莓派 NGINX 流控和 fail2ban 防止 CC 攻击

发布于 2017-02-15

博客一直定时会遭受小量的cc攻击 总是导致我的树莓派会很卡 CC 攻击 攻击者通过创建大量请求导致服务器资源耗尽,主要针对特定服务接口,属于实现 DoS 攻击的一种方式(DoS 攻击更多是针对网络端口,而不是具体服务接口)。 NGINX 流控 limit_req_zone:通过“漏桶”算法限制每个 IP 发起的请求频率。 limit_conn_zone:限制每个 IP 发起的连接数。 fail2ban 通过匹配服务器日志操作 iptables 来限制客户端网络连接。 实践配置 NGINX 部分 在 http 部分中配置: limit_req_zone $binary_remote_addr zone=sym:10m rate=5r/s; limit_conn_zone $binary_remote_addr zone=conn_sym:10m; 然后在需要流控的 location 部分配置: limit_req zone=sym burst=5; limit_conn conn_sym 10; 重启 NGINX 后当有超流客户端请求时将在 NGINX error.log(默认在 /var/log/nginx/error.log) 中看到类似记录: 2017/02/12 18:03:57 [error]15965#15965: *61240 limiting requests, excess: 6.000 by zone "sym", client: 121.41.106.121, server: hacpai.com, request: ...