温馨提示×

Ubuntu LNMP服务器如何防止DDoS攻击

小樊
51
2025-09-18 13:57:47
栏目: 云计算

Ubuntu LNMP服务器防止DDoS攻击的综合策略

1. 基础网络层防护:防火墙配置

使用ufw(Uncomplicated Firewall)或iptables限制不必要的入站流量,仅开放必需端口(如SSH的22/tcp、HTTP的80/tcp、HTTPS的443/tcp),默认拒绝所有入站请求。例如,ufw的基础配置命令:
sudo ufw enable && sudo ufw default deny incoming && sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
通过iptables可进一步限制单IP连接速率,如限制80端口每秒最多接受5个新连接:
sudo iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 5/s -j ACCEPT && sudo iptables -A INPUT -p tcp --syn --dport 80 -j DROP

2. Nginx应用层防护:限制连接与请求

通过Nginx内置模块控制并发连接和请求速率,避免单个IP占用过多资源:

  • 限制并发连接数:在http块中定义共享内存区域(如addr zone,10MB大小),并在serverlocation块中设置单IP最大连接数为10:
    http { limit_conn_zone $binary_remote_addr zone=addr:10m; }
    server { limit_conn addr 10; }
    
  • 限制请求速率:使用limit_req_zone定义请求速率(如one zone,10MB大小,每秒1个请求),并通过burst参数允许突发请求(如5个),nodelay表示立即处理突发请求:
    http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; }
    server { location / { limit_req zone=one burst=5 nodelay; } }
    

3. 自动封禁恶意IP:Fail2Ban

安装fail2ban监控Nginx日志(/var/log/nginx/access.log),自动封禁频繁发起恶意请求的IP(如60秒内失败3次,封禁10分钟):

sudo apt-get install fail2ban
sudo systemctl enable fail2ban && sudo systemctl start fail2ban

创建自定义配置文件/etc/fail2ban/jail.local,添加以下内容:

[nginx]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 600

4. CDN与反向隧道:隐藏真实IP

使用Cloudflare等CDN服务,将域名解析到CDN节点IP,而非服务器真实IP,由CDN分散流量并缓存静态内容(如图片、CSS、JS),减轻服务器压力。配置时需关闭Nginx的real_ip模块(若开启),避免泄露真实IP。

5. Web应用防火墙(WAF):过滤恶意请求

安装ModSecurity(开源WAF),通过规则集(如OWASP Core Rule Set)识别并阻止SQL注入、跨站脚本(XSS)、慢速HTTP攻击等恶意请求。安装命令示例:

sudo apt-get install libapache2-mod-security2
sudo systemctl enable apache2-mod-security2 && sudo systemctl start apache2-mod-security2

需将Nginx配置为反向代理转发请求至Apache(若使用Apache作为WAF),或在Nginx中集成ModSecurity模块。

6. 系统与服务优化:降低攻击影响

  • 限制MySQL连接数:通过SET GLOBAL命令调整最大连接数(如100),避免数据库因过多连接崩溃:
    SET GLOBAL max_connections = 100;
  • 禁用不必要的服务:关闭未使用的端口和服务(如FTP、Telnet),减少攻击面。
  • 定期更新软件:使用apt-get update && apt-get upgrade更新Ubuntu系统、Nginx、MySQL、PHP等软件,修补已知安全漏洞。

7. 监控与应急响应:及时发现与处置

  • 实时监控资源:使用htop(查看CPU/内存)、iftop(查看网络流量)、iotop(查看磁盘IO)等工具监控服务器状态,及时发现异常流量(如突然激增的80端口请求)。
  • 制定应急计划:预先规划攻击处置流程(如封禁IP段、联系CDN服务商升级防护、切换备用服务器),确保攻击发生时快速响应。

0