如何防止多命令行被记录在 bash 历史记录中?

如何防止多命令行被记录在 bash 历史记录中?

有些产品(例如漏洞扫描器)会以指定用户身份登录 Linux 主机,最终“污染”相关帐户的 bash 历史记录。以下是 Tenable 的 Nessus 扫描仪创建的命令行示例:

LANG=C; printf "priv_escl_start_%s" "4Xoo3InT"; sudo -u root -p Password: sh -c 'printf "command_start_%s" "ljsL6ec8"; lspci -v 2>/dev/null; printf "command_done_%s" "e0bC8nmu"'; printf "priv_escl_end_%s" "NpM6tFCP"

有没有办法防止这样的多命令行被记录在历史中?

我已经尝试过该HISTIGNORE变量,但即使启用了 extglob,它的表现力也不足以捕获这一点。我还相信这些命令是从使用set -o history.因此我认为我不能在$PROMPT_COMMAND.也许唯一的选择是在交互式登录时扫描 .bash_history,删除这些类型的行,写回历史记录,然后重新加载它?

任何帮助深表感谢。

答案1

处理此问题的最佳方法是为扫描仪创建一个专用帐户,可能是名为 的帐户nessus。这具有对扫描仪进行细粒度权限控制的额外好处,以及在扫描仪访问系统时进行审计的能力。

如果您真正致力于不记录历史,而不是仅仅将其与您的历史混合在一起,您可以调整 nessus 帐户的 shell 初始化文件以根本不记录任何历史。

相关内容