需要一种技术来强制系统管理员记录访问生产服务器的原因

17 linux logging

我的公司要求,任何时候用户登录生产服务器时,都必须记录该人登录的原因以及用户打算进行的更改。我的团队想这样做,但很容易忘记。我想帮助他们记住。我考虑过一个 motd,但想要一些更强大的东西。

我的第一个想法是将用户的 shell 更改为执行类似操作的脚本

vim /logs/logindate.txt 
bash -l
Run Code Online (Sandbox Code Playgroud)

有没有更好或更标准的技术?

注意:这个想法是这些用户是系统管理员并且希望在不破坏系统的情况下创建日志条目 - 他们只是经常忘记这样做。所以,如果他们可以按 ctrl-c,那么……我们假设他们不会。

Aar*_*ley 19

看看pam_exec.so。您可以在登录时在 PAM 的 system-auth 的会话界面中运行脚本。该脚本在用户获得 shell 之前以 root 身份运行,因此它可能无法使用read? 但是,您可以尝试并使用read从用户那里获取原因并使用logger语句将其记录到系统日志中。(我在下面省略了,但是您可以捕获 CTRL+C 以防止任何人无故退出。) $PAM_USER 将设置为登录人,因此您可以将其包含在 logger 语句中。

例子:

在 /etc/pam.d/system-auth 中的会话顶部:

session required pam_exec.so /usr/local/sbin/getreason
Run Code Online (Sandbox Code Playgroud)

和 /usr/local/sbin/getreason:

#!/bin/bash
read -p "Reason for logging into production: " reason
logger -t $(basename $0) "$PAM_USER logged in with reason: ${reason}"
Run Code Online (Sandbox Code Playgroud)

如果这不能完美工作,我们深表歉意。我没有测试它,但最近做了类似的事情。(它没有捕获输入。)


编辑:我越想这个,我越不认为它会起作用,因为它运行的阶段。getreason替换$PAM_USER为后,相同的脚本应该可以工作$(logname),但可能需要在/etc/profile. (首先测试交互式 shell。)

我将保留这两个选项,因为如果没有别的,它至少应该让您朝着正确的方向思考。


HBr*_*ijn 7

另一种选择是特权帐户管理解决方案,管理员帐户不是通过自己的帐户授予管理员访问权限,而是由第三方托管,并且在管理员访问生产系统之前必须遵循强制性程序http://en。 m.wikipedia.org/wiki/Privileged_Identity_Management