Verwaltung mehrerer Server, derzeit über 90 mit 3 Entwicklern über Ansible. Alles funktioniert super, aber es gibt gerade ein riesiges Sicherheitsproblem. Jeder Entwickler verwendet seinen eigenen lokalen SSH-Schlüssel, um direkt auf die Server zuzugreifen. Jeder Entwickler verwendet einen Laptop, und jeder Laptop kann möglicherweise kompromittiert werden, wodurch das gesamte Netzwerk von Prod-Servern für Angriffe geöffnet wird.
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, wie Schlüssel zu Bitbucket oder Github hinzugefügt werden.
Auf den ersten Blick würde ich annehmen, dass die Lösung ein Tunnel von einer Maschine, dem Gateway, zum gewünschten Prod-Server ist ... während die Anfrage über das Gateway einen neuen Schlüssel aufnimmt und verwendet, um Zugriff auf den Prod zu erhalten Server. Das Ergebnis wäre, dass wir den Zugriff für jeden Entwickler innerhalb von Sekunden schnell und effizient beenden können, indem wir nur den Zugriff auf das Gateway verweigern.
Ist das eine gute Logik? Hat jemand schon eine Lösung gefunden, um dieses Problem zu vereiteln?
quelle
Antworten:
Das ist zu kompliziert (Überprüfen, ob ein Schlüssel Zugriff auf einen bestimmten Produktserver hat). Verwenden Sie den Gatewayserver als Sprunghost, der jeden gültigen Schlüssel akzeptiert (aber den Zugriff auf einen bestimmten Schlüssel, der den Zugriff auf alle Server der Reihe nach aufhebt, problemlos entfernen kann), und fügen Sie dann jedem entsprechenden Server nur die zulässigen Schlüssel hinzu. Stellen Sie danach sicher, dass Sie den SSH-Port jedes Servers nur über den Jump-Host erreichen können.
Dies ist der Standardansatz.
quelle
Ingenieure sollten nicht direkt von ihrem Laptop aus laufen, es sei denn, dies ist eine Entwicklungs- / Testumgebung.
Verfügen Sie stattdessen über einen zentralen Server, der die Runbooks von Git abruft. Dies ermöglicht zusätzliche Kontrollen (vier Augen, Codeüberprüfung).
Kombiniere dies mit einer Bastion oder einem Sprunghost, um den Zugriff weiter einzuschränken.
quelle
Netflix hat Ihr Setup implementiert und eine kostenlose Software veröffentlicht, um diese Situation zu verbessern.
Sehen Sie dieses Video unter https://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-access oder diese Präsentation unter https://speakerdeck.com/rlewis/how-netflix-gives- all-its-engineer-ssh-zugriff-auf-in-produktion laufende-instanzen mit dem kernpunkt:
Ihre Software finden Sie hier: https://github.com/Netflix/bless
Einige interessante Tipps, auch wenn Sie nicht die gesamte Lösung implementieren:
quelle
OneIdentity (ex-Balabit) SPS ist genau das, was Sie in diesem Szenario benötigen. Mit dieser Appliance können Sie die Benutzeridentitäten auf praktisch allen Computern verwalten, das Benutzerverhalten nachverfolgen, überwachen und alarmieren sowie alle Aktivitäten der Benutzer für spätere Überprüfungen indizieren.
quelle
Mein Vorschlag ist, SSH-Zugriff von Benutzercomputern zu verbieten.
Stattdessen solltest du
Das Beispielausführungsmodell,
ODER
Wenn Sie nur über begrenzte Serverressourcen verfügen, kann derselbe Jenkins-Server auch Git (scm-manager) hosten, obwohl ein zusätzliches Sicherheitsrisiko besteht, wenn einer der Entwicklercomputer infiziert ist. Sie können dies möglicherweise abschwächen, indem Sie den Jenkins-Server vom Internet trennen und Ansible-Abhängigkeiten lokal auflösen.
quelle