给定 SSH 访问权限,我应该如何保护服务器并监控(危险的)用户操作?

信息安全 操作系统 访问控制 linux 远程桌面
2021-08-10 11:24:12

语境:

  • 小型企业,主要是用于 Web 应用程序的软件公司,但也有一些桌面软件。
  • 许多外部合作者,因此有各种外部用户可以访问服务器。
  • 单个物理服务器,使用 Linux 和 Xen 作为虚拟化解决方案 - 每个 VM 都有特定用途和受控访问。外部用户可以访问其中两个
  • (虚拟)服务器提供各种服务:LAMP 堆栈、电子邮件、DNS 等。这个问题与我对本地用户访问的担忧有关
  • 用户可以通过 SSH 连接到两个虚拟机

要求

  • 为用户提供通用开发工具的访问权限,包括 Web(PHP、Ruby on Rails 等)和独立应用程序(gcc、g++ 等);这不仅包括编译器等,还包括编辑器。现在,他们拥有完整的 shell 访问权限。
  • 用户必须能够在服务器上使用源代码控制:svn 和 git
  • 有些人可以访问 MySQL 数据库

问题

我应该采取哪些步骤来:

  1. 尽可能为用户提供完整的外壳,或以安全的方式满足上述要求的等效解决方案
  2. 尽可能自动监控危险活动(如在 sudo/su 通知中)
  3. 如果用户在有人在服务器上修补它之前获得了 0day 特权升级漏洞,则将影响降至最低 - 这甚至可能吗?
3个回答

如果用户必须通过 SSH 连接到您的服务器,保护您的服务器根目录的有用工具是chroot - 这将让您为他们提供服务器根目录的明显功能,而不是真正给他们皇冠上的宝石。

或者,当您使用虚拟机时,为什么不为它们提供虚拟服务器实例呢?

这两个都将允许您运行监控工具(例如tripwire)以检查文件的更改。日志记录应该在用户环境之外进行。

通过 /etc/sudoers 中的条目,您可以限制用户在 su 下允许执行的活动。

您还可以限制用户使用 bash 4(删除其他 shell)并记录所有命令并将副本发送到单独的日志服务器。

Bash:系统日志的历史记录http://blog.rootshell.be/2009/02/28/bash-history-to-syslog/

这可以帮助您审核用户活动,更重要的是,在有人做坏事时进行取证。我也会做全面的法律披露——所有活动都被记录和审计,违规者将被起诉,等等。

部署OSSEC(基于主机的入侵检测系统)也会有所帮助;它有许多内置规则来检测和提醒你坏事。OSSEC 可以提醒您所有 sudo/su 活动。

不要忘记隧道、端口转发。默认情况下,sshd_config 文件中的 AllowTcpForwarding 是 yes,它允许用户转发任意端口。它可能会造成比你想象的更多的麻烦。(这不是一个理想的 stackexchange 风格的答案,但我找不到更好的答案,很难用几句话来概括端口转发)在允许访问之前,您应该了解有关端口转发的更多信息。

端口转发简而言之

SSH 允许通过单个 SSH 连接多路复用数据流。这些流中的一个或多个可以是端口转发,这样到攻击者客户端计算机上端口的流量通过 SSH 连接从服务器发送到指定主机上的指定端口这意味着如果您的 shell 服务器可以访问例如 MySQL 服务器,那么任何连接到 SSH 框的人都可以直接访问 MySQL 服务器。然后,他们可以使用自己的客户端工具,而不必局限于您在 SSH 机器上提供的软件。