SSH端口隧道与自动化

时间:2016-10-14 11:29:39

标签: authentication authorization portforwarding ssh-tunnel

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

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

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

1 个答案:

答案 0 :(得分:3)

基本上:没有。任何具有shell访问权限的用户都可以使用自己的转发器并获得对端口的访问权限。因此,如果您在Linux计算机上拥有用户rootbobdbtunnel,那么这三个人都可以"导出"访问数据库。

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

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

  • 某些数据库,例如MySQL offer native encryption,如果与"生成"相比可能不那么高效。解决方案。 MySQL还使用压缩的客户端/服务器协议(只要使用第三方加密连接,最好禁用)。

  • 您可以设置VPN,只允许从VPN接口访问端口3306.

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

  • 一个奇特的解决方案,即使它对安全性做的很少,也是在Linux机器上有SSHd,而是在Windows机器上拥有它。然后,Linux机器可以与autossh客户端连接,并将其本地 3306端口转发到远程端口。 Windows计算机上的任何人仍可以连接到数据库。并且隧道用户甚至不需要在Linux机器上存在。然后,您可以禁用除bob以外的所有用户的SSH访问权限以进行管理。要使用auto-SSH从Linux打开隧道到Windows,您需要一些SSH serverother用于Windows。

VPN,iptables和反向隧道之所以没什么区别,是攻击者如何进入" Windows机器?他可能会利用Web服务器。但是在那时,无论Web服务器和数据库之间有什么联系,攻击者无论什么都可以拥有完全访问权限。他只会依靠现有的连接。

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

花式解决方案(在此示例中,MySQL和端口3306;也可以是PostgreSQL和端口5432)

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

......你已经完成了。

谁可以立即连接到数据库?

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

(*)并且如果端口转发受LDAP限制,任何其他用户也可以这样做 - 他们只需要等到LDAP启用的用户执行连接,然后他们就可以捎带它。