AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 903253
Accepted
John
John
Asked: 2018-03-19 03:29:41 +0800 CST2018-03-19 03:29:41 +0800 CST 2018-03-19 03:29:41 +0800 CST

许多服务器的 SSH 访问网关

  • 772

通过 Ansible 管理多台服务器,目前超过 90 台,有 3 个 devops。一切都很好,但是现在存在一个巨大的安全问题。每个 devop 都使用自己的本地 ssh 密钥来直接访问服务器。每个 devop 都使用一台笔记本电脑,每台笔记本电脑都可能受到攻击,从而使整个 prod 服务器网络面临攻击。

我正在寻找一种解决方案来集中管理访问,从而阻止对任何给定密钥的访问。与将密钥添加到 bitbucket 或 github 的方式没有什么不同。

在我的脑海中,我会假设解决方案是从一台机器(网关)到所需的产品服务器的隧道......在传递网关时,请求将获取一个新密钥并用于访问产品服务器。结果是我们可以通过拒绝对网关的访问在几秒钟内快速有效地终止对任何 devop 的访问。

在此处输入图像描述

这是很好的逻辑吗?有没有人已经看到了解决这个问题的解决方案?

ssh
  • 6 6 个回答
  • 4079 Views

6 个回答

  • Voted
  1. Best Answer
    Sven
    2018-03-19T03:36:35+08:002018-03-19T03:36:35+08:00

    这太复杂了(检查密钥是否可以访问特定的产品服务器)。将网关服务器用作接受每个有效密钥的跳转主机(但可以轻松删除对特定密钥的访问,从而依次删除对所有服务器的访问),然后仅将允许的密钥添加到每个相应的服务器。之后,确保您只能通过跳转主机访问每个服务器的 SSH 端口。

    这是标准方法。

    • 24
  2. Henk Langeveld
    2018-03-19T06:37:36+08:002018-03-19T06:37:36+08:00

    工程师不应该直接从他们的笔记本电脑上运行 ansible,除非这是一个开发/测试环境。

    相反,有一个从 git 中提取运行手册的中央服务器。这允许额外的控制(四只眼睛,代码审查)。

    将此与堡垒或跳跃主机结合使用以进一步限制访问。

    • 11
  3. Patrick Mevzek
    2018-04-07T18:01:18+08:002018-04-07T18:01:18+08:00

    Netflix 实施了您的设置并发布了一些免费软件来帮助解决这种情况。

    请参阅此视频https://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-access或此演示文稿https://speakerdeck.com/rlewis/how-netflix-gives- all-its-engineers-ssh-access-to-instances-running-in-production的核心点:

    我们将回顾我们的 SSH 堡垒架构,其核心使用 SSO 对工程师进行身份验证,然后为每个用户颁发带有短期证书的凭据,以对实例进行堡垒的 SSH 身份验证。这些短暂的凭证降低了与它们丢失相关的风险。我们将介绍这种方法如何让我们在事后进行审计并自动发出警报,而不是在授予访问权限之前减慢工程师的速度。

    他们的软件可在此处获得:https ://github.com/Netflix/bless

    即使您没有实施他们的整个解决方案,也有一些有趣的收获:

    • 他们使用 SSH 证书而不仅仅是密钥;您可以在证书中放入更多元数据,从而为每个要求启用很多约束,并允许更简单的审计
    • 使用非常短期(如 5 分钟)的证书有效期(即使证书过期,SSH 会话仍保持打开状态)
    • 使用 2FA 也使脚本编写变得困难并迫使开发人员寻找其他解决方案
    • 一个特定的子模块,在其基础设施之外并通过其运行所在的云提供的安全机制得到适当保护,动态处理生成证书,以便每个开发人员都可以访问任何主机
    • 2
  4. Aleksandr Chendev
    2022-04-07T04:44:01+08:002022-04-07T04:44:01+08:00

    查看开源 CLD 软件,它解决了这个问题:https ://github.com/classicdevops/cld

    您的工程师将能够根据访问矩阵访问任何服务器,它还提供通过 IP 地址的 2FA 作为选项。

    • 2
  5. random
    2019-07-13T05:07:07+08:002019-07-13T05:07:07+08:00

    OneIdentity (ex-Balabit) SPS正是您在这种情况下需要的东西。使用此设备,您可以管理基本上任何机器上的用户身份、跟踪用户行为、监控和警报,并为用户所做的任何事情编制索引以供以后审查。

    • 1
  6. Manu Vamadevan
    2018-04-14T04:37:03+08:002018-04-14T04:37:03+08:00

    我的建议是禁止来自用户机器的 SSH 访问。

    相反,你应该

    1. 在 Git 中托管剧本。
    2. 将“访问服务器”变成 Jenkins 服务器。
    3. 仅向 devops 用户授予所需的 Jenkins 访问权限。
    4. 通过 HTTP 在 Jenkins 上通过构建作业执行 Ansible 播放。
    5. 作为一项额外的安全措施,如果需要,请禁用 Jenkins CLI。

    示例执行模型,

    1. Jenkins Ansible 插件:https ://wiki.jenkins.io/display/JENKINS/Ansible+Plugin

    或者

    1. 经典 shell - 执行类型的作业。手动添加构建步骤,包括 git checkout。

    如果您的服务器资源有限,同样的 Jenkins 服务器也可以托管 Git(scm-manager),但如果其中一台开发人员机器被感染,则会存在额外的安全风险。您可以通过断开 Jenkins 服务器与 Internet 的连接来缓解这种情况,并在本地解决 Ansible 依赖项。

    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve