SSH端口隧道与自动化

Rob*_*boy 6 authentication authorization portforwarding ssh-tunnel

如果用户位于特定的Active Directory组中,是否可以仅允许通过SSH端口隧道使用端口?

我有一台客户端计算机,一台Windows Web服务器和一台带有数据库的Linux服务器.我希望客户端能够使用SSH连接到数据库,但前提是它们位于特定的AD组中.

有没有办法实现这个目标?

LSe*_*rni 4

基本上:没有。任何具有 shell 访问权限的用户都可以使用自己的转发器并获得对端口的访问权限。所以如果你有用户rootbob并且dbtunnel在 Linux 计算机上,这三个用户都可以“导出”对数据库的访问权限。

但你真正想做的是什么?因为在我看来,您想要加密(可能压缩)Web 服务器和数据库之间的数据库连接。您完全可以在没有 SSH 的情况下做到这一点。

  • 使用 SSH,您可以做的是完全禁用端口转发shell(除了该组之外)。sshd_config allowgroups支持LDAP。您将严格限制 Linux 计算机上的所有(或大多数)用户。

  • 一些数据库(例如MySQL)提供本机加密,但与“天生”的解决方案相比,性能可能不那么好。MySQL 还具有压缩的客户端/服务器协议(每当使用第三方加密连接时最好将其禁用)。

  • 您可以设置 VPN,并仅允许从 VPN 接口访问端口 3306。

  • 此外,您还可以限制来自 Web 服务器的连接(SSH 和 VPN),以减少数据库计算机的攻击面。

  • 一个奇特的解决方案是在 Linux 计算机上根本安装 SSHd,而在 Windows 计算机上安装它,即使它对安全性没有多大作用。然后Linux机器可以与autossh客户端连接并将其本地3306端口转发到远程。Windows 计算机上的任何人仍然可以连接到数据库。而且隧道用户甚至不需要存在于 Linux 计算机上。然后,您可以禁用除管理目的之外的所有用户的 SSH 访问bob要通过自动 SSH打开从 Linux 到 Windows 的隧道,您需要一些SSH 服务器其他适用于 Windows 的服务器。

VPN、iptables 和反向隧道没有什么区别的原因是,攻击者如何“进入”Windows 计算机?他可能会利用网络服务器。但此时,无论 Web 服务器和数据库之间存在什么连接,攻击者都将拥有完全访问权限。他只会利用现有的连接。

因此,防火墙 IP 限制和反向隧道解决方案对于用户识别没有任何作用,因为无论如何这都是没有意义的,而是消除了非管理员用户从 Web 服务器外部访问 Linux 计算机的漏洞。

奇特的解决方案(在本例中为 MySQL 和端口 3306;也可以是 PostgreSQL 和端口 5432)

  • 在 Windows 计算机上的某个非标准端口上安装 SSHd 服务器。
  • 将 Windows 防火墙配置为仅允许来自 Linux 计算机 IP 的连接到该端口。
  • 在 Windows 计算机上创建一个(受限)用户以允许 Linux 进行连接。
  • 在 Linux 计算机上安装 autossh 脚本(上面)并将其配置为连接到 Windows 服务器,将本地 3306 端口转发到新创建的绑定到 localhost 的侦听远程 3306 端口(无 -g 选项)。
  • 告诉 Web 服务器在地址 127.0.0.1 端口 3306 处有一个 MySQL 服务器。

...你就完成了。

现在谁可以连接到数据库?

  • 该一台 Windows 计算机上的任何用户。这应该仅意味着 Web 服务器用户 (*)。
  • 在 Linux 计算机上具有 SSH 访问权限的任何管理员用户(前提是对 Linux 计算机具有SSH 访问权限。您可以将其关闭)。
  • 攻击者成功利用了 Windows Web 服务器:但他无论如何都可以做到这一点,因为 Web 服务器需要访问数据库。

(*) 如果端口转发受 LDAP 限制,任何其他用户也可以执行此操作 - 他们只需要等待,直到启用 LDAP 的用户执行连接,然后他们就可以利用它。