在Linux LNMP(Linux, Nginx, MySQL, PHP)环境下,防止DDoS攻击可以采取以下措施:
限制连接数: 在Nginx配置文件中,限制每个IP地址的并发连接数。例如:
http {
...
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
...
}
限制请求速率:
使用Nginx的limit_req
模块限制每个IP地址的请求速率。例如:
http {
...
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location / {
...
limit_req zone=one burst=5 nodelay;
...
}
}
}
启用防火墙: 使用iptables或ufw等工具配置防火墙规则,限制外部访问。例如,仅允许特定IP地址访问服务器:
iptables -A INPUT -p tcp --dport 80 -s 允许的IP地址 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 允许的IP地址 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
使用Fail2Ban: 安装并配置Fail2Ban,它可以监控日志文件并根据规则禁止恶意IP地址。例如,禁止在短时间内多次失败的SSH登录尝试:
fail2ban-client set sshd banip 192.168.1.1
使用CDN: 使用内容分发网络(CDN)可以帮助分散流量,减轻服务器压力。
使用Web应用防火墙(WAF): 使用WAF可以帮助识别并阻止恶意请求,例如ModSecurity。
保持软件更新: 定期更新Nginx、PHP和其他相关软件,以修复已知的安全漏洞。
监控服务器性能: 使用工具如htop、top、iotop等监控服务器资源使用情况,以便在DDoS攻击发生时及时发现并采取措施。
分散资源: 如果可能的话,将服务部署在多个服务器上,以便在受到攻击时分散流量。
与ISP合作: 如果攻击非常严重,可以与互联网服务提供商(ISP)合作,请求他们过滤恶意流量。
请注意,这些措施并不能完全防止DDoS攻击,但它们可以帮助减轻攻击的影响。在面对大规模DDoS攻击时,可能需要寻求专业DDoS防护服务的帮助。