Linux历史命令审计需调大HISTSIZE/HISTFILESIZE、设置HISTTIMEFORMAT添加时间戳,并通过auditd或syslog集中记录命令至系统日志,辅以日志轮转与完整性校验。
Linux系统默认保存的历史命令条数有限,且原始记录缺乏时间戳和用户标识,不便于安全审计。调整历史命令配置、添加时间信息、统一日志归集,是提升操作可追溯性的关键步骤。
修改HISTSIZE与HISTFILESIZE限制
终端会话中显示的历史命令数量由
HISTSIZE
控制,而写入
文件的总行数由
HISTFILESIZE
决定。两者默认通常为1000,易造成早期命令被覆盖。
在
中设置更大值,例如:
如需全局生效(所有用户),可修改
或
,但需注意权限与兼容性
执行
使当前会话立即生效
启用带时间戳的历史记录
默认
命令不显示执行时间,审计时难以定位事件时间线。通过设置
HISTTIMEFORMAT
可自动为每条记录添加时间前缀。
在
中添加:
该格式将写入
,后续用
命令查看时即可看到时间
注意末尾空格不能省略,否则时间与命令会粘连
集中记录所有用户命令到系统日志
仅依赖
存在明显缺陷:非交互式shell不记录、用户可清空、多终端会话不同步、无登录IP与终端信息。建议结合
syslog
或
auditd
做增强审计。
启用
监控
执行及命令行参数(需配置
)
或在
中追加日志写入逻辑:
配合rsyslog将
重定向至独立文件(如
),并按日轮转
清理与加固注意事项
增强审计能力的同时,也需防范绕过行为。历史记录本身不是安全机制,而是事后分析依据。
禁用
无法彻底阻止清除,应依赖系统级日志(如auditd)作为权威来源
避免将敏感命令(如含密码的curl/wget)直接输入shell,可用变量或配置文件替代
定期校验
完整性(如用
或
),防止未授权篡改
~/.bash_history~/.bashrcHISTSIZE=5000
HISTFILESIZE=5000/etc/bash.bashrc/etc/profilesource ~/.bashrchistory~/.bashrcHISTTIMEFORMAT="%Y-%m-%d %H:%M:%S ".bash_historyhistory.bash_historyauditd/bin/bash-a always,exit -F path=/bin/bash -F perm=x -k shell_commands/etc/profileexport PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.info "$(whoami) [$$] $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"'local6.*/var/log/cmd.loghistory -c.bash_historyaidetripwire