服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-03 更新于 2026-09-03 简米科技 5,034 字 12 分钟阅读

半夜被攻击无人值守怎么应急处理,网站深夜被黑怎么办

导读半夜发现服务器被攻击,而你身边没有同事也没有运维值班电话时,最正确的做法不是立刻去查攻击源头,而是先断网隔离、再去备份日志、最后才考虑恢复服务,这个顺序能帮你把损失控制在最小范围,同时保住最能追查攻击者的证据,很多人在这个节骨眼上容易慌,鼠标乱点,反而把系统搞得更糟,下面这份清单,就是专门给你这种“孤军奋战”的……

半夜发现服务器被攻击,而你身边没有同事也没有运维值班电话时,最正确的做法不是立刻去查攻击源头,而是先断网隔离、再去备份日志、最后才考虑恢复服务。这个顺序能帮你把损失控制在最小范围,同时保住最能追查攻击者的证据,很多人在这个节骨眼上容易慌,鼠标乱点,反而把系统搞得更糟,下面这份清单,就是专门给你这种“孤军奋战”的情况准备的。

半夜被攻击时,先做这三件事能保命

半夜爬起来发现网站打不开、CPU跑满、数据库被锁,这时候人容易懵。第一优先级不是“修好”而是“止血”,如果攻击者还在你的系统里,你每多等一分钟,数据就多泄露一分。

第一步:立即断开服务器公网连接,但别关电源

这是最关键的动作,也是最容易做错的地方。

  • 不要直接去云控制台点“关机”,也不要直接拔网线。
  • 正确做法:在SSH窗口里(如果你还连得上的话)立即执行 iptables -I INPUT -s 0.0.0.0/0 -j DROP,或者更粗暴的方式是直接执行 systemctl stop network(CentOS 7/8)或 systemctl stop NetworkManager(部分新版系统)。
  • 如果你连SSH都已经断开了,就去云服务商控制台,找到“安全组”,把入站规则全部改为拒绝,或者直接把这台机器“移出安全组”。

这样做的好处是:内存里的进程不会被终止,证据链不会断,关机等于把攻击者的痕迹给“格式化了”,尤其是那些常驻内存的马,一关机就什么都没了。

第二步:保存当前的进程快照和网络连接状态

断网之后,你有一个短暂的时间窗口来做这件事,这时候服务器还是“热”的,攻击者的后门进程还在跑。

按顺序执行这三条命令,并把输出全部留存:

ss -tlnp > /tmp/network_connections.txt
ps aux > /tmp/process_list.txt
lsof +L1 > /tmp/deleted_files.txt

lsof +L1 这条命令特别关键,它能列出“被删除但仍然占用磁盘空间的文件”,这就是攻击者最常见的藏马手法。这些文件在磁盘上看不到,但还在内存里运行,把这个输出保存好,等天亮了交给专门做应急响应的同事或第三方服务商,这是最有价值的取证材料。

第三步:自己先看一眼“最可疑的那个进程”

不需要什么高级工具,用系统自带的 tophtop 就够了,按 CPU 使用率排序,看到哪个进程名字特别怪(比如一串乱码、或者看起来像系统文件但又不在正常路径里),立刻记下它的 PID。

然后用 ls -l /proc/该PID/exe 看看这个进程是从哪个文件启动的,如果是像 /tmp/dev/shm/var/tmp 这种目录里跑起来的,那基本实锤是攻击者的东西。

半夜服务器被攻击怎么办?先确认你对“被攻击”的判断准不准

有一种情况比被攻击更可怕,那就是误判,半夜眼花,看到CPU高了就以为被入侵,把自己吓得半死,结果只是白天写的脚本有死循环,所以断网之后,先花三分钟确认一下到底是真攻击还是假警报。

半夜被攻击无人值守怎么应急处理,网站深夜被黑怎么办

三种最容易被误判为攻击的“正常异常”

  • 日志服务狂写磁盘rsyslogdjournald 占满IO,这通常只是日志文件没做轮转,不是入侵。
  • PHP-FPM 进程爆炸:如果站点是 WordPress 或 ThinkPHP,半夜被采集器爬了一遍,php-fpm 进程会短时间内激增,看起来像CC攻击,实际只是慢查询堆积。
  • MySQL 的 binlog 暴涨:半夜跑定时任务批量更新数据,binlog 文件会快速膨胀,磁盘瞬间打满,看起来像被挖矿写文件,其实只是没做定时清理。

判断标准很简单:看 top 里CPU占用最高的进程名,如果是 mysqldphp-fpmjava 这种你认识的,基本是负载问题;如果出现不认识的名字,或者 bashcurlwget 这种不该出现的高频进程,那才是真正的攻击。

攻击的常见套路:看看你中招的是哪一类

行业共识认为,针对Windows和Linux服务器的入侵攻击,绝大多数发生在凌晨2点到5点之间,这个时段人为值守最薄弱,攻击手法翻来覆去就那么几种,你可以对照行为来判断:

攻击类型 典型特征 你该重点查的地方
挖矿木马 CPU飙到100%,进程名伪装成syskworkersystemd crontab -l,检查计划任务
勒索病毒 文件后缀被改,出现 README.txt 之类的勒索信 磁盘根目录和 web 目录的最近修改文件
后门/Webshell 网站被植入eval($_POST)之类的代码 find /www/wwwroot -name '.php' -mtime -3
DDoS流量攻击 带宽打满,连接数爆炸,但CPU不高 查看 ss -s 的 estab 数量

无人值守时网站被攻击的应急处理步骤:先留后路再动手

如果你已经断网、保存了快照,接下来要做的就是“留存后路”,这一步是为了防止攻击者在你恢复之后卷土重来。

备份关键证据:不只是日志

很多人以为备份就是打包一下 access.log,其实远远不够,你需要备份的是:

  • /var/log/ 目录下所有日志(包括 securewtmpbtmp 以外的那些不太起眼的日志)
  • /tmp/var/tmp/dev/shm 这几个目录的文件列表(不用复制内容,只 ls -la 就行)
  • crontab -l 的输出(攻击者最喜欢在这里挂定时任务)
  • /etc/passwd/etc/shadow 的最后修改时间(看看有没有新增系统用户)

把这些打包成一个 tar 文件,有条件就传到另一台干净的机器上保存,没条件就放到云服务商的对象存储里去。注意,不要放到被攻击的这台机器上

半夜被攻击无人值守怎么应急处理,网站深夜被黑怎么办

,不然你清理完木马,再从这个压缩包里恢复文件,等于二次中毒。

判断残留风险:查看“异常登录”和“新增用户”

这一步比备份更重要,因为你要回答一个问题:攻击者是不是已经成了系统的“合法用户”?

执行 last -f /var/log/wtmp 查看最近登录记录,特别留意那些非正常时间段(比如凌晨1点到4点)的IP,再执行 awk -F: '$3==0 {print $1}' /etc/passwd 查看 uid 为0的用户,除了 root 之外如果还有其他用户名,那你这台机器基本已经属于攻击者的了。

如果发现新增了类似 testguestsysdba 这种明显不正常的用户,说明攻击者已经拿到了稳定后门,单纯的杀毒清马已经没有意义,强烈建议直接备份业务代码和数据库,然后重装系统

被攻击后网站恢复服务的先后顺序:别急着把网线插回去

断网后如果手忙脚乱地恢复了服务,攻击者很可能在一分钟之内又进来,这里的核心原则是:先摘除后门,再恢复数据,最后恢复服务

先杀掉“正在跑的东西”

那些被改过的可执行文件,一启动就会重新感染系统,所以顺序是:

  1. 杀掉可疑进程pkill -9 可疑进程名,利用之前 ps aux 看到的那个结果。
  2. 清理计划任务crontab -r 清空当前用户的计划任务,同时检查 /etc/cron.d//var/spool/cron/ 目录下有没有可疑的定时脚本。
  3. 清理启动项:检查 systemctl list-unit-files | grep enabled 的输出,把那些不认识的、最近才启用的服务直接 systemctl disable 掉。

再决定“重新上线”的时机

在重新对外提供服务之前,至少确认以下三项:

  • SSH 密码已经改掉(最好是改成密钥登录)
  • 云控制台的安全组已经收紧,只保留 8044322 这几个必要的端口
  • Web 目录下的核心文件已经用 md5sum 做过校验,和备份比对过没有异常

做完这些,再恢复网络连接。宁愿多花半小时检查,也不要急这半小时结果又被打穿,业内人士指出,相当一部分二次被攻击的情况,都是因为第一次清理不彻底、急着上线导致的。

半夜被攻击没人处理的情况下,你平时还能做什么准备

应急处理只能止损,真正的解法在事前,如果你经常需要半夜处理这类问题,说明你的基础防御配置有漏洞。

至少装一个“能喊醒你”的监控

半夜被攻击最常见的不是“被攻击”,而是“被攻击完你自己不知道”,其实更大的问题是,很多服务器被攻陷后不会立刻表现出宕机或高负载,攻击者会悄悄潜伏好几天。

所以你应该确保自己有电话级别的告警通道,比如云厂商自带的云监控(简米云云监控、酷番云拨测),或者更省事的方案是用 UptimeRobot 之类的第三方监控服务(不涉及备案要求),配置很简单:只要CPU超过80%持续5分钟,或者指定端口不再响应,就直接打给你的手机。

半夜被攻击无人值守怎么应急处理,网站深夜被黑怎么办

短信告警容易被忽略,电话响了才能把你叫醒

写一份“傻瓜式”的处理脚本并放在桌面

平时花十分钟写一个应急脚本,半夜能省半小时的慌乱时间,这个脚本不需要多智能,只需要能一次性完成上面第一第二模块的操作:

#!/bin/bash
# save_evidence.sh
mkdir -p /evidence_$(date +%Y%m%d_%H%M%S)
cd /evidence_$(date +%Y%m%d_%H%M%S)
ss -tlnp > network.txt
ps aux > processes.txt
lsof +L1 > deleted_files.txt
crontab -l > crontab.txt
cp /etc/passwd ./
cp /etc/shadow ./
echo "evidence saved. Now dropping network..."
iptables -I INPUT -s 0.0.0.0/0 -j DROP

把这个脚本放到 /root/ 目录下,并在手机里存一个打开终端执行它的备忘录,真到了半夜出事那一刻,你只需要一行命令就能完成止血和取证两个步骤。

凌晨三点被攻击,这几件事千万不要做

大家都在说“该做什么”,这里反过来提醒一下“鬼打墙”的操作,这些行为会让局面变得更糟糕。

别去云控制台“重启”或“制作镜像”

很多人第一反应是“做个镜像留证据再说”,然后就去控制台点“创建自定义镜像”,发现一直卡在“正在创建”转了半天,因为磁盘在疯狂写入,镜像根本做不完,有的更着急,直接点了“重置系统”,所有日志和证据瞬间清零,攻击者痕迹彻底消失。

别一个人去“追踪”攻击者的IP

半夜情绪容易上头,看到日志里有一个IP,就想用 ping 或者 traceroute 去打一下对方,这个行为没有任何意义,攻击者用的IP大多是跳板或被控的肉鸡,你追查不到真实位置,反而暴露了自己的处置意图,把这个IP记录下来,提交给云厂商的工单系统,让他们做封堵和溯源,这才是你的职责边界。

Q&A:关于半夜应急的常见疑问

问:半夜被攻击时,如果手边没有电脑只有手机,能应急吗?
答:可以,但仅限于“断开网络”,几乎所有主流云厂商的App都支持在手机上修改安全组规则,你可以登录App把入方向规则改成全部拒绝,这比任何命令都快,但取证和清理工作必须依赖电脑和SSH工具,手机只能做到最基础的物理隔离。

问:如果我的数据和备份全被加密了,还有机会恢复吗?
答:这取决于攻击者使用了哪种加密方式,通过现有情报来看,大部分被勒索病毒加密的数据,如果没有对应的私钥,靠暴力破解几乎没有希望,你应该立刻确认备份是否存在,以及备份是否与本地服务器物理隔离,如果有“隔离的离线备份”,直接通过重装系统、迁移数据来恢复即可,不要和攻击者谈条件或付费,无论是否付费,都建议你拨打 12321 网络不良与垃圾信息举报受理中心的电话同步举报,虽然不是执法机关,但无法直接帮你找回数据。唯一的捷径是恢复离线的异地快照或备份,本地磁盘上的数据基本不做指望。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱