在Ubuntu LNMP(Linux, Nginx, MySQL, PHP)环境中,防止DDoS攻击可以通过以下几种方法来实现:
使用ufw(Uncomplicated Firewall)来限制访问。
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
通过配置Nginx来限制请求速率和连接数。
http {
# 限制单个IP的请求速率
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
listen 80;
server_name example.com;
location / {
limit_req zone=mylimit burst=5 nodelay;
...
}
}
}
Fail2Ban可以监控日志文件并自动封禁恶意IP。
sudo apt-get install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 配置Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 在jail.local中添加以下内容
[nginx]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 600
Cloudflare等CDN服务可以提供DDoS防护,并且可以缓存静态内容,减轻服务器压力。
限制MySQL的连接数和查询速率。
SET GLOBAL max_connections = 100;
SET GLOBAL query_cache_size = 0; # 禁用查询缓存
SET GLOBAL query_cache_type = 0;
使用像ModSecurity这样的WAF来保护你的Web应用。
sudo apt-get install libapache2-mod-security2
sudo systemctl enable apache2-mod-security2
sudo systemctl start apache2-mod-security2
定期检查服务器日志,使用工具如fail2ban、logwatch等来分析日志,及时发现异常行为。
确保所有软件都是最新的,及时打补丁以防止已知的安全漏洞被利用。
通过以上方法,可以有效地提高Ubuntu LNMP环境对DDoS攻击的防御能力。