在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攻擊。根據實際情況選擇合適的防護措施,并定期更新和調整配置。