1. 事件初步判定与日志收集
- 目的:迅速确认是否为DDoS/入侵或应用层异常;收集证据。
- 步骤:登录 Linode 面板与 SSH;使用命令查看流量与连接:sudo ss -s、sudo netstat -anp | grep ESTAB;查看 Nginx/Apache 与应用日志:sudo tail -n 200 /var/log/nginx/access.log /var/log/nginx/error.log;导出日志到本地:scp root@your-ip:/var/log/nginx/access.log ./。
2. 立即缓解:临时屏蔽与限流
- 目的:在不改变业务架构下降低流量冲击。
- 步骤:使用 iptables/ufw 阻断异常 IP:sudo ufw deny from 1.2.3.0/24 to any;启用 nginx rate limiting:在 server 段加入 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s 和 limit_req zone=one burst=20;启用 fail2ban 保护 SSH:sudo apt install fail2ban 并配置 /etc/fail2ban/jail.local。
3. 切换到 CDN 前端(以 Cloudflare 为例)
- 目的:将边缘抹平恶意流量并利用 WAF 缓解。
- 步骤:1) 在 Cloudflare 添加站点并更换 DNS;2) 设置 SSL 为 Full(strict),开启“Under Attack Mode”临时防护;3) 在 Firewall Rules 中添加规则:Block by ASN/Country 或基于 URI、User-Agent 的匹配;4) 设置缓存策略:Page Rules 强制缓存静态资源并开启“Always Online”。
4. CDN 配置细化与原点保护
- 目的:防止恶意直接访问原点服务器(bypass CDN)。
- 步骤:1) 在 Linode 防火墙或 ufw 中只允许 CDN 的出口 IP 段访问 80/443(Cloudflare 可参考其 IP 列表);sudo ufw allow from 173.245.48.0/20 to any port 443;2) 为 nginx 增加 X-Forwarded-For 校验与真实 IP 恢复(real_ip_header);3) 在 CDN 上启用 Origin Shield/Origin Pull 限制频率。
5. 备份策略重组:多层次、异地与自动化
- 目的:确保节点被攻破或数据损坏时能快速恢复。
- 步骤:1) 快照:使用 linode-cli 做定期快照(linode-cli volumes snapshot-create --label snapshot-$(date +%F));2) 对象存储:将静态/备份文件同步到 S3 兼容服务(rclone 或 s3cmd),示例 rclone config 后 rclone sync /var/www s3:bucket/backup --backup-dir s3:bucket/backup-archive/$(date +%F);3) 增量备份:使用 restic 加密增量备份到对象存储,restic init/restic backup /var/www --host myserver;4) 数据库:使用 mysqldump + gzip 并上传:mysqldump -u root -p dbname | gzip > db-$(date +%F).sql.gz && rclone copy db-$(date +%F).sql.gz s3:bucket/db-backup/。
6. 自动化与保留策略
- 目的:避免人工疏漏,设置合理保留与验证。
- 步骤:1) 使用 cron 编排快照与备份脚本(/etc/cron.d/backup 写入调度);2) 保留策略示例:每日保留7天、周保留4周、月保留12月;3) 自动验证:编写 restore 测试脚本,定期在低成本实例上做恢复演练并验证文件与 DB 完整性(restic restore 和 mysql 导入)。
7. 恢复与切换流程演练(Runbook)
- 目的:在真实故障时按步骤快速恢复服务。
- 步骤:1) 降低 DNS TTL 以便快速切换;2) 若需切换到备用机房或云:提前准备镜像/容器镜像并上传到目标环境;3) 恢复顺序:先恢复数据库 -> 恢复应用代码 -> 恢复静态文件 -> 切换负载均衡与 CDN;4) 测试端点并逐步放量。
8. 日常运维与监控建议
- 目的:用监控与告警提前发现攻击趋势。
- 步骤:1) 部署 Prometheus + Grafana 或使用 Cloud Monitoring,监控流量、连接数、5xx 率;2) 设置告警:如 1 分钟内请求数超阈值、CPU 持续高于80%、磁盘写异常;3) 定期审计防火墙规则与 CDN WAF 规则效果。
9. Q1:Linode 日本机房被攻击时首要做什么?
- 回答:首先收集日志并判断攻击类型(DDoS/应用层/入侵),然后立即临时限流与屏蔽异常IP,启用 CDN 的“Under Attack Mode”并将原点仅允许 CDN IP 访问,接着开启备份与恢复演练准备。
10. Q2:如何保证备份在机房被攻陷时依然安全?
- 回答:使用异地备份(对象存储或其他云区)、加密(restic/duplicity)、自动上传与多副本、设置最小权限 API key,并定期做恢复演练验证备份可用性。
11. Q3:CDN 与原点之间如何防止被绕过?
- 回答:仅允许 CDN 的出口 IP 段访问原点端口,验证真实 IP 并拒绝直连;同时在 CDN 上启用 WAF、速率限制与地理封锁规则,必要时使用客户端证书或 Origin Pull Token 增强校验。
来源:linode 日本机房被攻击 后 CDN 与备份策略的优化实战案例