centos

centos下nginx如何防止DDoS攻击

小樊
44
2025-08-28 19:32:56
栏目: 云计算

在CentOS系统下,Nginx可以通过以下几种方式来防止DDoS攻击:

1. 限制连接数

通过限制每个IP地址的并发连接数,可以有效防止DDoS攻击。

http {
    ...
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

    server {
        ...
        location / {
            limit_req zone=mylimit burst=5;
            ...
        }
    }
}

2. 使用防火墙

使用iptables或firewalld来限制连接数和阻止恶意IP。

使用iptables

# 限制每个IP每秒只能建立1个连接
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 阻止特定IP
iptables -A INPUT -s 1.2.3.4 -j DROP

使用firewalld

# 限制每个IP每秒只能建立1个连接
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --syn -m limit --limit 1/s -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --syn -j DROP
firewall-cmd --reload

# 阻止特定IP
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject'
firewall-cmd --reload

3. 使用Fail2Ban

Fail2Ban可以监控日志文件并自动封禁恶意IP。

安装Fail2Ban

sudo yum install epel-release
sudo yum install fail2ban

配置Fail2Ban

编辑/etc/fail2ban/jail.local文件,添加以下内容:

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

创建过滤器文件/etc/fail2ban/filter.d/nginx-auth.conf

[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"
ignoreregex =

4. 使用Cloudflare或其他CDN

使用Cloudflare或其他CDN服务可以提供额外的安全层,包括DDoS防护。

5. 监控和日志分析

定期检查Nginx日志,分析异常流量和攻击模式,及时调整防护策略。

tail -f /var/log/nginx/access.log

6. 使用SSL/TLS加密

启用SSL/TLS加密可以防止中间人攻击和数据泄露。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/privatekey.pem;

    ...
}

通过以上方法,可以在CentOS系统下有效地防止Nginx受到DDoS攻击。根据实际情况选择合适的防护措施,并定期更新和调整配置。

0
看了该问题的人还看了