服务器被攻击了怎么办?正确的处理顺序是:先断网隔离,再保留证据,然后分析原因并恢复备份,最后修复漏洞和加固防线,不要一上来就重装系统,那样会丢失溯源线索。
服务器被攻击了怎么办?第一时间按这个顺序做
很多站长遇到服务器被攻击,第一反应是找杀毒软件或者重装系统,但这样做容易把现场搞乱,攻击者的进程还活着,你一杀毒,他可能立刻删掉痕迹,正确做法是分三步走。
先断网隔离,别给攻击者留后门
攻击者通常不会只打一次,他可能在服务器里留了Webshell、计划任务、隐藏用户,甚至rootkit,断网是第一优先级,云服务器可以直接在控制台把安全组入站规则全部封禁,或者直接关机,物理服务器就拔网线,断网后攻击者无法再远程连接,也无法继续窃取数据或下载恶意程序,如果条件允许,先执行一下ps aux和netstat -an,把结果存下来再断网,能省掉后面很多排查功夫。
保留攻击现场,别急着删文件
恢复业务之前,先把日志和关键文件打包拷贝到本地或异地存储,重点看这几个位置:/var/log/auth.log(登录日志)、/var/log/nginx/access.log(访问日志)、/etc/crontab(计划任务)、~/.ssh/authorized_keys(SSH信任列表),用cp命令复制,不要原地修改,再用stat /tmp/xxx看文件修改时间,用lsof看被打开的文件,这些痕迹能帮你判断攻击者是怎么进来的,以及他做了什么。
判断攻击类型和影响范围
根据服务器的症状,基本能猜出攻击类型,CPU突然飙高、网络连接异常,多数是挖矿木马,网页被篡改、出现陌生文件,可能是Webshell上传,文件被加密、弹出勒索信息,那基本是勒索病毒,用top查看CPU占用最高的进程,用netstat -antlp查看可疑的外连IP,用find / -mtime -3 -type f列出最近三天被修改的文件,行业共识认为,绝大多数攻击是自动化扫描造成的,根源往往是弱口令或未修补的组件漏洞。
服务器被攻击后如何快速恢复业务
攻击确认后,尽快恢复业务是核心目标,但“恢复”不等于把恶意文件删掉就完事,很多服务器被二次攻击,就是因为没彻底清干净。
有干净备份,恢复速度最快
如果你有一份安全的备份,那就直接走恢复流程,先重装系统或者回滚到干净的快照,再挂载备份,这一步能直接清掉攻击者留下的所有后门,注意备份一定要放在异地或离线存储里,否则备份文件本身也可能被感染,恢复成功后,立刻强制修改所有管理密码和数据库密码,包括root密码、SSH密钥、API令牌。
没备份,就只能现场抢救
多数情况下的确没备份,那也别慌,按这几个步骤抢救。
- 杀掉异常进程,比如
kill -9,但先确认PID对应的是木马程序。 - 删除恶意文件,根据日志和文件时间定位,别用
rm -rf扫大范围目录。 - 修复被篡改的站点文件,用官方安装包覆盖,不要用被改过的文件。
- 轮换所有凭据,包括SSH密钥、FTP密码、数据库口令、云厂商API密钥。
做完这些,还得检查有没有后门,重点看/etc/passwd有没有新用户,crontab -l有没有陌生任务,/etc/ld.so.preload有没有可疑库,这步别省。
恢复业务前,先过一次安检
重新对外开放服务前,做这几项检查:
- 开放端口最小化,只保留80、443、22等必须端口,用
ss -tlnp确认。 - 检查监听端口是否绑定到公网,数据库和Redis不要暴露在0.0.0.0。
- 检查Web目录下是否有
.php、.jsp等可执行文件混入,上传目录要禁止执行。 - 检查启动项,比如
/etc/rc.local、systemd服务目录有没有异常。
全部通过后,再逐步放行流量,建议先只开放源IP,测试没问题再全放。
服务器被攻击怎么防止再次发生
恢复只是第一步,防不住下次等于白忙,攻击者的手法会升级,但基础的防线永远有效。
账号和口令是第一道防线
禁用root远程登录,改用普通用户加上sudo,SSH使用密钥登录,禁止密码登录,密码要随机生成,长度至少16位,不要用生日和姓名,改掉常见端口,比如把SSH放到10022,虽然挡不住专业扫描,但能过滤掉大部分脚本小子,装个fail2ban,连续输错几次密码就封IP,效果很直接。
系统和应用要做减法
在操作系统层面,删除不需要的软件包,关闭用不到的服务,在应用层面,给Web目录设置属主和权限,比如chown -R www:www /var/www,上传目录直接去掉执行权限,数据库账号只给必要的库权限,不要用root连接应用,后台管理路径换一个不好猜的URL,同时加IP白名单,云服务器安全组只放行业务需要的端口,其他全部拒绝。
用低成本方案建立基础监控
不需要上很贵的SIEM,先用最简单的脚本把自己从“黑盒”里捞出来,写一个cron任务,每天把last登录记录、top的关键进程、find /var/www -mtime -1的改动文件发送到邮箱,再用云监控或开源工具netdata设置CPU、内存、磁盘的告警阈值,一旦服务器出现异常,你能在一个小时内知道,而不是等到被用户投诉,这是防止再次发生的关键。
不同攻击场景下的应急要点
不同攻击类型,紧急程度和操作方法不太一样,下面列一个快速对比。
| 攻击类型 | 核心症状 | 第一步操作 | 恢复后重点 |
|---|---|---|---|
| 勒索病毒 | 文件被加密,后缀异常 | 立刻断网,防止加密扩散 | 离线备份、补丁更新 |
| 挖矿木马 | CPU占用高,外联矿池 | 断网,kill进程,删计划任务 | 最小化端口、监控资源 |
| WebShell | 网页被改,出现恶意文件 | 删除文件,禁用上传目录执行 | 文件监控、WAF规则 |
| DDoS | 带宽耗尽,服务不可达 | 联系云厂商开启高防或黑洞 | 高防IP、CDN清洗 |
关于服务器被攻击的常见问题
服务器被攻击了怎么办?要报警吗?
建议保留好日志和恶意文件样本,如果涉及勒索病毒或数据大规模泄露,可以向当地网警报案,但大多数网站被攻击只是被刷了流量或挂了木马,损失不大,报警优先级不高,先把服务器恢复并加固,才是实际问题。
服务器被攻击恢复要多久?
有完整备份的情况下,几个小时就能恢复,没有备份的话,需要手动清理和分析,通常要花一到两天,业内专家指出,攻击进程就算删了,残留的权限修改和隐藏文件仍会带来很大隐患,所以宁可多花时间检查,也不要草率上线。
清理完攻击后,为什么还会再次被入侵?
因为攻击者不会只放一个文件,他可能在/etc/rc.local、计划任务、SSH配置、Web配置文件里都埋了后门,只删你看到的木马,隐藏的后门过几天又会把木马拉回来,彻底的办法是重装系统或从干净快照恢复,然后逐项检查账号和计划任务。