服务器被植入后门怎么查:常用检测命令与手工排查步骤 核心要点图解,先断网留证据再排查,避免攻击者察觉后清除痕迹。;进程与网络连接要交叉比对,孤立的外联进程最可疑。;定时任务、启动项、SSH公钥是三大持久化重灾区。;排查完必须改密码、清公钥、补漏洞,否则会二次入侵。
服务器被植入后门怎么查:常用检测命令与手工排查步骤 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 先断网留证据再排查,避免攻击者察觉后清除痕迹。
  • 进程与网络连接要交叉比对,孤立的外联进程最可疑。
  • 定时任务、启动项、SSH公钥是三大持久化重灾区。
  • 排查完必须改密码、清公钥、补漏洞,否则会二次入侵。

凌晨收到告警:CPU 跑满、带宽异常、网站被挂马——多数运维的第一反应是重启,但重启往往让攻击者留下的内存马、临时文件与日志线索一起消失。服务器被植入后门后,真正决定处置成败的是排查顺序与证据保全。本文给出一套可直接照做的检测命令与手工排查步骤,覆盖进程、网络、持久化与Web目录四大方向,帮你把后门找出来、清干净。

一、先隔离再取证:排查前的三条纪律

动手前先明确原则,否则越查越乱:

  • 限制出站而非直接关机:在安全组或iptables中封禁异常外联,保留现场;
  • 保留证据:备份/var/log/、ps输出、ss结果到外部介质,攻击者常清理auth.log;
  • 记录时间线:记下发现时间、异常进程PID、可疑文件路径,便于后续溯源。
提示:若怀疑内核级Rootkit,优先做内存镜像,再考虑重启。

二、进程与网络连接:交叉比对找异常

后门要通信,必然留下进程与连接。先看进程树,再看网络:

ps auxf
ps -eo pid,ppid,user,etime,cmd --sort=-%cpu | head -20
ls -l /proc/<PID>/exe
ss -antp
ss -antp | grep ESTAB

判断依据:

  • 可执行文件路径位于/tmp、/dev/shm、/var/tmp或显示(deleted);
  • 进程名伪装成[kworker]、sshd但父进程异常;
  • 对外连接指向陌生IP的高位端口,且无对应业务。

用lsof -p <PID>看打开的文件与套接字,用cat /proc/<PID>/cmdline | tr '

' ' '还原真实启动参数。发现可疑进程先kill -STOP而非直接杀,保留现场。

三、持久化排查:定时任务、启动项与SSH公钥

攻击者要长期驻留,通常在这三处下手,逐项检查:

1. 定时任务

crontab -l
ls -la /var/spool/cron/ /var/spool/cron/crontabs/
cat /etc/crontab /etc/cron.d/* /etc/rc.local

重点看含curl、wget、base64 -d、/dev/tcp的条目,以及指向隐藏目录的脚本。

2. 启动项与服务

systemctl list-unit-files --state=enabled
ls -la /etc/init.d/ /etc/rc*.d/
cat /etc/ld.so.preload

/etc/ld.so.preload非空是典型用户态Rootkit特征,务必核对。

3. SSH后门

find / -name authorized_keys -exec ls -l {} \;
awk -F: '==0{print}' /etc/passwd
grep -v '^#' /etc/ssh/sshd_config

核对每条公钥指纹,检查是否有UID为0的新增账户、AuthorizedKeysFile是否被改到异常路径。

四、Web目录与文件完整性:查WebShell与篡改

Web入口是重灾区,按“时间+特征”双维度筛:

find /var/www -type f \( -name '*.php' -o -name '*.jsp' -o -name '*.aspx' \) -mtime -7
find /var/www -type f -perm -o+w
grep -rEl 'eval\(|assert\(|base64_decode\(|Runtime.getRuntime' /var/www

再校验系统文件是否被替换:

rpm -Va --nofiles --nodigest
debsums -r / 2>/dev/null | grep -v OK

对于混淆马,关键字常被拆分拼接,建议配合静态查杀工具扫描后再人工复核可疑文件。

五、排查清单与处置顺序

检查项命令可疑信号
进程ps auxf路径在/tmp、已删除文件
网络ss -antp陌生IP外联
定时任务crontab -lcurl下载执行
SSH公钥find -name authorized_keys陌生指纹
文件完整性rpm -Va系统命令被改

处置顺序建议:隔离出站 → 停可疑进程 → 删除持久化(公钥、定时任务、启动项、恶意账户)→ 重置全部密码与密钥 → 升级漏洞应用 → 校验文件完整性。顺序颠倒容易“清了又回来”。

行动建议:把上述命令固化为一键巡检脚本,每周跑一次并留存基线;同时部署文件监控与主机层防护,例如 AegisX 的入侵检测与Web防护能力可对异常进程、WebShell写入与恶意外联做持续告警,把“事后排查”变成“事中阻断”。排查完成后务必复盘入口,确认漏洞已修补,否则二次入侵只是时间问题。

常见问题(FAQ)

服务器发现可疑进程,第一步应该做什么?

先隔离再取证。立即在安全组或防火墙限制出站,保留内存与日志证据,不要急着重启。然后用ps auxf看进程树、ls -l /proc/PID/exe确认可执行文件路径、ss -antp比对监听与外联,重点看路径在/tmp、/dev/shm、隐藏目录或已删除文件的进程。

怎么判断服务器是否被留了SSH后门?

检查authorized_keys与sshd配置。执行find / -name authorized_keys -exec ls -l {} \;查看所有公钥文件及修改时间,核对每一条公钥指纹;再检查/etc/ssh/sshd_config是否有异常Port、PermitRootLogin、AuthorizedKeysFile指向非默认路径,以及/etc/passwd中新增的UID 0账户。

WebShell一般藏在哪些目录,怎么快速找?

优先查上传目录与可写目录。用find定位近期修改的php/jsp文件,如find /var/www -type f \( -name '*.php' -o -name '*.jsp' \) -mtime -7,再结合grep搜索eval、assert、base64_decode、Runtime.getRuntime等特征串。注意混淆马会拆分关键字,需配合静态查杀工具与人工复核。

定时任务和启动项该怎么排查后门?

定时任务是重灾区。执行crontab -l查当前用户,遍历/var/spool/cron/下所有文件,检查/etc/cron.d、/etc/cron.daily及/etc/rc.local;启动项看systemctl list-unit-files --state=enabled与/etc/init.d。陌生脚本、curl下载执行、base64编码命令基本都是后门。

排查完成后还需要做哪些收尾工作?

必须切断持久化并修补入口。删除恶意账户与公钥、清理定时任务与启动项、重置所有账号密码与密钥、升级存在漏洞的应用版本,最后用rpm -Va或debsums校验系统文件完整性,并部署文件监控与WAF持续防护,防止二次植入。