如何跟踪超级用户活动

如何跟踪超级用户活动

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

具体来说,我正在寻找以下功能:

  • A)将击键记录到安全的系统日志服务器
  • B) 能够重放 shell 会话(类似于 scriptreplay)
  • C) 理想情况下,如果没有物理访问服务器,这应该是不可能(或相当困难)规避的。

从安全/审计的角度考虑这个问题,在需要允许不同的系统管理员(甚至第三方)在服务器上执行特权操作的环境中。

每个管理员都有自己的名义帐户,并且每个交互式会话都应被完整记录,并在必要时可以重播(例如,如果有人使用 mc 删除或更改关键文件,仅仅知道该人发出了 mc 命令是不够的;必须有一种方法可以准确地查看启动 mc 后所做的事情)。

补充笔记

  1. 正如 womble 所指出的,最好的选择可能是不要让人们以 root 权限登录来对服务器执行更改,而是通过配置管理系统来执行更改。因此假设我们没有这样的系统,我们需要在同一台服务器上向不同的人授予 root 级访问权限
  2. 我根本不想偷偷摸摸地做这件事:每个以 root 权限登录服务器的人都会完全知道会话将被记录(就像呼叫中心操作员知道他们的谈话被记录一样)
  3. 没有人会使用通用超级用户帐户(“root”)
  4. 我知道特异型并且它似乎可以满足我的要求。但在这样做之前,我想知道是否可以通过使用未修改的内核来解决这个问题。我想知道是否有任何针对 Debian(或一般 Linux)的工具允许完全审核超级用户帐户而无需修补 shell 或内核。

答案1

对于具有多个管理员的环境,如果可能的话,永远不要使用 root。

对一切操作使用 sudo - sudo 具有极高的可配置性和易于记录性。

记录任何/所有以 root 身份登录或 su 的行为并进行调查,因为有人正在绕过您制定的规则。

答案2

首先,您要监控哪种类型的根用户访问?愚蠢的管理员错误还是恶意内部人员?前者——您需要一个好的配置管理解决方案,正如已经建议的那样。后者——如果他们知道自己在做什么,您只能希望捕捉到足够的信息以表明发生了值得调查的事情。您只想知道某种形式的未经授权的活动已经开始,并对此事实发出警报。如果他们很聪明,他们会禁用您内置的大部分日志记录(通过更改服务器状态或引入他们自己的工具),但希望您能抓住事件的开始。

话虽如此,我还是建议你使用一些工具。首先,从良好的 sudo 策略开始(这已经被建议过了)。其次,如果你需要给那些管理员 root shell 访问权限,可以查看 sudoshell。第三,可能是你最好的选择(尽管最深入),研究 linux 内核审计。

答案3

你可以做的是使用 sudo 库,为每个人提供自己的用户帐户,并将 sudo -i 放入每个人的配置文件中。这样,他们就可以立即获得 root 访问权限,并且他们使用的每个命令都会被记录下来。

答案4

正如其他人所说,几乎没有办法以无法禁用的方式记录具有完全 root 访问权限的用户,但如果你正在运行 debian/ubuntu,请查看史努比,这与你想要的非常接近

snoopy 仅仅是一个共享库,用作 libc 提供的 execve() 函数的包装器,以记录对 syslog(authpriv)的每次调用。系统管理员可能会发现 snoopy 在轻度/重度系统监控、跟踪其他管理员的操作以及良好地“感受”系统中正在发生的事情(例如 apache 运行 cgi 脚本)等任务中很有用。

相关内容