我像这样使用 HISTTIMEFORMAT:
HISTFILESIZE=4000
HISTSIZE=4000
USER_IP="`echo $SSH_CLIENT | awk '{ print $1}'`"
USER_FIO=($USER_RYBAV $USER_TROVL)
HISTTIMEFORMAT="%d/%m/%y %T $USER_IP:$USER_FIO | "
export HISTTIMEFORMAT
并在 .ssh/authorized_keys 中
environment="USER_TROVL=torvalds.linux" ssh-rsa AAAAB3N....
environment="USER_RYBAV=rybafing.valing" ssh-rsa AAAAB3....
当我用 1 rsa 登录时,我进入了历史记录:
178 22/07/22 16:48:07 10.100.19.204:torvalds.linux exit
179 22/07/22 16:48:12 10.100.19.204:torvalds.linux lsblk
180 22/07/22 16:48:14 10.100.19.204:torvalds.linux history
当我用 2 rsa 登录时:
178 22/07/22 16:48:07 10.100.19.204:rybafing.valing exit
179 22/07/22 16:48:12 10.100.19.204:rybafing.valing lsblk
180 22/07/22 16:48:14 10.100.19.204:rybafing.valing history
181 22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
182 22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk
如何在具有不同密钥和环境的任何连接上从 .bash_profile 重写中看到 $USER_FIO。
我希望不会重写用户登录:
178 22/07/22 16:48:07 10.100.19.204:**torvalds.linux** exit
179 22/07/22 16:48:12 10.100.19.204:**torvalds.linux** lsblk
180 22/07/22 16:48:14 10.100.19.204:**torvalds.linux** history
181 22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
182 22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk
答案1
您似乎正在尝试用作.bash_history
审核日志文件。
历史bash
记录不是审核日志:它的设计目的只是帮助用户回忆和重复以前的命令,而不是用作记录已完成操作的可靠记录,即使在单个会话中也是如此。
bash
当 shell 会话开始时将读取历史文件。它将在会话期间将历史记录保存在 RAM 中,并在会话结束时将其写回到文件中。由于您没有设置histappend
shell 选项,因此 shell 将重写整个文件,而不仅仅是为每个新命令添加一行。由于在写入历史文件时所有历史时间戳都从内部 Unix 时间戳格式转换为人类可读的日期,因此更改HISTTIMEFORMAT
将导致所有历史行上的时间戳格式发生更改,包括属于过去会话的历史行。这就是为什么bash
'sHISTTIMEFORMAT
不适合您的目的。
如果您使用“良好”的 SSH 会话登录,然后使用第二个“邪恶”会话登录,在“邪恶”会话中执行操作,然后首先注销“邪恶”会话,然后注销“良好”会话,生成的bash
历史文件可能根本不显示“邪恶”会话的命令。根据 shell 设置,可以通过在命令前添加空格字符来从历史文件中省略命令。bash
这些是历史文件不适合用作审核日志的更多原因。
其他 shell 会以不同的方式执行此操作,但尝试使用 shell 历史文件作为审核日志仍然是一个坏主意,因为用户将能够操纵历史文件的内容。
sudo
如果您需要在共享帐户上记录谁做了什么,则仅允许通过或类似方式在共享帐户上使用一组受限制的命令会更可靠。如果必须允许用户在共享帐户上运行 shell,则可能需要设置会话记录器。现代版本sudo
可以做到这一点: seelog_input
和log_output
in man 5 sudoers
,也man 8 sudo_logsrvd
可以通过网络在另一台主机中接收此类会话记录。
如果您尝试对帐户执行此操作root
,则必须假设具有 root 访问权限的用户将能够操作本地存储的任何日志。您需要设置日志记录,以便一旦生成审核日志消息,它将被发送到第一台主机的用户无法访问的另一台主机(或其他一些记录机制)。
如果你要求可靠的审计日志,你需要做对。如果您不这样做,安全审核员(或法庭上的专家证人)将能够轻松反驳您日志的有效性,从而使它们失去作为证据的价值。