### 如何删除 Linux 机器的入侵痕迹 **1. 消除日志文件中的痕迹** 日志文件是系统管理员和安全团队发现入侵的最主要线索。因此,这是痕迹清理的首要目标 - **识别和清理日志**:攻击者在入侵后,通常会在以下几个核心日志文件中留下痕迹: - `/var/log/auth.log` 或 `/var/log/secure`:记录用户的登录和认证信息 - `/var/log/lastlog`:记录所有用户的最后一次登录时间 - `/var/log/wtmp` 和 `/var/run/utmp`:记录用户的登录/登出历史 - `/var/log/cron`:记录定时任务(Cron)的执行情况 - **清理方法**: - **方法一:使用工具**。你可以使用像 **`auditd`** 这样的工具来监控和篡改日志 - **方法二:手动清理**。用 **`vim`** 或 **`nano`** 等文本编辑器打开日志文件,删除你的操作记录。然后,使用 `> filename` 命令清空日志文件,或者使用 `dd` 命令来删除特定行 ```bash # 示例:清空 auth.log > /var/log/auth.log ``` - **方法三:使用 `history -c`**。清除当前会话的 Bash 历史记录。此外,你还需要手动删除 `.bash_history` 文件中的记录 ```bash history -c rm /root/.bash_history ``` - **方法四:使用 `sed`**。这是一种更精确的方法,你可以使用 `sed` 命令删除包含特定关键词的行,而不影响其他日志 ```bash # 示例:删除包含 IP 地址 1.2.3.4 的行 sed -i '/1.2.3.4/d' /var/log/auth.log ``` - **重要提示**:在进行任何操作前,最好以最小权限的账户进行,并立即在完成操作后清理该账户的痕迹 **2. 删除恶意文件和后门** 入侵成功后,攻击者通常会在系统中植入后门程序或 WebShell,以保持持久化访问 - **查找恶意文件**: - **按时间戳查找**:使用 `find` 命令查找在你入侵时间段内被修改过的文件。这通常是发现后门文件最有效的方法 ```bash # 示例:查找过去 24 小时内修改过的文件 find / -mtime 0 -type f -print ``` - **按文件名或类型查找**:查找常见的后门文件名,如 `.php`、`.jsp`、`.sh`,或者包含特定字符串的文件。 ```bash # 示例:查找所有以 .jsp 结尾的文件 find / -name "*.jsp" ``` - **删除文件**:找到可疑文件后,使用 `rm` 命令将其彻底删除 **3. 清理已创建的用户和计划任务** 为了保持持久化,攻击者可能会创建新的用户账户或设置定时任务 - **删除用户**: - 检查 `/etc/passwd` 和 `/etc/shadow` 文件,删除任何可疑的新用户 - 使用 `userdel` 命令删除用户账户,并加上 `-r` 参数同时删除其主目录 ```bash userdel -r maluser ``` - **清理计划任务**: - 检查 `crontab -l` 命令的输出,删除任何可疑的定时任务 - 检查 `/etc/cron.*` 目录下的所有文件,以及 `/var/spool/cron/` 目录下的用户 crontab 文件。 **4. 消除其他关键痕迹** 还有一些其他关键的痕迹需要清理,这些往往被忽略 - **SSH 密钥**:检查 `~/.ssh/authorized_keys` 文件,删除任何你添加的公钥 - **隐藏文件**:检查你的主目录或系统目录中是否有以 `.` 开头的隐藏文件 ```bash ls -al /home/ ``` - **清除缓存**:清除系统和应用程序的缓存文件