前言
服务器被攻击是每个运营者都可能面临的紧急情况。
攻击发现的那一刻,很多人第一反应是慌乱——不知道该先做什么,手忙脚乱地乱操作,反而可能让情况更糟。
本文提供一套经过实战验证的应急处理框架,按照正确的优先级顺序,把"发现攻击→控制损失→排查原因→完全恢复→预防复发"这五个阶段的每一步讲清楚。
遭遇攻击时,打开这篇文章,按步骤执行。
一、先判断攻击类型:对症下药
不同类型的攻击,处理方式完全不同。先花5分钟判断攻击类型,避免走弯路。
常见攻击类型快速判断
症状:网站无法访问,服务器带宽跑满,CPU/内存正常 → DDoS流量攻击(最常见)
症状:网站可以访问,但速度极慢,CPU接近100% → CC攻击(HTTP Flood,应用层DDoS)
症状:网站被篡改(出现陌生内容、跳转到其他网站) → 网站被挂马/页面篡改
症状:收到勒索邮件,数据库文件被加密或删除 → 勒索软件攻击
症状:服务器CPU持续异常高,运行了陌生进程 → 挖矿木马感染
症状:发现陌生的后台账号、SSH登录记录异常 → 服务器被入侵,权限可能已被控制
二、DDoS攻击应急处理
立即处理步骤
第一步:确认是DDoS还是正常流量高峰
# 查看当前网络连接数
netstat -an | grep ESTABLISHED | wc -l
# 查看连接最多的IP
netstat -an | awk '/tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn | head -20
如果某几个IP的连接数异常高(正常单IP连接不超过10~20个),且总连接数远超平时,基本可以确认是攻击。
第二步:立即联系机房开启流量清洗
DDoS攻击超出普通服务器的防御能力,必须依赖机房级别的流量清洗。
立即联系网宝技术支持(工单或QQ),说明遭受DDoS攻击,提供服务器IP,请求开启高防清洗服务。专业机房的流量清洗响应时间通常在5~15分钟内。
第三步:临时封堵攻击源IP
在流量清洗开启之前,可以临时封堵明显的攻击源IP:
# 封禁单个攻击IP
iptables -I INPUT -s 攻击IP -j DROP
# 批量封禁某个IP段
iptables -I INPUT -s 攻击IP段/24 -j DROP
# 查看已封禁的规则
iptables -L INPUT -n --line-numbers
第四步:如果攻击持续,考虑临时切换IP
如果流量清洗暂时无法开启,且攻击导致整台服务器完全瘫痪,可以:
- 申请更换服务器IP(联系IDC处理)
- 临时将域名解析切换到Cloudflare代理,隐藏真实IP
三、CC攻击(HTTP Flood)应急处理
CC攻击比DDoS更难处理,因为攻击流量看起来像正常用户请求。
识别CC攻击
# 查看Nginx访问日志中请求最多的IP
awk '{print $1}' /www/wwwlogs/你的域名.log | sort | uniq -c | sort -rn | head -20
# 查看访问最多的URL
awk '{print $7}' /www/wwwlogs/你的域名.log | sort | uniq -c | sort -rn | head -20
正常用户每分钟对同一个URL的请求不超过10次,如果某个IP每分钟请求同一URL数百次,几乎可以确认是CC攻击。
处理步骤
第一步:在Nginx配置中限制请求频率
在网站的Nginx配置文件中添加:
# 定义限速规则
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
# 应用限速规则(超出频率的请求返回503)
limit_req zone=one burst=20 nodelay;
# 返回503时的提示页面
error_page 503 /503.html;
}
第二步:封禁攻击IP或IP段
# 封禁单IP
iptables -I INPUT -s 攻击IP -j DROP
# 如果是同一网段的大量IP,封禁整个C段
iptables -I INPUT -s 攻击IP/24 -j DROP
第三步:开启Cloudflare并启用"Under Attack Mode"
如果已经接入Cloudflare,在Cloudflare控制台开启"I'm Under Attack Mode",所有访问者在进入网站前需要通过JavaScript挑战,自动过滤大量机器人请求。
第四步:在宝塔面板开启WAF防护
宝塔WAF具备CC防护功能,可以自动识别和封禁异常频率的请求。
四、网站被挂马/页面篡改应急处理
立即处理步骤
第一步:立即下线网站
在宝塔面板中关闭网站(或在Nginx配置中临时返回维护页面),防止被篡改的页面继续传播恶意代码或影响更多用户:
# 临时关闭网站,返回维护提示
server {
return 503;
error_page 503 /maintenance.html;
}
第二步:找出被篡改的文件
# 查找最近24小时内被修改的PHP文件
find /www/wwwroot/你的域名 -name "*.php" -mtime -1
# 查找包含常见恶意代码特征的文件
grep -r "eval(base64_decode" /www/wwwroot/你的域名
grep -r "system(" /www/wwwroot/你的域名
grep -r "<iframe" /www/wwwroot/你的域名
第三步:对比备份,确认被篡改的范围
从备份中恢复干净的文件,或将当前文件与备份对比,找出所有被修改的文件。
第四步:找出攻击入口
分析Nginx访问日志,找出攻击者是通过哪个请求上传了恶意文件:
# 查找POST请求(文件上传通常是POST)
grep "POST" /www/wwwlogs/你的域名.log | grep -v "200"
grep "POST" /www/wwwlogs/你的域名.log | awk '{print $1,$7}' | sort | uniq -c | sort -rn
常见入口:WordPress插件漏洞、文件上传功能未过滤、管理后台弱密码。
第五步:修复漏洞,从备份恢复
找出攻击入口后,修复对应漏洞,然后从干净的备份恢复网站文件。
五、勒索软件攻击应急处理
勒索软件是最严重的攻击类型之一,数据被加密后如果没有备份几乎无法恢复。
立即处理步骤
第一步:立即隔离服务器
在IDC控制台或联系技术支持,将服务器的网络连接断开,防止勒索软件继续扩散到其他服务器或备份系统。
第二步:不要立即重启服务器
部分勒索软件在服务器重启后会删除加密密钥,重启可能让数据永久无法恢复。在确认情况前不要随意重启。
第三步:评估数据损失范围
查看哪些目录的文件被加密,被加密的文件通常会有特殊后缀(如 .locked、.encrypted、.DECRYPT等)。
第四步:检查是否有可用备份
- 检查宝塔面板的定时备份是否完好
- 检查是否有异地备份(FTP、OSS等)
- 如果有完好备份,可以从备份恢复数据
第五步:如果没有备份
- 向安全公司求助,部分勒索软件存在解密工具
- 不建议支付赎金(无法保证获得解密密钥,且助长攻击行为)
- 记录损失情况,配合后续安全加固
第六步:完全重建服务器
勒索软件感染后,即使数据恢复,也建议重新安装操作系统,彻底清除可能残留的恶意程序,再重新部署业务。
六、挖矿木马感染应急处理
挖矿木马通常不破坏数据,但会持续消耗服务器资源,影响业务性能,且可能成为进一步攻击的跳板。
识别挖矿木马
# 查看CPU占用最高的进程
top -bn1 | head -20
# 查找可疑进程(挖矿程序通常有特征性的进程名)
ps aux | grep -E "xmrig|minerd|cryptonight|stratum"
# 查看异常的网络连接(挖矿程序需要连接矿池)
netstat -an | grep ESTABLISHED | grep -v ":22\|:80\|:443"
清除步骤
第一步:终止恶意进程
# 找到恶意进程PID
ps aux | grep 可疑进程名
# 强制终止进程
kill -9 PID
第二步:找到恶意文件并删除
# 查找最近被创建的可执行文件
find / -type f -newer /etc/passwd -executable 2>/dev/null
# 查看计划任务(挖矿木马通常会添加计划任务保持存活)
crontab -l
cat /etc/crontab
ls /etc/cron.*
第三步:检查SSH密钥和账号
# 查看所有有登录权限的账号
cat /etc/passwd | grep "/bin/bash"
# 检查authorized_keys(是否有陌生的SSH公钥)
cat ~/.ssh/authorized_keys
第四步:更换所有密码和SSH密钥
服务器被入侵后,所有密码(root密码、数据库密码、FTP密码等)都应视为已泄露,全部更换。
七、攻击恢复后的加固清单
无论遭遇何种攻击,恢复后必须系统性地进行安全加固,否则还会再次被攻击。
必做加固项目
系统层面:
- 更新所有系统软件包到最新版本
- 修改SSH端口(如果还在用默认22)
- 禁止root直接SSH登录
- 使用SSH密钥替代密码登录
- 检查并关闭所有不必要的开放端口
- 删除所有陌生的系统账号
应用层面:
- 更新所有Web应用(WordPress、插件等)到最新版本
- 修改所有管理后台密码(数据库、Web应用、FTP等)
- 删除不使用的插件和主题
- 检查文件权限(网站文件不应有写权限给Web用户)
- 开启Web应用防火墙(WAF)
监控层面:
- 配置实时流量监控告警
- 设置异常CPU/内存占用告警
- 开启登录失败告警
- 配置文件完整性监控
备份层面:
- 立即创建一次完整备份(恢复后的干净状态)
- 确认定时备份策略正常运行
- <