Verwaltung mehrerer Server, derzeit über 90, mit 3 DevOps über Ansible. Alles funktioniert prima, allerdings gibt es derzeit ein riesiges Sicherheitsproblem. Jeder DevOp verwendet seinen eigenen lokalen SSH-Schlüssel, um direkt auf die Server zuzugreifen. Jeder DevOp verwendet einen Laptop, und jeder Laptop könnte potenziell kompromittiert werden, wodurch das gesamte Netzwerk der Produktionsserver einem Angriff ausgesetzt wäre.
Ich suche nach einer Lösung, um den Zugriff zentral zu verwalten und somit den Zugriff für einen bestimmten Schlüssel zu blockieren. Nicht unähnlich der Art und Weise, wie Schlüssel zu Bitbucket oder GitHub hinzugefügt werden.
Spontan würde ich annehmen, dass die Lösung ein Tunnel von einer Maschine, dem Gateway, zum gewünschten Produktionsserver wäre. Beim Passieren des Gateways würde die Anfrage einen neuen Schlüssel abrufen und verwenden, um Zugriff auf den Produktionsserver zu erhalten. Das Ergebnis wäre, dass wir den Zugriff für jedes Entwicklungsgerät schnell und effizient innerhalb von Sekunden unterbinden können, indem wir einfach den Zugriff auf das Gateway verweigern.
Ist das eine gute Logik? Hat jemand bereits eine Lösung gesehen, um dieses Problem zu umgehen?
Antwort1
Das ist zu kompliziert (überprüfen, ob ein Schlüssel Zugriff auf einen bestimmten Produktionsserver hat). Verwenden Sie den Gateway-Server als Jump-Host, der jeden gültigen Schlüssel akzeptiert (aber problemlos den Zugriff für einen bestimmten Schlüssel entfernen kann, wodurch wiederum der Zugriff auf alle Server entfernt wird) und fügen Sie dann nur die zulässigen Schlüssel zu den jeweiligen Servern hinzu. Stellen Sie anschließend sicher, dass Sie den SSH-Port jedes Servers nur über den Jump-Host erreichen können.
Dies ist das Standardverfahren.
Antwort2
Ingenieure sollten Ansible nicht direkt von ihrem Laptop aus ausführen, es sei denn, es handelt sich um eine Entwicklungs-/Testumgebung.
Verwenden Sie stattdessen einen zentralen Server, der die Runbooks aus Git zieht. Dies ermöglicht zusätzliche Kontrollen (Vier-Augen-Prinzip, Codeüberprüfung).
Kombinieren Sie dies mit einer Bastion oder einem Jump-Host, um den Zugriff weiter einzuschränken.
Antwort3
Netflix hat Ihr Setup implementiert und kostenlose Software veröffentlicht, um diese Situation zu verbessern.
Sehen Sie dieses Videohttps://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-accessoder diese Präsentation unterhttps://speakerdeck.com/rlewis/wie-netflix-all-its-engineers-ssh-access-to-instances-running-in-production-gibtmit dem Kernpunkt:
Wir überprüfen unsere SSH-Bastion-Architektur, die im Kern SSO zur Authentifizierung von Ingenieuren verwendet und dann pro Benutzer Anmeldeinformationen mit kurzlebigen Zertifikaten für die SSH-Authentifizierung der Bastion gegenüber einer Instanz ausgibt. Diese kurzlebigen Anmeldeinformationen verringern das damit verbundene Risiko, dass sie verloren gehen. Wir erläutern, wie dieser Ansatz es uns ermöglicht, nachträglich zu prüfen und automatisch zu warnen, anstatt Ingenieure auszubremsen, bevor sie Zugriff gewähren.
Ihre Software ist hier verfügbar:https://github.com/Netflix/bless
Einige interessante Erkenntnisse, auch wenn Sie nicht die gesamte Lösung implementieren:
- Sie verwenden SSH-Zertifikate statt nur Schlüssel; Sie können weitaus mehr Metadaten in das Zertifikat einfügen, wodurch viele Einschränkungen je nach Anforderungen möglich sind und auch einfachere Audits möglich sind
- Verwendung von Zertifikaten mit sehr kurzer Gültigkeitsdauer (etwa 5 Minuten) (die SSH-Sitzungen bleiben auch nach Ablauf des Zertifikats geöffnet)
- Die Verwendung von 2FA erschwert auch das Scripting und zwingt Entwickler, andere Lösungen zu finden
- Ein spezielles Submodul außerhalb der Infrastruktur, das durch die Sicherheitsmechanismen der Cloud, in der es ausgeführt wird, ordnungsgemäß geschützt ist, kümmert sich dynamisch um die Generierung von Zertifikaten, sodass jeder Entwickler auf jeden Host zugreifen kann.
Antwort4
OneIdentity (ehemals Balabit) SPSist genau das, was Sie in diesem Szenario brauchen. Mit diesem Gerät können Sie die Benutzeridentitäten auf praktisch allen Computern verwalten, das Benutzerverhalten verfolgen, überwachen und warnen und alles, was die Benutzer tun, für spätere Überprüfungen indizieren.