服务器遭受DDoS攻击后如何恢复运行?
当服务器遭受 DDoS(分布式拒绝服务)攻击 后,恢复运行需要快速采取应急措施来缓解攻击影响,并在恢复后加强防护以减少未来攻击的风险。以下是详细的分步指南:
一、应急处理步骤
1. 确认服务器是否正在遭受 DDoS 攻击
- 典型症状:
- 网站或服务无法访问。
- 网络流量异常激增。
- CPU、内存或带宽资源被大量消耗。
- 服务响应速度极慢。
如何确认:
- 检查服务器流量:
- 使用工具(如
iftop
或netstat
)监控实时流量,查看是否有大量异常请求。
- 使用工具(如
- 查看日志文件:
- 检查 Web Server(如 Nginx、Apache)日志,是否有来自单一或少数来源 IP 的大量请求。
- 示例:
bash
复制
tail -f /var/log/nginx/access.log
- 查看连接数:
- 使用
netstat
查看是否有异常连接:bash
复制
如果连接数异常飙升,可判断为攻击。netstat -an | grep :80 | wc -l
- 使用
2. 启用服务器的基本防护机制
(1)启用防火墙
- 配置防火墙规则,限制恶意流量:
bash
复制
或使用 UFW(Ubuntu 防火墙):# 阻止特定 IP iptables -A INPUT -s <攻击IP> -j DROP # 限制单 IP 每秒请求数 iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/s --limit-burst 50 -j ACCEPT
bash
复制
ufw deny from <攻击IP>
(2)启用 SYN Cookies
- 针对 SYN Flood 攻击,可以启用 SYN Cookies 来缓解:
bash
复制
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
(3)限制连接数
- 修改 sysctl.conf 来优化网络防护:
bash
复制
保存后,执行net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_max_tw_buckets = 5000
sysctl -p
应用配置。
3. 启用服务商的 DDoS 防护
- 联系服务器提供商:
- 大多数云服务商(如 阿里云、腾讯云、AWS、Azure)提供 DDoS 防护服务,可能需要额外启用或升级套餐。
- 如香港的服务器提供商,通常提供 高防 IP 或防护带宽(如 10Gbps 或更高)。
- 免费防护:
- 如果使用香港或国际服务器,可以启用基础 DDoS 防护(一般能防御小规模攻击)。
4. 使用 CDN 或反向代理隐藏源站
- 启用 CDN:
- 如 Cloudflare、Akamai 等服务可以隐藏源站 IP,将攻击流量转发到 CDN 节点。
- Cloudflare 的 "Under Attack Mode" 可有效过滤恶意流量。
- 设置防护规则:
- 在 CDN 上配置访问速率限制、恶意 IP 阻止、浏览器验证等。
注意:隐藏源站 IP
- 确保攻击者无法直接找到服务器的真实 IP,否则攻击可能绕过 CDN,直接打击源站。
- 方法:
- 修改 DNS 记录,让所有流量通过 CDN。
- 配置服务器防火墙,仅允许特定的 CDN IP 段访问源站。
5. 关闭非必要服务
- 暂时关闭不必要的服务和端口,减少攻击面:
- 关闭未使用的端口:
bash
复制
然后关闭对应服务。netstat -tuln
- 停止非核心服务,优先保障主业务运行。
- 关闭未使用的端口:
二、恢复运行的步骤
1. 检查服务器状态
-
资源检查:
- 确认服务器的 CPU、内存、磁盘 I/O 是否恢复正常。
- 使用工具:
- Linux:
top
、htop
、vmstat
。 - Windows:任务管理器 > 性能。
- Linux:
- 确认网络带宽是否被释放。
-
连接检查:
- 查看当前连接是否仍有恶意流量:
bash
复制
netstat -an | grep ESTABLISHED
- 查看当前连接是否仍有恶意流量:
2. 清理僵尸连接
- 清除被攻击时遗留的半开连接或无效连接:
bash
复制
或直接重启网络服务:tcpkill -i eth0 host <攻击IP>
bash
复制
systemctl restart networking
3. 恢复业务服务
- 启动核心服务:
- 逐步恢复 Web 服务、数据库和其他应用服务,确保服务正常运行。
- 检查日志:
- 确认恢复后是否仍有恶意流量或攻击尝试。
4. 更新 DNS 缓存
如果更换了服务器 IP 或启用了 CDN,可能需要等待 DNS 缓存刷新。使用以下命令检查解析情况:
bash
复制
dig <域名>
确保用户访问的 IP 地址已经更新。
三、长期防护措施
1. 部署 Web 应用防火墙(WAF)
- 功能:
- 过滤恶意请求(如 SQL 注入、跨站脚本)。
- 限制每秒访问次数。
- 推荐服务:
- Cloudflare WAF、阿里云 WAF、AWS WAF。
2. 改善网络架构
(1)使用高防服务器
- 如果业务常受攻击,建议迁移到高防服务器或线路:
- 高防 IP:通过专用 DDoS 防护带宽过滤恶意流量。
- 高防 BGP:多线路接入,自动切换最优线路。
(2)分布式部署
- 将服务分布到多个节点,分散攻击流量。
- 使用负载均衡器(如 Nginx、HAProxy)在多节点之间分发流量。
3. 配置流量监控和报警
- 实时监控流量:
- 使用工具(如 Zabbix、Prometheus)配置流量监控和报警规则。
- 一旦发现异常流量,立即触发警报。
4. 限制访问速率
- 在 Web Server 上配置访问速率限制,减少应用层攻击的影响:
- Nginx 示例:
bash
复制
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20 nodelay; } } }
- Nginx 示例:
5. 定期更新和备份
- 更新系统和软件:
- 修复安全漏洞,减少被攻击的可能性。
- 备份数据:
- 定期备份服务器数据和配置,确保在攻击后可以快速恢复。
四、总结
当服务器遭受 DDoS 攻击后,恢复运行的关键步骤包括:
- 应急响应:快速启用防火墙、DDoS 防护、CDN,阻止恶意流量。
- 恢复服务:清理僵尸连接,检查服务器资源和网络状态,逐步恢复核心服务。
- 长期防护:部署 WAF、使用高防服务器、隐藏源站 IP,并优化网络架构。
通过上述措施,不仅能够快速应对攻击,还能显著提高服务器未来的抗攻击能力,从而保障业务的持续运行。