要查找 Linux 系统的入侵证据,可以从几个关键方向入手。以下方法覆盖了常见的入侵痕迹排查路径,帮助您快速定位安全事件。
首先,登录记录是最直接的线索。通过 last 和 lastlog 命令,可以快速查看最近有哪些账户登录过系统,以及登录时间。如果发现陌生的 IP 地址或异常的登录时段,就需要高度警惕,这可能是入侵的信号。
其次,系统日志文件中包含了大量有价值的信息。例如 /var/log/secure 和 /var/log/messages,可以使用 grep 配合 accept 关键字搜索,检查是否存在可疑 IP 地址成功登录的记录。需要特别注意的是,要关注“登录成功”的日志条目;如果仅仅是尝试失败,可能属于暴力破解,但成功登录则意味着攻击者已经进入系统。
第三,用户的任务计划(cron)也是攻击者常利用的机制。文件路径为 /var/spool/cron/tabs/ 下对应的用户名。许多后门程序、病毒会被设置为计划任务,以便定时执行。务必检查是否存在不认识的定时任务,尤其是那些以 root 权限运行的,这类任务往往是恶意软件留下的。
第四,以下目录是木马和病毒的“重灾区”:/tmp、/var/tmp、/dev/shm。这些目录设置了 SBIT(粘滞位),所有用户都具有可读、可写、可执行权限,并且访问时往往拥有 root 权限的上下文。即便攻击者没有获得 root 账号,也能在这些目录中上传恶意文件,操作非常便利。因此,这些目录必须重点排查。
第五,可以利用时间线索进行查找。使用 find / -ctime n 命令,其中 n 指定天数。例如,根据之前发现的登录记录或日志,锁定一个可疑时间点后,可以执行 find / -ctime 2 来查找两天前 24 小时内创建的文件。为避免输出刷屏,可以将结果重定向到文件,如 find / -ctime 2 > /tmp/file.log。
第六,各类服务日志同样不容忽视。例如 Apache 的日志:$APACHE_HOME/logs/access_log 和 $APACHE_HOME/logs/error_log,其中可能记录着恶意请求、异常路径以及被植入的 webshell 的访问痕迹。其他服务如 Nginx、MySQL、SSH 等,其日志文件也值得仔细审查。
