我维护的一个基于Django的networking论坛最近在应用层受到频繁的DDOS攻击。 本质上,它似乎是一个HTTP泛滥的主页,造成服务器执行大量的内部请求,并加载各种文件来创build页面。 洪水峰值约为每分钟4000个请求(典型的吞吐量为500转/分钟左右),导致我的服务器在这个过程中。
我的networking服务器是nginx,作为一个gunicorn应用服务器的反向代理。
我还没有使用gunicorn的安全参数: limit_request_line , limit_request_fields , limit_request_field_size )。 但是我已经安装了nginx fail2ban ,并且在我的jail.local有两个jail来确保HTTP floods被挫败:
[nginx-postflood] enabled = true filter = nginx-postflood port = http,https logpath = /var/log/nginx/access.log findtime = 60 maxretry = 13 bantime = 300 [nginx-getflood] enabled = true filter = nginx-getflood port = http,https logpath = /var/log/nginx/access.log findtime = 5 maxretry = 6 bantime = 600
这个设置没有帮助,我不明白为什么。 当我testing它时,我能够阻止我的IP,所以它肯定是function性的。 也许HTTP洪水已经随机化了IP。
我可以采用什么策略来阻止这种应用层的DDOS? 作为一个新手,我仍然围绕着这一切。 专家的帮助非常感谢!
我结束了在nginx级别处理这个。 我添加了以下内容到http {在nginx.conf :
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=7r/s; limit_conn_status 403; limit_req_status 403;
然后在虚拟主机文件的server { block(以下任何location { blocks):
limit_conn conn_limit_per_ip 10; limit_req zone=req_limit_per_ip burst=5 nodelay;
到目前为止,这个configuration对我来说工作得很好。
注意:适用于DoS,但不知道它将如何坚持DDoS。 希望有一个专家可以参加。