前言
上周我的一个网站被DDoS攻击了。流量峰值5Gbps,网站瘫痪4个小时。
这次经历让我从零搭建了一套完整的服务器安全防护体系。分享出来,希望对你有帮助。
应急处理
发现异常后,按以下顺序处理:
1. 开CDN挡流量
把域名切到Cloudflare,开启Under Attack模式。CDN可以吸收一部分流量,让源站压力减轻。
2. 限制请求频率
Nginx配置limit_req,限制单IP每秒请求数:
nginx
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
}
3. 配置fail2ban
自动封禁异常IP:
bash
apt install fail2ban
systemctl enable fail2ban
4. 联系VPS商做流量清洗
我用的薄荷云,工单提交后20分钟就回复了,帮我做了流量清洗。
长期防护方案
CDN防护
- Cloudflare免费版:基础DDoS防护
- Cloudflare Pro版($20/月):WAF + 高级DDoS防护
- 阿里云DDoS高防:适合大流量攻击
服务器加固
bash
# 修改SSH端口
sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config
# 禁止root登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 安装UFW防火墙
apt install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
自动备份
bash
# 每天凌晨3点自动备份数据库
0 3 * * * mysqldump -u root wordpress | gzip > /backup/wp_$(date +\%Y\%m\%d).sql.gz
服务器选择与安全
不同VPS商的安全防护能力差异很大:
- 薄荷云:基础DDoS防护,工单响应快(20分钟),适合个人和小型站点
- 阿里云:自带DDoS防护,高防版可选,适合商业站点
- 腾讯云:轻量服务器自带基础防护,安全组配置灵活
- 雨云:防护能力相对弱,适合个人站点
总结
服务器安全不是一次性工作,是持续的过程。平时多花时间做防护,出事时少损失。
备份是最后一道防线,不管防护做得多好,定期备份都不能省。