插件窝 干货文章 linux怎么防ddos

linux怎么防ddos

iptables 防护 limit 使用 658    来源:    2025-04-06

Linux 防御 DDoS 攻击的综合方案

DDoS (分布式拒绝服务) 攻击是常见的网络安全威胁,以下是针对 Linux 系统的多层次防御方案:

1. 系统层面防护

内核参数优化

# 编辑 /etc/sysctl.conf 添加以下参数
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200

# 应用配置
sysctl -p

连接数限制

# 使用 iptables 限制单个 IP 的连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j REJECT

2. 网络层面防护

使用 iptables/nftables 规则

# 阻止无效数据包
iptables -A INPUT -m state --state INVALID -j DROP

# 限制 SYN 洪水攻击
iptables -N SYN_FLOOD
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
iptables -A SYN_FLOOD -j DROP

# 限制 ICMP 洪水
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp -j DROP

使用 fail2ban

# 安装 fail2ban
sudo apt-get install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban      # CentOS/RHEL

# 配置 /etc/fail2ban/jail.local 添加自定义规则

3. 应用层防护

Web 服务器防护 (Nginx/Apache)

# Nginx 示例配置
http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

    server {
        limit_conn addr 10;
        limit_req zone=one burst=5;
    }
}

使用 Cloudflare 或类似 CDN 服务

  • 启用 CDN 的 DDoS 防护功能
  • 隐藏服务器真实 IP
  • 利用 CDN 的分布式清洗能力

4. 高级防护工具

安装 DDoS Deflate

wget https://www.inetbase.com/scripts/ddos/install.sh
chmod +x install.sh
./install.sh

使用 mod_evasive (Apache)

# 安装
sudo apt-get install libapache2-mod-evasive  # Debian/Ubuntu

# 配置 /etc/apache2/mods-enabled/evasive.conf
<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

5. 监控与响应

实时监控工具

# 查看网络连接状态
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# 使用 iftop 监控流量
iftop -nNP

# 使用 nload 监控带宽
nload

自动化脚本示例

#!/bin/bash
# 自动封禁异常IP
netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | \
while read count ip; do
    if [ "$count" -gt 50 ]; then
        iptables -I INPUT -s "$ip" -j DROP
        echo "$(date) Banned $ip with $count connections" >> /var/log/ddos.log
    fi
done

最佳实践建议

  1. 保持系统更新:定期更新内核和所有软件包
  2. 最小化服务:关闭不必要的服务和端口
  3. 备份配置:定期备份防火墙和系统配置
  4. 多层防御:结合网络层和应用层防护
  5. 压力测试:定期进行模拟攻击测试防御效果
  6. 日志分析:设置集中式日志分析系统监控异常

以上措施需要根据实际业务需求进行调整,对于大规模 DDoS 攻击,建议结合专业防护设备和云防护服务。