Linux LNMP如何防止DDoS攻击
导读:Linux LNMP 防 DDoS 实用方案 一 分层防御总体思路 边缘与网络层:先用防火墙/ACL收敛暴露面,仅开放必要端口(如 22/80/443),对异常来源进行限速/封禁;大规模攻击时结合CDN/WAF做流量清洗与缓存,显著降低源...
Linux LNMP 防 DDoS 实用方案
一 分层防御总体思路
- 边缘与网络层:先用防火墙/ACL收敛暴露面,仅开放必要端口(如 22/80/443),对异常来源进行限速/封禁;大规模攻击时结合CDN/WAF做流量清洗与缓存,显著降低源站压力。
- 主机与连接层:在 Nginx 侧限制并发连接数与请求速率,抵御连接耗尽与低速/突发型攻击;对管理口(如 SSH)仅限跳板或白名单。
- 应用与数据库层:开启 HTTPS、最小化暴露面;对 PHP 禁用不必要扩展、限制上传;对 MySQL 限制连接数与来源。
- 自动化与监测:用 Fail2Ban 自动封禁恶意 IP,结合日志与监控(如 top/htop、Prometheus/Grafana)快速发现异常并处置。
- 预案与协作:准备应急开关(如临时返回 503、关闭非核心功能)、与 ISP/云厂商联动清洗,必要时启用专业 DDoS 防护服务。
二 Nginx 关键配置示例
- 限制请求速率(防 CC/突发)
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; # 其他配置 … } } } - 强制 HTTPS(减少明文与握手开销)
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
说明:以上为常用且有效的速率/连接控制与强制加密配置,可直接按需放入 http/server/location 块中使用。
三 防火墙与 Fail2Ban 自动化
- 防火墙收敛暴露面
- firewalld(CentOS/RHEL)
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 - ufw(Ubuntu/Debian)
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
- firewalld(CentOS/RHEL)
- Fail2Ban 自动封禁
- 安装与启用
# 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 示例(/etc/fail2ban/jail.local)
[nginx] enabled = true port = http,https filter = nginx-badbots logpath = /var/log/nginx/access.log maxretry = 3 bantime = 600
- 安装与启用
提示:按业务容忍度调整 rate/burst、maxretry、bantime,避免误封正常爬虫或突发流量。
四 应用与数据库层加固
- PHP
- 仅启用必要扩展,禁用危险函数;限制上传大小与类型并在服务端校验;设置安全响应头(如 CSP)降低 XSS 风险。
- MySQL
- 强口令与最小权限;限制来源地址;按需设置最大连接数,避免被连接洪泛拖垮。
- 通用
- 关闭不必要的端口与服务,遵循最小权限原则;定期安全扫描与补丁更新。
五 监控、应急与高防选择
- 监控与告警
- 实时查看资源使用(如 top/htop、iotop),对异常流量与连接数设置阈值告警;结合日志分析工具(如 logwatch)与可视化监控(如 Prometheus/Grafana)建立基线。
- 应急处置
- 攻击峰值时可临时返回 503、关闭非核心功能或静态资源降级;必要时切换至维护页,优先保障核心业务可用。
- 高防与协作
- 启用 Cloudflare/Akamai 等 CDN/WAF 做缓存与清洗;大规模攻击时与 ISP 协同进行上游清洗或启用云厂商高防。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux LNMP如何防止DDoS攻击
本文地址: https://pptw.com/jishu/752500.html
