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


17

我公司要求,每当用户登录生产服务器时,都必须记录该人登录的原因以及用户打算进行的更改。我的团队想做到这一点,但它很容易忘记。我想帮助他们记住。我本来以为是个杂念,但想要更强大的东西。

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

vim /logs/logindate.txt 
bash -l

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

注意:想法是这些用户是sysadmin,并且希望在不破坏系统的情况下进行日志输入-他们只是经常忘记这样做。因此,如果他们可以ctrl-c,那么...我们假设他们不会。


6
您正在尝试找到工作流程/程序问题的技术解决方案。恕我直言,这样的努力注定要失败,实际的工作流程/程序问题应通过非技术手段直接解决。
约翰

11
谢谢,兄弟。我正在尝试使用技术来促进行为改变。我想每当他们忘记时,我都可以与他们打成一片,但我认为HR更喜欢技术方法。

8
@John并不是实现和协助工作流程的技术目的的一部分吗?
Michael Martinez 2014年

1
纪律处分,直至并包括解雇。
迈克尔·汉普顿

4
是的,但问题不是“你愿意吗?” 问题是,“你能做到吗?” 一个是价值判断;另一个是价值判断。一个是值得这个论坛讨论的技术问题。我对自己管理团队的能力充满信心。我可以用岩石取得巨大的成功,但要花很多血。我喜欢变得很好。我有好的管理员,只是健忘的。:)这次好像是@ aaron-copley。感谢大家!

Answers:


19

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

例:

在/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脚本应该工作,你替换后$PAM_USER$(logname),但它可能需要被执行/etc/profile。(首先测试交互式shell。)

我将保留这两个选项,因为如果没有其他选择,它至少应该使您思考正确的方向。


1
非常感谢你做的这些。看起来很完美。如果没有别的,我可以用C写一点东西来捕获输入。我将实现它,并让您知道它是否有效。

1
@BiggyDevOPs:有用的建议:如果您使用平面文件保存日志,请将其放入git或svn中,以便您拥有历史记录
Michael Martinez 2014年


0

实现此目的的另一种方法是拥有集中式日志记录功能(我在考虑Logstash,但您可以通过其他方式执行此操作)在生产系统上使用auth.log,并将其输入应用程序中,以便人们记录其理由。


0

我在运行HP Server Automation *的客户上看到的这种实现方式是,他们依靠该工具的固有日志记录并结合了多个批准步骤(我去过几个客户,这些客户没有sudo或root privs,但在Dev中)。

可以通过“补救和操作流程”或SA内部的管理登录等方式进行批准。

综上所述,在企业自动化和管理工具之外,@ Aaron Copley答案是一个绝佳的选择。


*我是高级HPSA,HPOO和HP自动化套件顾问的其他方面


0

在寻找解决方案时,我阅读了Aaron Copley的回答,并想:“如果我更换用户的外壳,该怎么办?”

我在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身份运行的,因此您可能必须授予用户一些权限才能执行此工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.