身份验证 – 具有自动化的SSH端口隧道

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

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

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

基本上:没有.任何具有shell访问权限的用户都可以使用自己的转发器并获得对端口的访问权限.因此,如果Linux机器上有root,bob和dbtunnel用户,则所有这三个都可以“导出”对数据库的访问.

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

>使用SSH,您可以做的是禁用端口转发和shell,除了那个组. sshd_config allowgroups supports LDAP.您将严格限制Linux计算机上的所有(或大多数)用户.
>某些数据库,例如MySQL offer native encryption,如果与“天生”解决方案相比可能不那么高效. MySQL还具有压缩的客户端/服务器协议(最好在使用第三方加密连接时保持禁用状态).
>您可以设置VPN,仅允许从VPN接口访问端口3306.
>此外,您可以将连接(SSH和VPN)限制为来自Web服务器的连接,以减少数据库计算机的攻击面.
>一个奇特的解决方案,即使它对安全性没什么作用,也就是说Linux机器上根本没有SSHd,而是在Windows机器上使用它.然后Linux机器可以与autossh客户端连接并将其本地3306端口转发到远程. Windows计算机上的任何人仍可以连接到数据库.并且隧道用户甚至不需要存在于Linux机器上.然后,您可以禁用除bob之外的所有用户的SSH访问以进行管理.要使用auto-SSH从Linux到Windows打开隧道,您需要一些适用于Windows的SSH serverother.

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

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

花哨的解决方案(在这个例子中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启用用户执行连接,然后他们可以捎带它.

相关文章
相关标签/搜索