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

3次阅读

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/netstatcentos/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