Linux 服务器入侵排查方法

1次阅读

Linux 服务器入侵排查方法

发现服务器异常时,快速定位是否被入侵是关键。重点看进程、网络连接、用户行为、启动项和日志这五类线索,不依赖单一工具,交叉验证更可靠。

检查异常进程与隐藏后门

恶意进程常伪装成合法服务或使用非常规名称。先用 ps aux –forest 查看进程树结构,关注父进程为 1(systemd)但名称可疑的进程,比如 /tmp/.x/dev/shm/sshd2 等路径下的二进制文件。

再结合 tophtop 观察 CPU、内存占用异常飙升的进程,注意无名进程(COMMAND 列显示为 [kthreadd] 类似但实际不是内核线程)。

  • ls -la /proc/[PID]/exe 查真实路径,软链接可能被篡改
  • 运行 strings /proc/[PID]/mem 2>/dev/NULL | grep -i “bash|nc|python|wget” 检查内存中是否加载了可疑脚本片段
  • 对比 rpm -Vacentos/RHEL)或 dpkg –verifydebian/ubuntu)输出,识别被替换的系统命令(如 ps、netstat、ls)

分析网络连接与监听端口

入侵者常开启反向 shell 或监听端口。用 ss -tulnp(比 netstat 更快更准)列出所有监听端口及对应进程,重点关注非标准端口(如 31337、54321)或绑定在 0.0.0.0 而非 127.0.0.1 的服务。

对 ESTABLISHED 连接,执行 ss -tnp 查看当前外连目标 IP 和端口,特别留意连接到境外 IP、已知 C2 域名或短生命周期高频连接。

  • lsof -i -P -n 辅助确认进程打开的 socket 细节
  • 检查 /etc/services 是否被添加伪造服务名,掩盖监听行为
  • 若发现无法 kill 的进程或端口,可能是 rootkit,需考虑离线镜像分析

核查用户账号与登录痕迹

新增隐蔽用户、提权账户、异常登录是常见入侵入口。检查 /etc/passwd 中 UID 0 的条目(不止 root),以及注释字段含“backup”“sync”等伪装关键词的账号。

查看登录日志:last 显示最近成功登录,lastb 查失败尝试;journalctl _COMM=sshd -u sshd –since “2 hours ago” 可过滤近期 SSH 认证事件

  • 比对 /var/log/auth.log(Debian)或 /var/log/secure(RHEL)中的 sudo 使用记录,排查绕过密码的提权操作
  • 检查 ~/.bash_history(尤其 root 和高权限用户),但注意攻击者常清空或伪造该文件
  • 运行 find /home -name “.ssh” -type d 2>/dev/null 查找未授权的公钥登录入口

审查开机启动项与定时任务

持久化机制是入侵维持的关键。检查 systemd 服务:systemctl list-unit-files –type=service | grep enabled,筛选非系统默认启用的服务。

同时扫描传统启动位置:/etc/rc.local/etc/init.d//etc/cron* 下的脚本,以及用户级定时任务:crontab -l(逐个用户执行)、ls /var/spool/cron/

  • 注意 cron 表达式中带“/2”、“*/5”等高频执行项,配合可疑脚本路径(如 /dev/shm/run.sh)
  • 检查 systemctl list-timers –all 查看活跃的 timer 单元,有些 rootkit 会注册隐藏 timer 启动 payload
  • 运行 find /etc/systemd/system/ -name “*.service” -exec grep -l “ExecStart=.*sh|/tmp|/dev/shm” {} ; 快速定位可疑服务定义
text=ZqhQzanResources