我想知道在 Linux 环境中跟踪超级用户活动的最佳方法是什么。
具体来说,我正在寻找以下功能:
- A)将击键记录到安全的系统日志服务器
- B) 能够重放 shell 会话(类似于 scriptreplay)
- C) 理想情况下,如果没有物理访问服务器,这应该是不可能(或相当困难)规避的。
从安全/审计的角度考虑这个问题,在需要允许不同的系统管理员(甚至第三方)在服务器上执行特权操作的环境中。
每个管理员都有自己的名义帐户,并且每个交互式会话都应被完整记录,并在必要时可以重播(例如,如果有人使用 mc 删除或更改关键文件,仅仅知道该人发出了 mc 命令是不够的;必须有一种方法可以准确地查看启动 mc 后所做的事情)。
补充笔记:
- 正如 womble 所指出的,最好的选择可能是不要让人们以 root 权限登录来对服务器执行更改,而是通过配置管理系统来执行更改。因此假设我们没有这样的系统,我们需要在同一台服务器上向不同的人授予 root 级访问权限。
- 我根本不想偷偷摸摸地做这件事:每个以 root 权限登录服务器的人都会完全知道会话将被记录(就像呼叫中心操作员知道他们的谈话被记录一样)
- 没有人会使用通用超级用户帐户(“root”)
- 我知道特异型并且它似乎可以满足我的要求。但在这样做之前,我想知道是否可以通过使用未修改的内核来解决这个问题。我想知道是否有任何针对 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 脚本)等任务中很有用。