Debian 服务器防御 DDoS 与 CC 攻击的全面优化指南

在当今网络环境中,DDoS(分布式拒绝服务)和 CC(Challenge Collapsar)攻击已成为服务器安全的主要威胁。针对 Debian 服务器的防护需要从系统加固、网络配置、防火墙规则、服务优化等多方面入手,构建多层次防御体系。以下是针对 Debian 服务器防御 DDoS 和 CC 攻击的详细优化方案。

一、系统基础安全加固

1. 系统更新与最小化服务

保持系统最新是安全的基础:

sudo apt update && sudo apt upgrade -y

禁用所有不必要的服务,减少攻击面:

sudo systemctl list-unit-files --type=service | grep enabled  # 查看已启用服务
sudo systemctl disable <不必要的服务名>

2. SSH安全配置

修改/etc/ssh/sshd_config文件:

Port 2222  # 更改默认SSH端口
PermitRootLogin no  # 禁止root直接登录
PasswordAuthentication no  # 禁用密码认证,仅使用密钥
MaxAuthTries 3  # 限制认证尝试次数

重启 SSH 服务生效:

sudo systemctl restart sshd

3. 内核参数优化

编辑/etc/sysctl.conf添加以下参数:

# SYN洪水攻击防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# 连接追踪优化
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576

# IP转发和路由验证
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 其他优化
net.core.somaxconn = 1024
net.ipv4.tcp_fin_timeout = 30

应用配置:

sudo sysctl -p

二、防火墙配置与流量控制

1. UFW防火墙基础配置

安装并配置 UFW:

sudo apt install ufw
sudo ufw default deny incoming  # 默认拒绝所有入站
sudo ufw default allow outgoing # 允许所有出站

# 开放必要端口
sudo ufw allow 2222/tcp  # SSH
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS

sudo ufw enable  # 启用防火墙

2. iptables高级防护规则

对于需要更精细控制的场景,使用 iptables:

# 安装iptables-persistent保存规则
sudo apt install iptables-persistent

# 防御SYN洪水攻击
sudo iptables -N SYN_FLOOD
sudo iptables -A SYN_FLOOD -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
sudo iptables -A SYN_FLOOD -j DROP
sudo iptables -A INPUT -p tcp --syn -j SYN_FLOOD

# 限制连接速率(防CC攻击)
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
sudo iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j REJECT

# 防止端口扫描
sudo iptables -N PORT_SCAN
sudo iptables -A PORT_SCAN -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
sudo iptables -A PORT_SCAN -j DROP

# 保存规则
sudo netfilter-persistent save

3. IP黑白名单管理

创建和管理 IP 黑白名单:

# 创建IP集
sudo ipset create blacklist hash:ip timeout 86400  # 24小时自动过期
sudo ipset create whitelist hash:ip

# 添加黑名单IP
sudo ipset add blacklist 192.168.1.100

# 应用IP集规则
sudo iptables -I INPUT -m set --match-set blacklist src -j DROP
sudo iptables -I INPUT -m set --match-set whitelist src -j ACCEPT

# 持久化配置
sudo ipset save blacklist -f /etc/ipset-blacklist
sudo ipset save whitelist -f /etc/ipset-whitelist

添加到/etc/rc.local实现开机自动加载:

ipset restore -f /etc/ipset-blacklist
ipset restore -f /etc/ipset-whitelist

三、专业防护工具部署

1. Fail2Ban安装配置

安装 Fail2Ban 防御暴力破解:

sudo apt install fail2ban

创建自定义配置文件/etc/fail2ban/jail.local

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 86400

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
maxretry = 3
bantime = 86400

[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = iptables[name=nginx-cc, port=http, protocol=tcp]
maxretry = 100
findtime = 60
bantime = 3600

重启服务:

sudo systemctl restart fail2ban

2. CFW(Cyber Firewall)高级防护

安装 CFW 进行深度防护:

sudo apt install -y curl ipset python3 git net-tools
curl https://raw.githubusercontent.com/Cyberbolt/cfw/main/install.py  | sudo python3
source ~/.bashrc

配置/etc/cfw/config.yaml

detection_frequency: 5
max_concurrent_connections: 50
blacklist_duration: 86400

管理黑白名单:

# 添加IP到黑名单
echo "192.168.1.101" | sudo tee -a /etc/cfw/ip_list/blacklist.txt

# 启动服务
sudo systemctl start cfw

3. 网络监控工具

安装流量监控工具:

sudo apt install ntopng vnstat iftop nethogs

配置 vnStat 监控接口:

sudo vnstat -u -i eth0
sudo systemctl enable vnstat

四、Web服务专项优化

1. Nginx防CC攻击配置

编辑/etc/nginx/nginx.conf

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
        listen 80;
        
        # 限制单个IP连接数和请求速率
        limit_req zone=one burst=20 nodelay;
        limit_conn addr 20;

        # 防止慢速攻击
        client_body_timeout 10s;
        client_header_timeout 10s;
        
        # 限制客户端请求体大小
        client_max_body_size 10m;
    }
}

测试并重载配置:

sudo nginx -t
sudo systemctl reload nginx

2. PHP防护设置(如适用)

修改/etc/php/7.x/fpm/php.ini

max_execution_time = 30     ; 减少PHP最大执行时间
max_input_time = 60         ; 限制输入时间
memory_limit = 128M         ; 限制内存使用
disable_functions = exec,system,passthru,shell_exec  ; 禁用危险函数

五、应急响应与监控

1. 实时监控设置

配置系统监控警报:

# 安装监控工具
sudo apt install sysstat

# 配置cron定时检查
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/bin/sar -u 5 1 | grep -v 'Average:' | awk '{if ($3 > 90) system(\"echo 'High CPU usage detected on $(hostname)' | mail -s 'CPU Alert' admin@example.com\")}'") | crontab -

2. 备份与恢复策略

确保有完整的备份方案:

# 每日全量备份
sudo tar -czvf /backups/full-$(date +%F).tar.gz --exclude=/backups --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/mnt --exclude=/tmp /

3. ISP协作预案

预先准备:

  • 记录 ISP 紧急联系方式

  • 了解 ISP 提供的 DDoS 清洗服务激活流程

  • 准备备用 IP 切换方案

六、云环境特殊考虑

如果使用云服务器:

  • 启用云提供商的 DDoS 防护服务(如 AWS Shield、Azure DDoS Protection)

  • 配置弹性负载均衡和自动扩展

  • 使用 CDN 分散流量(Cloudflare、Akamai 等)

  • 启用 Web 应用防火墙 (WAF)

总结与最佳实践

  1. 分层防御:从网络层到应用层构建多层防护

  2. 最小权限原则:所有服务以最低必要权限运行

  3. 持续监控:实时监控系统状态和网络流量

  4. 定期演练:模拟攻击测试防御有效性

  5. 及时更新:保持系统和安全规则更新

重要提示:完全防止 DDoS 攻击是不可能的,但通过上述措施可以显著提高服务器的抵抗能力,并减少攻击造成的影响。对于大规模攻击,最终可能需要依赖 ISP 或专业防护服务进行流量清洗。

实施这些配置后,您的 Debian 服务器将具备强大的防御能力来抵抗大多数 DDoS 和 CC 攻击。根据实际业务需求和服务器负载情况,可能需要进一步调整参数以获得最佳防护效果和性能平衡。


Debian 服务器防御 DDoS 与 CC 攻击的全面优化指南
https://uniomo.com/archives/debian-fu-wu-qi-fang-yu-ddos-yu-cc-gong-ji-de-quan-mian-you-hua-zhi-nan
作者
雨落秋垣
发布于
2025年08月23日
许可协议