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

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

我的公司要求,每次用户登录生产服务器时,都必须记录该用户登录的原因以及用户想要进行的更改。我的团队想这样做,但很容易忘记。我想帮助他们记住。我考虑过使用 motd,但想要更强大的功能。

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

vim /logs/logindate.txt 
bash -l

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

注意:这些用户是系统管理员,他们希望在不破坏系统的情况下进行日志记录 - 他们只是经常忘记这样做。所以,如果他们可以按 ctrl-c 键,那么...我们假设他们不会这样做。

答案1

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

例子:

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

session required pam_exec.so /usr/local/sbin/getreason

以及 /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}"

如果这个功能不能完美运行,请见谅。我没有测试过,但最近做过类似的事情。(它没有捕获输入。)


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

我会保留这两个选项,因为至少它能让你朝着正确的方向思考。

答案2

另一种选择是特权帐户管理解决方案,其中管理员不是使用自己的帐户访问,而是由第三方托管管理员帐户,并且必须遵循强制性程序,管理员才能访问生产系统http://en.m.wikipedia.org/wiki/Privileged_Identity_Management

答案3

实现此目的的另一种方法是让您的集中日志记录设施(我正在考虑 Logstash,但您也可以通过其他方式来实现)在生产系统上获取您的 auth.log,将其输入到人们可以记录其理由的应用程序中。

答案4

在寻找解决方案时,我阅读了 Aaron Copley 的回答并想到:“如果我更改用户的 shell 会怎样?”

我在我的 Ubuntu 14.04 机器上成功完成了此操作:

# usermod -s /usr/bin/loginScript username

在您的脚本中,您可以简单地捕获登录的原因。我的脚本如下:

#!/bin/bash
read -p "Tell me why you logged in:" reason
echo "You told me: $reason" >> /var/log/reasonLogin.log
/bin/bash

您应该注意一件事:该脚本不是以 root 身份运行的,因此您可能必须授予用户一些权限才能使其工作。

相关内容