SEC06-BP02 Bereitstellen von Datenverarbeitung über gehärtete Images
Bieten Sie weniger Möglichkeiten für einen unbeabsichtigten Zugriff auf Ihre Laufzeitumgebungen, indem Sie sie über gehärtete Images bereitstellen. Beziehen Sie Laufzeit-Abhängigkeiten wie Container-Images und Anwendungsbibliotheken nur von vertrauenswürdigen Registern und überprüfen Sie deren Signaturen. Erstellen Sie Ihre eigenen privaten Register, um vertrauenswürdige Images und Bibliotheken für die Verwendung in Ihren Build- und Bereitstellungsprozessen zu speichern.
Gewünschtes Ergebnis: Ihre Datenverarbeitungsressourcen werden über gehärtete Baseline-Images bereitgestellt. Sie rufen externe Abhängigkeiten, wie Container-Images und Anwendungsbibliotheken, nur aus vertrauenswürdigen Registern ab und überprüfen deren Signaturen. Diese werden in privaten Registern gespeichert, auf die Ihre Build- und Bereitstellungsprozesse verweisen können. Sie überprüfen und aktualisieren Images und Abhängigkeiten regelmäßig, um sich vor neu entdeckten Schwachstellen zu schützen.
Typische Anti-Muster:
-
Abrufen von Images und Bibliotheken aus vertrauenswürdigen Registern, ohne deren Signaturen zu überprüfen oder Schwachstellen zu scannen, bevor sie eingesetzt werden
-
Härtung von Images, ohne sie regelmäßig auf neue Schwachstellen zu testen oder auf die neueste Version zu aktualisieren
-
Installation oder Nichtentfernung von Softwarepaketen, die während des erwarteten Lebenszyklus des Images nicht benötigt werden
-
Vertrauen auf Patches als einzige Methode, um Datenverarbeitungsressourcen in der Produktion auf dem neuesten Stand zu halten Die alleinige Verwendung von Patches kann immer noch dazu führen, dass Datenverarbeitungsressourcen im Laufe der Zeit von dem gehärteten Standard abweichen. Patches sind außerdem nicht in der Lage, Malware zu entfernen, die möglicherweise von einem Bedrohungsakteur während eines Sicherheitsvorfalls installiert wurde.
Vorteile der Nutzung dieser bewährten Methode: Das Härten von Images trägt dazu bei, die Anzahl der in Ihrer Laufzeitumgebung verfügbaren Pfade zu reduzieren, die unbeabsichtigten Zugriff auf nicht autorisierte Benutzer oder Services ermöglichen können. Auch das Ausmaß der Auswirkungen eines unbeabsichtigten Zugriffs kann damit verringert werden.
Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Hoch
Implementierungsleitfaden
Um Ihre Systeme abzusichern, sollten Sie mit den neuesten Versionen von Betriebssystemen, Container-Images und Anwendungsbibliotheken beginnen. Wenden Sie Patches auf bekannte Probleme an. Reduzieren Sie das System auf ein Minimum, indem Sie nicht benötigte Anwendungen, Services, Gerätetreiber, Standardbenutzer und andere Anmeldeinformationen entfernen. Ergreifen Sie alle weiteren erforderlichen Maßnahmen, wie z. B. das Deaktivieren von Ports, um eine Umgebung zu schaffen, die nur über die von Ihren Workloads benötigten Ressourcen und Fähigkeiten verfügt. Von dieser Baseline aus können Sie dann Software, Agenten oder andere Prozesse installieren, die Sie für Zwecke wie die Überwachung des Workloads oder die Verwaltung von Schwachstellen benötigen.
Sie können den Aufwand für die Systemhärtung verringern, indem Sie Anleitungen nutzen, die von vertrauenswürdigen Quellen bereitgestellt werden, wie z. B. dem Center for Internet Security
Es gibt zwar gehärtete Images und EC2 Image Builder-Rezepte, die die CIS- oder DISA-STIG-Empfehlungen anwenden. Sie werden jedoch möglicherweise feststellen, dass deren Konfiguration die erfolgreiche Ausführung Ihrer Software verhindert. In dieser Situation können Sie von einem nicht gehärteten Basis-Image ausgehen, Ihre Software installieren und dann schrittweise CIS-Kontrollen anwenden, um deren Auswirkungen zu testen. Testen Sie bei jeder CIS-Kontrolle, die die Ausführung Ihrer Software verhindert, ob Sie stattdessen die detaillierteren Härtungsempfehlungen der DISA implementieren können. Behalten Sie den Überblick über die verschiedenen CIS-Kontrollen und DISA-STIG-Konfigurationen, die Sie erfolgreich anwenden können. Verwenden Sie diese, um Ihre Rezepte für die Imagehärtung in EC2 Image Builder entsprechend zu definieren.
Für containerisierte Workloads sind gehärtete Images von Docker im öffentlichen Repository
Ähnlich wie bei Betriebssystemen und Container-Images können Sie auch Code-Pakete (oder Bibliotheken) aus öffentlichen Repositorys beziehen, und zwar mithilfe von Tools wie pip, npm, Maven und NuGet. Wir empfehlen Ihnen, Code-Pakete zu verwalten, indem Sie private Repositorys, wie z. B. innerhalb von AWS CodeArtifact
Für Serverless Workloads, die AWS Lambda verwenden, vereinfachen Sie die Verwaltung von Paketabhängigkeiten mit Lambda-Ebenen. Verwenden Sie Lambda-Ebenen, um einen Satz von Standardabhängigkeiten, die von verschiedenen Funktionen gemeinsam genutzt werden, in einem eigenständigen Archiv zu konfigurieren. Sie können Ebenen durch einen eigenen Erstellungsprozess erstellen und pflegen, sodass Ihre Funktionen immer auf dem neuesten Stand sind.
Implementierungsschritte
-
Härten des Betriebssystems: Verwenden Sie Basis-Images aus vertrauenswürdigen Quellen als Grundlage für die Erstellung Ihrer gehärteten AMIs. Mit EC2 Image Builder
können Sie die auf Ihren Images installierte Software anpassen. -
Härten von containerisierten Ressourcen: Konfigurieren Sie containerisierte Ressourcen so, dass sie den bewährten Methoden im Bereich Sicherheit entsprechen. Implementieren Sie bei der Verwendung von Containern ECR Image Scanning in Ihrer Build-Pipeline und in regelmäßigen Abständen im Vergleich mit Ihrem Image-Repository, um nach CVEs in Ihren Containern zu suchen.
-
Wenn Sie eine Serverless-Implementierung mit AWS Lambda verwenden, nutzen Sie Lambda-Ebenen, um den Funktionscode der Anwendung und gemeinsam genutzte abhängige Bibliotheken zu segmentieren. Konfigurieren Sie die Codesignierung für Lambda, um sicherzustellen, dass nur vertrauenswürdiger Code in Ihren Lambda-Funktionen ausgeführt wird.
Ressourcen
Zugehörige bewährte Methoden:
Zugehörige Videos:
Zugehörige Beispiele: