【问题标题】:Implicit Remoting Authentication Double Hop issue隐式远程身份验证双跳问题
【发布时间】:2017-06-04 13:10:04
【问题描述】:

目标: 我正在利用隐式远程处理来集中访问 150 多名员工的模块。其中一些模块将查询出站到 Internet 上的不同站点。

问题: 虽然用户可以通过以下方式成功远程访问服务器:

$session = New-PSSession -ComputerName ServerA -Authentication Kerberos

由于缺乏身份验证,它们在向 Internet 查询时被代理阻止。但是,用户可以向内部制作发送查询。

问题:

如何在我的 powershell 脚本中将 Kerberos 身份验证附加到出站到 Internet 的查询以使其通过代理?

其他信息:

-据我所知,根据: https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/

-Kerberos 身份验证使用“无约束委派”。因此,它应该在查询出站之前正确委派身份验证。我还检查了会话变量的外部范围,它不为空。

【问题讨论】:

    标签: powershell authentication proxy


    【解决方案1】:

    啊,我记得那篇文章。我认为您正在错误地阅读有关无约束委派的部分。这不是默认设置。默认情况下它是关闭的(这就是存在双跳问题的原因),因为它应该是。当它说不需要编码时,那是因为它完全是在代码之外配置的。

    您需要使用某种委托,无论是通过 Kerberos 还是 CredSSP 或其他方式。

    CredSSP can be used fairly securely if you understand exactly what's it doing and what the risk is,对于让一台机器将凭据委托给另一台机器的用例,我认为这可能是一个很好的用例。

    很多人不这样做,只是让每台机器都委托给其他机器,这很糟糕。

    我很难从你的描述中看出它是什么类型的代理,凭据真正需要去哪里等等,所以也许这是一个坏主意..


    如果您不想(或不应该)委托,另一种方法是在使用 RunAs 用户的 ServerA 上设置会话配置;在该会话中运行的所有代码都可以跳一跳,但这也可能很糟糕;所有代码都将作为该用户运行,而不是连接用户。它可以使审计成为一项挑战。这种方法应该只在特定情况下使用,听起来这不是其中之一。 I wrote an answer here that talks about session configurations.

    【讨论】:

    • @Badlarry 是的,这是可能的;如果可以(链接到的文章),请使用受约束的委派。我之前没有实施过,所以我没有任何直接的建议,但这篇文章似乎很全面,而且 cmets 中还有更多内容。不受约束的委派不是那么好,但它也是可能的(没有不受约束的新要求),但它涉及总是 icky 的 SPN。 TBH 我解决这个问题的首选方法是避免它(将流程或实现更改为不需要授权)。这是否可能取决于手头的确切问题。
    • @Badlarry 这需要在 ServerA 上进行额外配置,此时您的代码中唯一会改变的是将-ConfigurationName 添加到New-PSSessionI wrote an answer here that talks about session configurations.
    • @mjolinor 虚拟帐户只是本地帐户,不是吗?然后它将无法使用 kerberos 进行另一跳。
    • @Badlarry 设置为 Register-PSSessionConfiguration -RunAsCredential。它需要一个[PSCredential] 对象。
    • 虚拟账户是本地的。理想情况下,您应该使用虚拟帐户在所有服务器上创建受限会话,以防止横向移动。
    猜你喜欢
    • 2019-05-19
    • 2019-04-12
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2012-03-29
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多