Linux LNMP 防 DDoS 实用方案
一 分层防御总体思路
二 Nginx 关键配置示例
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
server_name example.com;
location / {
limit_req zone=one burst=5 nodelay;
# 其他配置 …
}
}
}
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server_name example.com;
location / {
limit_conn addr 10;
# 其他配置 …
}
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
说明:以上为常用且有效的速率/连接控制与强制加密配置,可直接按需放入 http/server/location 块中使用。
三 防火墙与 Fail2Ban 自动化
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="22" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="80" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="443" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" reject'
sudo firewall-cmd --reload
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
sudo ufw enable
# Ubuntu/Debian
sudo apt-get install fail2ban -y
sudo systemctl enable --now fail2ban
# CentOS/RHEL
sudo yum install fail2ban -y
sudo systemctl enable --now fail2ban
[nginx]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 600
提示:按业务容忍度调整 rate/burst、maxretry、bantime,避免误封正常爬虫或突发流量。
四 应用与数据库层加固
五 监控、应急与高防选择