如何跟踪超级用户的活动

我想知道什么是在Linux环境下跟踪超级用户活动的最佳方法。

具体来说,我正在寻找这些function:

  • A)将击键logging到受保护的系统日志服务器
  • B)重放shell会话的能力(类似scriptreplay)
  • C)理想情况下,这是不可能的(或者相当困难)的事情,以避免物理访问服务器。

安全/审计的angular度来看,在一个需要不同系统pipe理员(甚至是第三方)的服务器上执行特权操作的环境中,可以考虑这一点。

每个pipe理员都有自己的名义账户,每个交互式会话都应该被完全logging下来,如果有必要的话可以重播(例如,如果有人使用mc来删除或更改关键文件,这是不够的知道这个人发布了MC命令;必须有一种方法来看看启动MC后究竟做了什么)。

附加说明

  1. 正如womble指出的那样,最好的select可能不是让用root权限login的用户在服务器上执行更改,而是通过configurationpipe理系统进行更改。 那么让我们假设我们没有这样一个系统的情况,我们需要在同一台服务器上向不同的人授予根级访问权限
  2. 我对这种暗中偷偷的做法并不感兴趣:每个以root权限login到服务器的人都会完全意识到会话将被logging下来(例如,呼叫中心运营商知道他们的对话是被logging)
  3. 没有人会使用通用的超级用户帐户(“root”)
  4. 我知道ttyrpld ,它似乎做我在找什么。 但在这样做之前,我想知道这是否可以通过使用未经修改的内核来解决。 我想知道是否有特别的Debian工具(或一般的Linux),可以在不修补shell或内核的情况下对超级用户帐户进行全面的审计。

对于具有多个pipe理员的环境,只要可能,就不要使用root。

sudo的一切 – sudo是极其可configuration和易于login的。

logging任何/所有login或su的根目录和调查,因为有人正在执行您既定的规则。

首先,你想要监视什么types的root用户访问? 愚蠢的pipe理员错误或恶意的内幕? 前者 – 你会想要一个好的configurationpipe理解决scheme,就像已经提出的那样。 后者 – 如果他们知道自己在做什么,那么只能希望抓住足以表明发生了值得调查的事情。 你只是想知道某种forms的未经授权的活动已经开始,并且被警告。 如果他们聪明,他们会禁用你build立的大部分日志(通过改变服务器状态或引入他们自己的工具),但希望你能赶上事件的开始。

这就是说,我build议你可以使用一些工具。 首先,从一个好的sudo政策开始(已经build议)。 其次,如果您需要授予这些pipe理员root用户访问权限,请查看sudoshell。 第三,也许你最好的select(尽pipe最密集),看看linux内核审计。

你可以做的是使用这个库sudo,给每个人自己的使用权,并把sudo -i放在每个人的个人资料。 这样他们有即时的根访问权限,他们使用的每个命令都被logging下来。

他们有根。 你所希望的最好的方式是至less看看他们什么时候决定摆脱你的小监督乌托邦,但除此之外,他们所做的是任何人的猜测。

我能想到的“最佳”选项是强制使用普遍的configuration自动化和pipe理,并使用版本控制系统pipe理您的清单,并通过部署更新。 然后阻止实际的rootlogin到服务器。 (紧急“哦,我不知道我打破了什么”访问可以通过每个用户密码或SSH密钥没有分发和更改后提供,每个人都可以看到系统pipe理员谁搞砸了,以确保他们不改变什么)。

是的,这将是不方便和烦人的,但是如果你偏执地想监视每个人的行为到这个程度,我猜你正处在一个不方便和烦人的环境中,这看起来不是什么大问题。

我同意disabledleopard有关使用sudo的所有事情的评论。 这当然会让事情变得更容易logging。

我还会定期添加备份历史logging文件。 看似经常被忽视,但有时可以成为一个很好的信息来源…只要问高盛。 😉

http://www.guardian.co.uk/business/2009/jul/12/goldman-sachs-sergey-aleynikov

这将是困难的…

根可以运行仔细testing的脚本,可以违反所有的安全措施(杀死监控进程),撕碎日志文件/修剪他们等…但仍…

假设多个具有root权限的pipe理员作为一个团队工作。 而root可以杀死任何监控进程。 不幸的是,login名/密码已经公开。 或者他们得到不需要的公司。

尽pipe不build议使用UID 0创build多个root账户,但在这里可能适用。

在/ etc / ssh / sshd_config中将行更改为:PermitRootLogin no

被推荐。 因此,在这里,用户使用他/她的正常帐户login(date时间标记与(可能欺骗IP地址)一起logging)然后切换到根。 使用su命令

而直接以root身份login就是这样阻止的。

我们必须想,这里根本不能做什么。

sudo应该是好的。 备份/ etc目录configuration文件应该是好的。 / var /目录日志文件应定期通过电子邮件发送或存储在单独的NFS上。

如何编写集成了移动网关公司的API的脚本,这些公司将所有根用户的移动设备组成短信,其中一个移动设备不在家工作。 我知道这样会很刺激,但是还是会的。

打破SSH大多是没有问题的。

正如其他人所说,几乎没有办法以一种无法禁用的方式login完全root权限的用户,但是如果您正在运行debian / ubuntu,请查看snoopy ,它与您想要的非常接近

snoopy只是一个共享库,它被用作libc提供的execve()函数的包装,以logging每个对syslog(authpriv)的调用。 系统pipe理员可能会发现snoopy对轻/繁重系统监控,跟踪其他pipe理员的行为以及对系统中发生的事情(例如运行cgi脚本的apache)有很好的“感觉”。

我们在客户的网站上进行以下设置:

  • 同样,在AD(个人账户)开放与Kerberosauthentication
  • 仅授权给某些Unixpipe理员的AD组
  • sudoers组== AD组
  • 每个服务器上的OSSEC HIDS代理和加固服务器上的pipe理器
  • OSSECnetworking用户界面
  • Splunk 3与Splunk-for-OSSEC

它将logging服务器上的每个sudo使用情况,并跟踪对文件的任何更改,软件包的安装,可疑进程等。

我们有几台terminal服务器可以访问我们所有的设备,这意味着可以从terminal服务器login任何东西,也可以login到任何物理访问。

terminal服务器上的Sshd使用http://www.kdvelectronics.eu/ssh-logging/ssh-logging.html进行修补,工作正常,但很久没有更新。 我已经修改了一下openssh 4.7,但没有做到这一点与5.1。 Patched sshd segfaults,只要我没有足够的时间来解决这个问题,我几乎已经切换到ttyrpld。

到目前为止,这是我所拥有的:

  • sudosh :似乎支持A和B(虽然不完全确定)
  • Sudoscript :似乎支持B(Sudoscript有一个名为sudoshell的组件,如果这是romandasbuild议的,谢谢你的提示)
  • 史努比logging器或sudo_exetrace :不完全是我正在寻找,但可能是一个很好的补充(感谢这些链接otherotherreceive和blauwblaatje)

你知道其他类似的工具,不涉及修补内核或其他系统组件吗?