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 sshd3. 内核参数优化
编辑/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 save3. 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 fail2ban2. 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 cfw3. 网络监控工具
安装流量监控工具:
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 nginx2. 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)
总结与最佳实践
分层防御:从网络层到应用层构建多层防护
最小权限原则:所有服务以最低必要权限运行
持续监控:实时监控系统状态和网络流量
定期演练:模拟攻击测试防御有效性
及时更新:保持系统和安全规则更新
重要提示:完全防止 DDoS 攻击是不可能的,但通过上述措施可以显著提高服务器的抵抗能力,并减少攻击造成的影响。对于大规模攻击,最终可能需要依赖 ISP 或专业防护服务进行流量清洗。
实施这些配置后,您的 Debian 服务器将具备强大的防御能力来抵抗大多数 DDoS 和 CC 攻击。根据实际业务需求和服务器负载情况,可能需要进一步调整参数以获得最佳防护效果和性能平衡。