在CentOS系统下,Nginx可以通过以下几种方式来防止DDoS攻击:
通过限制每个IP地址的并发连接数,可以有效防止DDoS攻击。
http {
...
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
...
location / {
limit_req zone=mylimit burst=5;
...
}
}
}
使用iptables或firewalld来限制连接数和阻止恶意IP。
# 限制每个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
# 限制每个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
Fail2Ban可以监控日志文件并自动封禁恶意IP。
sudo yum install epel-release
sudo yum install 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 =
使用Cloudflare或其他CDN服务可以提供额外的安全层,包括DDoS防护。
定期检查Nginx日志,分析异常流量和攻击模式,及时调整防护策略。
tail -f /var/log/nginx/access.log
启用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攻击。根据实际情况选择合适的防护措施,并定期更新和调整配置。