Linux服务器被入侵_入侵排查思路

9次阅读

linux 服务器入侵排查需从账号、进程、文件、日志、计划任务、网络六维度交叉验证:查 uid= 0 及远程可登录账户;用 rpm-vf 校验 ps 等命令是否被替换;搜近期修改、隐藏文件及自启项;通过 last、secure 日志和。bash_history 关联 ip 与操作行为。

Linux 服务器被入侵_入侵排查思路

Linux 服务器被入侵后,排查不能只靠一两个命令,得从账号、进程、文件、日志、计划任务、网络六个维度交叉验证。很多攻击者会替换系统命令(如psnetstat)、清空日志、创建隐藏账户,所以必须用可信方式比对、避免依赖已被污染的工具。

查账号:重点看 UID=0、远程可登录、sudo 权限

攻击者常新建高权限账户或复用弱口令账户。先确认哪些用户能真正登录:

  • awk -F: '$3==0 {print $1}' /etc/passwd —— 找出所有 root 权限用户(不止 root)
  • awk -F: '/$1|$6/ {print $1}' /etc/shadow —— 列出密码已设置(即支持远程登录)的账户
  • grep -v '^#|^s*$' /etc/sudoers | grep 'ALL=(ALL)' —— 查看除 root 外谁有 sudo 权限
  • 对比 /etc/passwd 和正常基线,关注新增用户(可用 find /etc -name "passwd" -mtime -7 快速定位近期改动)

查进程:警惕被替换命令、异常父进程、隐蔽命名

直接运行 pstop可能被劫持。建议:

  • 检查关键命令是否被篡改:rpm -Vf /bin/ps /usr/bin/top /bin/netstat(CentOS/RHEL);若无 rpm 数据库或输出异常(如显示 SM5…….T),说明二进制可能被替换
  • ls -la /proc/[0-9]*/exe 2>/dev/null | grep -v "no such" 查看所有进程的真实路径,留意指向 /tmp/dev/shm 或名字带点(如.x..1)的进程
  • ps -eo pid,ppid,comm,args --sort=-pcpu | head -20 看 CPU 占用高的进程及其父进程,异常进程常由 initsystemd之外的进程拉起

查文件与启动项:找最近修改、隐藏文件、自启配置

后门程序往往通过定时任务、开机脚本或服务持久化:

  • 搜 7 天内修改的可疑文件:find / -type f -mtime -7 -name "*php*" -o -name "*sh" -o -name "*.so" 2>/dev/null | head -30
  • 查所有隐藏文件和目录:find / -name ".*" -type d -o -name ".*" -type f 2>/dev/null | grep -E "/var|/tmp|/dev/shm"
  • 检查各层级定时任务:cat /etc/crontab; for u in $(cut -d: -f1 /etc/passwd); do crontab -u $u -l 2>/dev/null; done
  • 检查开机自启项:systemctl list-unit-files --type=service | grep enabled; ls /etc/init.d/ | grep -E "(ssh|cron|nginx)"; cat /etc/rc.local 2>/dev/null

查日志:绕过清空、关联登录 IP 与操作行为

黑客常删/var/log/secure/var/log/wtmp,但部分痕迹仍可恢复:

  • last -ai 看最近登录(含 IP),即使 wtmp 被删,lastb(失败记录)或 btmp 有时还在
  • 查成功登录:grep "Accepted" /var/log/secure* 2>/dev/null | tail -50;失败登录:grep "Failed|Invalid" /var/log/secure* 2>/dev/null | tail -50
  • 检查命令执行痕迹:cat /root/.bash_history,再遍历 /home/*/.bash_history;注意wgetcurlncpython -c 等高频恶意调用
  • 若日志全空,检查 ausearch -m all -ts recent(需 auditd 开启),或用dmesg | tail -100 看内核级异常加载
text=ZqhQzanResources