我总是喜欢在以我们的“服务器用户”身份操作时使用 sudo 命令,这样我的所有操作都会记录在 sudo 日志中,以后我可以对其进行逆向工程。但是,我不想每次都键入 sudo -u serveruser 并且不想创建别名。有没有我可以执行 shell 的程序或其他东西,这样我运行的每个命令实际上都以 sudo -u serveruser 作为前缀,所以感觉就像我自己是用户一样。
如果是这样,我可以为所有管理员设置它,他们甚至不会真正注意到差异,我们可以通过 sudo 日志记录免费获得历史记录。
编辑:我要找的是这些东西
- 非常简单的设置(我们的 sudo 已经设置好了,除了这个 sudo like shell 会很好)
- 日志时间戳
- 记录用户执行命令(即可能是我,在这种情况下是院长)
- 将他们执行命令的用户记录为(即本例中的 serveruser)
- 记录实际命令
sudo 开箱即用,但我试图为用户找出#1,因为我们(这个团队的人)不想一直输入 sudo :(。
编辑:也许有一种方法可以在 bash 中吸收 stdin 和 stdout 来编写脚本,这样就可以调用 sudoshell -u username 和我在 stdin 上输入的除“exit”之外的任何命令,然后使用 sudo -u username 运行。有没有办法让我们所有的管理员都可以运行这样的脚本?然后当有人运行 sudo su 时 - 我可以记录一条消息来运行该 shell,而不是如下所示......那会很好用。知道怎么做吗?
谢谢,院长
您正在寻找的是审计跟踪。Sudo 会提供它(有限制),但还有其他方法可以实现它。
如果您只需要记录输入到 shell 中的内容,并且不想安装额外的软件包,可以将 bash 4 配置为通过 syslog 记录历史记录。
您还可以从大量可用的审计包中进行选择。一个快速简单的解决方案可能是史努比记录器。
听起来您想记录所有 sudo 命令,以便以后可以对其进行审核。
你应该看看sudosh2。这是描述:
例如:用户 joe 登录系统,键入
sudo sudosh
并被授予超级用户权限。在这一点之后,所有输入和输出都被记录下来。日志进入一个文件,或通过系统日志发送到您的中央系统日志服务器(在那里它们不能被删除)。您可以重放日志并准确查看人们输入的内容(您甚至可以看到拼写错误、退格等)和输出。它可能无法满足您的所有要求,但听起来您对类似的选择持开放态度。
有关详细信息,请参阅我对记录从 root 执行的每个命令的其他答案。