在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攻击的防御能力。