我想知道在 Linux 环境中跟踪超级用户活动的最佳方法是什么。
具体来说,我正在寻找这些功能:
- A) 将击键记录到安全的系统日志服务器
- B) 能够重放 shell 会话(类似于 scriptreplay)
- C)理想情况下,如果没有对服务器的物理访问,这应该是不可能(或相当困难)规避的。
从安全/审计的角度考虑这一点,在需要允许不同系统管理员(甚至第三方)在服务器上执行特权操作的环境中。
每个管理员都有他自己的名义帐户,并且每个交互会话都应该被完全记录,并且在必要时可以重播它(例如,如果有人使用 mc 删除或更改关键文件,这将不足以知道那个人发出了 mc 命令;必须有一种方法可以准确地查看启动 mc 后所做的事情)。
附加说明:
- 正如 womble 所指出的,最好的选择可能是不让人们以 root 权限登录以在服务器上执行更改,而是通过配置管理系统进行。所以让我们假设我们没有这样的系统,我们需要在同一台服务器上授予不同人的 root 级别访问权限。
- 我对偷偷摸摸地做这件事一点也不感兴趣:每个以 root 权限登录到服务器的人都会完全意识到会话将被记录(就像呼叫中心操作员知道他们的对话是一样的)被记录)
- 没有人会使用通用超级用户帐户(“root”)
- 我知道ttyrpld并且它似乎在做我正在寻找的东西。但在这样做之前,我想知道这是否可以通过使用未修改的内核来解决。我想知道是否有任何特别适用于 Debian(或一般 Linux)的工具,允许在不修补 shell 或内核的情况下对超级用户帐户进行全面审计。
对于具有多个管理员的环境,请不要使用 root - 如果可能的话。
对所有事情都使用 sudo - sudo 非常可配置且易于记录。
将任何/所有登录名或 su 登录到 root 并调查它们,因为有人正在绕过你既定的规则。
一方面,您希望监控哪种类型的 root 用户访问?愚蠢的管理员错误还是恶意的内部人员?前者——正如已经建议的那样,您需要一个好的配置管理解决方案。后者——如果他们知道他们在做什么,你只能希望捕捉到足以表明发生了值得调查的事情。您只想知道某种形式的未经授权的活动开始了,并被提醒注意这一事实。如果他们很聪明,他们会禁用您构建的大部分日志记录(通过更改服务器状态或引入他们自己的工具),但希望您能抓住事件的开始。
话虽如此,我建议您可以使用一些工具。首先,从一个好的 sudo 策略开始(已经建议过)。其次,如果您需要为这些管理员提供 root shell 访问权限,请查看 sudoshell。第三,可能是你最好的选择(虽然是最密集的),看看 linux 内核审计。
你可以做的就是使用这个 库进行 sudo,给每个人自己的用户帐户,然后将 sudo -i 放在每个人的个人资料中。这样他们就有了即时的 root 访问权限,并且他们使用的每个命令都会被记录下来。
他们有根。你能期望的最好的结果就是至少看看他们什么时候决定打破你的小监控乌托邦,但除此之外,他们做了什么,谁都猜不透。
我能想到的“最佳”选项是强制使用普遍的配置自动化和管理,并使用修订控制系统管理您的清单并通过它部署更新。然后阻止实际的 root 登录到服务器。(紧急“哦,不,我弄坏了东西”访问可以通过每次使用后未分发和更改的密码或 SSH 密钥提供,每个人都可以看到系统管理员搞砸了,以确保他们没有改变任何东西)。
是的,这会带来不便和烦人,但是如果您偏执到想要监视每个人的行为到这种程度,我猜您所处的环境在其他方面既不方便又烦人似乎不是一个大问题。
正如其他人所说,几乎没有办法以他们无法禁用的方式记录具有完全 root 访问权限的用户,但是如果你正在运行 debian/ubuntu 看看snoopy,它非常接近你想要的
我同意 disabledleopard 关于对所有事情都使用 sudo 的评论。它确实使事情更容易记录。
我还会定期添加备份 bash 历史文件。看似经常被忽视,但有时可以成为重要的信息来源……问问高盛就知道了。;-)
http://www.guardian.co.uk/business/2009/jul/12/goldman-sachs-sergey-aleynikov
那将是困难的...
root 可以运行经过仔细测试的脚本,这些脚本可以违反所有安全措施(杀死监控进程),粉碎日志文件/修剪它们等......但仍然......
假设拥有 root 权限的多个管理员作为一个团队工作。root 也可以终止任何监控进程。不幸的是,该登录名/密码变得公开。或者他们得到不受欢迎的公司。
虽然不推荐使用 UID 0 创建多个 root 帐户,但此处可能适用。
在 /etc/ssh/sshd_config 将行更改为: PermitRootLogin no
被推荐。因此,在这里,用户使用他/她的普通帐户登录(日期时间戳与(可能是欺骗的 IP 地址)一起记录)然后切换到 root。使用 su 命令
并且像这样阻止以root身份直接登录。
我们必须思考,root 不能在这里做什么。
sudo 应该不错。备份 /etc 目录下的配置文件应该不错。/var/ 目录 日志文件应定期通过电子邮件发送或存储在单独的 NFS 上。
如何编写脚本来集成来自 Mobile Gateway 公司的 API,这些公司将 SMS 分组为所有 root 用户的手机,其中一个在外工作。我知道那会很烦人,但仍然如此。
破坏 SSH 几乎是不可能的。
我们在客户的网站上有以下设置:
它将记录服务器上的每次 sudo 使用,并跟踪文件的任何更改、软件包的安装、可疑进程等。
我们有几个终端服务器可以访问我们所有的设备,这意味着一个人可以从终端服务器登录到任何东西,或者如果一个人有物理访问权限。
终端服务器上的 Sshd 使用http://www.kdvelectronics.eu/ssh-logging/ssh-logging.html进行了修补,工作正常,但很长时间没有更新。我已经对其进行了一些修改以在 openssh 4.7 上工作,但未能在 5.1 上做到这一点。修补了 sshd 段错误,只要我没有足够的时间来修复它,我几乎已经切换到 ttyrpld。
到目前为止,这就是我所拥有的:
你知道其他不涉及修补内核或其他系统组件的类似工具吗?