单纯依赖~/.bash_history不可靠,因其易被清空、覆盖或绕过,且不记录sudo命令本身;真正有效的是结合auditd监控关键路径与提权行为、sudo日志交叉验证及异地留存校验的分层防御体系。

Linux 用户权限提升过程中,history 日志既是操作痕迹的来源,也是攻击者清理踪迹的重点目标。单纯依赖 ~/.bash_history 不可靠——它易被清空、覆盖或绕过,且不记录 sudo 命令本身(只记录 shell 命令)。真正有效的监控,必须跳出 history 文件本身,转向内核级审计与行为关联分析。
history 文件本身的局限与加固
默认的 .bash_history 只保存当前会话退出时的命令,且对 root 或普通用户都可随意修改。加固不是“让它更难删”,而是降低其作为唯一证据的依赖:
- 限制历史条数:
HISTSIZE=100和HISTFILESIZE=100写入/etc/profile,减少冗余痕迹 - 禁用命令重复记录:
HISTCONTROL=ignoredups:ignorespace,避免大量无意义重复 - 禁止敏感命令写入:
export HISTIGNORE="ls:cd:pwd:history:clear",减轻日志噪音 - 登录即清空(慎用):
echo "" > ~/.bash_history加入~/.bashrc,适用于高敏终端,但会丢失合法排障线索
auditd:捕获真实执行行为的关键
history 只记“输入了什么”,auditd 才记“谁、在何时、以何种权限、实际执行了什么”。它不依赖 shell,即使攻击者用 python -c "import os; os.system('id')" 绕过 history,也会被记录。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 监控关键路径:
-w /home/*/.bash_history -p wa -k hist_mod,捕获修改/删除动作 - 监控提权行为:
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec - 监控可疑子进程:
-a always,exit -F arch=b64 -S execve -F uid!=1000 -k unpriv_exec(假设 1000 是普通用户 UID) - 所有规则统一加载:
sudo auditctl -R /etc/audit/rules.d/history.rules,并启用服务
sudo 日志与 auth 日志的交叉验证
sudo 自身会记录到 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),内容比 history 更权威:
- 每条记录含:时间、用户名、源 IP、执行命令、是否成功、TTY 设备
- 配合
ausearch -m EXECVE -ts recent(auditd)可还原完整命令链,包括参数 - 发现异常模式:如同一用户频繁执行
sudo su -后紧跟history -c,应触发告警 - 确保
sudoers中启用Defaults logfile="/var/log/sudo.log",提供独立日志源
不可信日志的异地留存与完整性校验
本地日志可被 root 篡改,必须外发并防抵赖:
- 配置 rsyslog 或 journald 将 auth、audit、sudo 日志实时转发至远程 syslog 服务器(TLS 加密)
- 对关键文件做定期哈希快照:
sha256sum /var/log/auth.log /var/log/secure > /tmp/log.sha256,存于只读介质或远程存储 - 使用
aureport --start today --key hist_mod快速检索当日所有 history 相关审计事件,无需 grep 文本 - 禁止直接编辑日志目录:
chattr +a /var/log/(仅允许追加),配合chown root:adm /var/log限制组写入

















