多台伺服器的SSH存取網關

多台伺服器的SSH存取網關

透過 Ansible 管理多台伺服器,目前有 3 個 DevOps 超過 90 台伺服器。一切都很好,但是現在存在一個巨大的安全問題。每個開發人員都使用自己的本機 ssh 金鑰來直接存取伺服器。每個開發人員都使用一台筆記型電腦,並且每台筆記型電腦都可能受到損害,從而使整個產品伺服器網路面臨攻擊。

我正在尋找一種解決方案來集中管理訪問,從而阻止對任何給定密鑰的訪問。與將密鑰新增至 bitbucket 或 github 的方式沒有什麼不同。

Off the top of my head I would assume the solution would be a tunnel from one machine, the gateway, to the desired prod server... while passing the gateway the request would pick up a new key and use to gain access to the prod伺服器.結果是,我們只需拒絕對網關的訪問,就可以在幾秒鐘內快速有效地終止任何 devop 的存取。

在此輸入影像描述

這是好的邏輯嗎?有人已經看到解決這個問題的方法了嗎?

答案1

這太複雜了(檢查金鑰是否有權存取特定的產品伺服器)。使用網關伺服器作為接受每個有效金鑰的跳轉主機(但可以輕鬆刪除對特定金鑰的存取權限,從而依序刪除對所有伺服器的存取權限),然後僅將允許的金鑰新增至每個對應的伺服器。之後,請確保您只能透過跳轉主機到達每個伺服器的 SSH 連接埠。

這是標準方法。

答案2

工程師不應該直接從筆記型電腦執行 ansible,除非這是一個開發/測試環境。

相反,擁有一個從 git 提取 Runbook 的中央伺服器。這允許額外的控制(四眼、程式碼審查)。

將此與堡壘或跳轉主機結合以進一步限制存取。

答案3

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-product核心點:

我們將回顧我們的 SSH 堡壘架構,其核心使用 SSO 來對工程師進行身份驗證,然後為每個使用者頒發具有短期證書的憑證,以對實例進行堡壘的 SSH 身份驗證。這些短暫的憑證降低了遺失的風險。我們將介紹這種方法如何允許我們在事後進行審核並自動發出警報,而不是在授予存取權限之前減慢工程師的速度。

他們的軟體可以在這裡找到:https://github.com/Netflix/bless

即使您沒有實施他們的整個解決方案,也有一些有趣的收穫:

  • 他們使用 SSH 憑證而不僅僅是金鑰;您可以在憑證中放入更多的元數據,從而根據要求啟用許多約束,並允許更簡單的審核
  • 使用非常短期(例如 5 分鐘)的憑證有效性(即使憑證過期,SSH 會話仍保持開啟狀態)
  • 使用 2FA 也會使腳本編寫變得困難並迫使開發人員尋找其他解決方案
  • 一個特定的子模組,位於其基礎設施之外,並透過其運行所在的雲端提供的安全機制進行適當保護,動態處理生成證書,以便每個開發人員都可以存取任何主機

答案4

OneIdentity(前巴拉比特)SPS正是您在這種情況下所需要的。使用此設備,您可以管理基本上任何電腦上的使用者身份,追蹤使用者行為,監視和警報,並對使用者所做的任何事情建立索引以供以後查看。

相關內容