ubuntu

Ubuntu LNMP中Nginx如何防止DDoS攻击

小樊
50
2025-04-29 14:12:39
栏目: 云计算

在Ubuntu LNMP环境中,Nginx可以通过以下方法来防止DDoS攻击:

  1. 限制连接数: 在Nginx配置文件中,可以使用limit_connlimit_req模块来限制每个IP地址的并发连接数和请求速率。例如:

    http {
        ...
        limit_conn_zone $binary_remote_addr zone=addr:10m;
        limit_req_zone $binary_remote_addr zone=req:10m rate=1r/s;
    
        server {
            ...
            location / {
                ...
                limit_conn addr 10;
                limit_req zone=req burst=5 nodelay;
            }
        }
    }
    

    这将限制每个IP地址每秒只能发送一个请求,并且同时只能保持10个连接。

  2. 配置防火墙: 使用iptablesufw配置防火墙规则,限制每个IP地址的连接数和请求速率。例如,使用iptables限制每个IP地址每秒只能发送5个请求:

    sudo iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 5/s -j ACCEPT
    sudo iptables -A INPUT -p tcp --syn --dport 80 -j DROP
    
  3. 启用Nginx的X-Content-Type-Options和X-Frame-Options: 这些HTTP响应头可以帮助防止跨站脚本攻击(XSS)和点击劫持攻击。在Nginx配置文件中添加以下行:

    http {
        ...
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options SAMEORIGIN;
    }
    
  4. 使用Fail2Ban: Fail2Ban是一个入侵防御软件框架,可以用来禁止恶意IP地址访问你的服务器。首先安装Fail2Ban:

    sudo apt-get install fail2ban
    

    然后创建一个新的配置文件/etc/fail2ban/jail.local,并添加以下内容:

    [DEFAULT]
    bantime = 600
    findtime = 600
    maxretry = 3
    
    [nginx-ddos]
    enabled = true
    filter = nginx-ddos
    action = iptables-multiport[name=DDoS, port="http,https", protocol=tcp]
    logpath = /var/log/nginx/access.log
    

    最后,重启Fail2Ban服务:

    sudo systemctl restart fail2ban
    
  5. 使用第三方DDoS防护服务: 如果你的网站面临严重的DDoS攻击,可以考虑使用第三方DDoS防护服务,如Cloudflare、Akamai等。这些服务可以帮助你识别和阻止恶意流量,确保你的网站正常运行。

请注意,这些方法并不能完全防止DDoS攻击,但它们可以帮助你减轻攻击的影响。在实际应用中,你可能需要结合多种方法来提高网站的安全性。

0
看了该问题的人还看了