LNMP环境下防御DDoS的实用方案
一 分层防御思路
二 Nginx关键配置示例
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
location / {
limit_conn addr 10; # 每个IP最大并发连接数
}
}
}
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
location / {
limit_req zone=one burst=5 nodelay; # 突发5个请求,不延迟处理
}
}
}
location /sensitive-data {
allow 192.168.1.0/24;
deny all;
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
上述配置分别通过连接/速率限制与访问控制,削弱DDoS/CC与暴力扫描对Nginx的冲击。
三 防火墙与Fail2Ban
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.123.123.123" port port="80" protocol="tcp" accept'
firewall-cmd --reload
sudo apt-get install fail2ban # Ubuntu/Debian
sudo yum install fail2ban # CentOS/RHEL
sudo systemctl enable --now fail2ban
[nginx]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 600
通过“最小暴露面+自动封禁”,可在攻击初期快速抑制恶意来源。
四 应用与数据库加固
五 监控响应与高等级防护
top/htop、iotop;分析访问与错误日志,配合fail2ban/logwatch建立告警基线。