Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Härten von Windows-Container-Images
Härten Sie Ihre Windows-Container-Images? Im Laufe der Jahre habe ich mit Kunden auf der ganzen Welt zusammengearbeitet, um ihnen bei der Migration älterer Workloads auf Container zu helfen, insbesondere Windows-Workloads. Mit mehr als 20 Jahren Erfahrung habe ich gesehen, wie Unternehmen erhebliche Anstrengungen und Ressourcen darauf verwendet haben, ihre Windows-Server zu sichern und alles zu implementieren, von CIS-Benchmarks bis hin zu Runtime-Virenschutz zum Schutz sensibler Daten.
Es hat sich jedoch ein besorgniserregender Trend herausgebildet. Da diese hochsicheren virtuellen Maschinen zu Containern modernisiert werden, werden viele wichtige Sicherheitsverfahren übersehen. Bewährte Methoden zur Windows-Sicherheit, vom Basisimage (OS) bis hin zu Webdiensten wie IIS, werden häufig vernachlässigt, wobei der Schwerpunkt hauptsächlich auf der Sicherung des Container-Hosts liegt. Es ist wichtig zu wissen, dass Container zwar in isolierten Namespaces operieren, aber dennoch Kernel-Primitive mit dem Host gemeinsam haben. Angreifer sind in der Regel eher an lateralen Bewegungen interessiert, als den Container-Host direkt ins Visier zu nehmen, wodurch sie schwache Sicherheitseinstellungen des Containers ausnutzen und auf sensible Daten zugreifen können.
Ziel der Dokumentation ist es, einige wichtige Sicherheitseinstellungen hervorzuheben, die Sie speziell für Windows-Container implementieren sollten, die ASP.NET
Websites auf IIS hosten. Wir werden uns auf vier Schlüsselbereiche konzentrieren:
-
Richtlinien zur Kontosicherheit
-
Richtlinien für die Prüfung
-
Bewährte Methoden zur IIS-Sicherheit
-
Prinzip der geringsten Rechte
Wir werden zunächst untersuchen, warum jede dieser Sicherheitskonfigurationen für den Schutz Ihrer Windows-Container von entscheidender Bedeutung ist, und untersuchen die spezifischen Risiken, die sie mindern, und die Sicherheitsvorteile, die sie bieten. Als Nächstes gehen wir einen Codeausschnitt durch, der zeigt, wie Sie diese Konfigurationen korrekt in Ihrem Dockerfile implementieren und so sicherstellen, dass Ihr Container vor potenziellen Bedrohungen geschützt ist. Abschließend werden wir jede Einstellung detailliert aufschlüsseln und eine umfassende Erläuterung ihrer Funktion, ihrer Auswirkungen auf die Containersicherheit und ihres Beitrags zum Schutz Ihrer Anwendungen geben. Dieser Ansatz zeigt Ihnen nicht nur, wie Sie diese Best Practices anwenden können, sondern gibt Ihnen auch Einblicke, warum sie für die Aufrechterhaltung eines robusten Sicherheitsstatus in containerisierten Umgebungen unerlässlich sind.
1. Konfigurieren Sie Kontorichtlinien (Passwort oder Sperrung) mithilfe der lokalen Sicherheitsrichtlinien und der Registrierung
Windows Server Core ist eine Minimalinstallationsoption, die als Teil des [EKS Optimized Windows AMI] (https://docs.aws.amazon.com/eks/latest/userguide/eks- optimized-windows-ami .html) verfügbar ist. Die Konfiguration von Kontorichtlinien (Passwort oder Sperrung) mithilfe von lokalen Sicherheitsrichtlinien und der Registrierung erhöht die Systemsicherheit, indem robuste Passwort- und Sperrregeln durchgesetzt werden. Diese Richtlinien verlangen von Benutzern, sichere Passwörter mit einer definierten Mindestlänge und Komplexität zu erstellen, um sie vor häufigen passwortbezogenen Angriffen zu schützen.
Durch die Festlegung eines maximalen Kennwortalters werden Benutzer aufgefordert, ihre Passwörter regelmäßig zu aktualisieren, wodurch die Wahrscheinlichkeit, dass Anmeldeinformationen kompromittiert werden, verringert wird. Sperrrichtlinien bieten eine zusätzliche Schutzebene, indem sie Konten nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche vorübergehend sperren und so Brute-Force-Angriffe verhindern. Durch die Konfiguration dieser Einstellungen über die Windows-Registrierung können Administratoren diese Sicherheitsmaßnahmen auf Systemebene durchsetzen und so für Einheitlichkeit und Compliance im gesamten Unternehmen sorgen. Die Anwendung dieser Kontorichtlinien in einem Windows-Container ist für die Aufrechterhaltung der Sicherheitskonsistenz unerlässlich, auch wenn Container oft kurzlebig sind und für isolierte Workloads vorgesehen sind:
Konsistenz der Sicherheit
-
Konformität: Die Durchsetzung einheitlicher Kennwortrichtlinien und Sperrregeln in Containern trägt zur Einhaltung der Sicherheitsbestimmungen bei, insbesondere in Umgebungen, in denen strenge Zugriffskontrollen erforderlich sind (z. B. Einhaltung gesetzlicher Vorschriften wie HIPAA, PCI-DSS).
-
Gehärtete Container: Durch die Anwendung dieser Einstellungen wird sichergestellt, dass Ihr Windows-Container vor unbefugtem Zugriff oder passwortbasierten Angriffen geschützt ist, wodurch die Sicherheitslage Ihres Containers an die umfassenderen Systemsicherheitsrichtlinien angepasst wird.
Schutz vor Brute-Force-Angriffen
-
Kontosperrung: Diese Einstellungen schützen vor Brute-Force-Anmeldeversuchen, indem Konten nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche gesperrt werden. Dadurch wird verhindert, dass Angreifer eine unbegrenzte Anzahl von Passwörtern ausprobieren.
-
Komplexität von Passwörtern: Die Anforderung komplexer Passwörter mit ausreichender Länge verringert die Wahrscheinlichkeit, dass schwache Passwörter ausgenutzt werden, selbst in isolierten containerisierten Umgebungen.
Szenarien mit mehreren Benutzern
-
Wenn Ihre containerisierte Anwendung für mehrere Benutzer konzipiert ist oder eine Benutzerauthentifizierung erfordert, stellt die Durchsetzung von Kennwortrichtlinien sicher, dass die Benutzerkonten innerhalb des Containers strenge Sicherheitsregeln einhalten und den Zugriff auf autorisierte Benutzer beschränken.
Persistente Windows-Container
-
Container gelten zwar im Allgemeinen als kurzlebig, aber bestimmte Windows-Container können langfristige Dienste ausführen oder die Benutzerverwaltung übernehmen. Daher ist es wichtig, angemessene Sicherheitsrichtlinien durchzusetzen, die denen eines normalen Windows-Servers ähneln.
Konsistenz in Hybridumgebungen
-
Wenn Sie in Ihrer Infrastruktur sowohl virtuelle Maschinen als auch Container ausführen, gewährleistet die Anwendung derselben Sicherheitsrichtlinien (z. B. password/lockout Richtlinien) in allen Umgebungen einheitliche Sicherheitsstandards und vereinfacht so die Steuerung und Verwaltung.
Zusammenfassend lässt sich sagen, dass die Anwendung dieser Kontorichtlinien innerhalb von Windows-Containern sicherstellt, dass Ihre Container keine Schwachstelle in Ihrer Sicherheitsstrategie darstellen. Sie schützen vor Passwortangriffen und sorgen für Konsistenz in Ihrer gesamten Umgebung.
Dockerfile:
# Configure account policies for password complexity and lockout RUN powershell -Command \ "Write-Output 'Configuring Account Policies (Password/Lockout)...'; \ NET ACCOUNTS /MINPWLEN:14 /MAXPWAGE:60 /MINPWAGE:14 /LOCKOUTTHRESHOLD:5
Erklärung:
In diesem Abschnitt werden Kontorichtlinien für Passwort- und Sperreinstellungen über die Windows-Registrierung konfiguriert. Diese Richtlinien tragen zur Durchsetzung der Sicherheit bei, indem sie die Kennwortanforderungen und die Schwellenwerte für die Kontosperrung kontrollieren.
-
MinimumPasswordLength (MINPWLEN) = 14 Diese Einstellung definiert die Mindestanzahl an Zeichen für ein Passwort. Der Bereich umfasst 0-14 Zeichen; die Standardeinstellung sind sechs Zeichen.
-
MaximumPasswordAge (MAXPWAGE) = 60 Diese Einstellung definiert die maximale Anzahl von Tagen, an denen ein Passwort gültig ist. Bei Verwendung von UNLIMITED wird kein Limit angegeben. /MAXPWAGE kann nicht kleiner als /MINPWAGE sein. Der Bereich liegt zwischen 1 und 999. Die Standardeinstellung ist 90 Tage
-
Lockout Threshold (LOCKOUTTHRESHOLD) = 5 Diese Einstellung definiert den Schwellenwert für fehlgeschlagene Anmeldeversuche. Nach 5 falschen Versuchen wird das Konto gesperrt.
Diese Einstellungen tragen dazu bei, die Passwortsicherheit zu verbessern und Brute-Force-Angriffe zu verhindern, indem strenge Passwortrichtlinien durchgesetzt und Konten nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche gesperrt werden.
2. Richtlinien für die Prüfung
Überwachungsrichtlinien sind für Windows-Container wichtig, da sie wichtige Einblicke in Sicherheitsereignisse wie Anmeldeversuche und die Nutzung von Rechten bieten und so dazu beitragen, unbefugten Zugriff zu erkennen, Benutzeraktivitäten zu überwachen und die Einhaltung gesetzlicher Standards sicherzustellen. Selbst in der kurzlebigen Natur von Containern sind Auditprotokolle für die Untersuchung von Vorfällen, die proaktive Erkennung von Bedrohungen und die Aufrechterhaltung eines konsistenten Sicherheitsstatus in containerisierten Umgebungen unerlässlich.
Sicherheitsüberwachung und Einhaltung von Vorschriften:
-
Benutzeraktivitäten nachverfolgen: Mithilfe von Überwachungsrichtlinien können Administratoren Benutzeraktivitäten wie Anmeldeversuche und die Nutzung von Rechten innerhalb des Containers überwachen. Dies ist wichtig, um unbefugten Zugriff oder verdächtiges Verhalten zu erkennen.
-
Einhaltung gesetzlicher Vorschriften: Viele Unternehmen müssen Sicherheitsereignisse protokollieren, um Vorschriften wie HIPAA, PCI-DSS und GDPR einzuhalten. Durch die Aktivierung von Überwachungsrichtlinien in Containern wird sichergestellt, dass Sie diese Anforderungen auch in containerisierten Umgebungen erfüllen.
Untersuchung von Vorfällen:
-
Forensik und Analyse: Wenn eine containerisierte Anwendung oder ein Dienst gefährdet ist, können Auditprotokolle wertvolle Erkenntnisse für die Analyse nach dem Vorfall liefern. Sie helfen Sicherheitsteams dabei, die von Angreifern ergriffenen Maßnahmen nachzuverfolgen oder festzustellen, wie es zu einer Sicherheitsverletzung kam.
-
Erkennung in Echtzeit: Mithilfe von Auditprotokollen können Administratoren Echtzeitwarnungen für kritische Ereignisse einrichten (z. B. fehlgeschlagene Anmeldeversuche, Rechteerweiterungen). Diese proaktive Überwachung hilft, Angriffe frühzeitig zu erkennen und ermöglicht schnellere Reaktionszeiten.
Konsistenz in allen Umgebungen:
-
Einheitlicher Sicherheitsstatus: Durch die Anwendung von Überwachungsrichtlinien in Containern über die Registrierung stellen Sie konsistente Sicherheitspraktiken sowohl in containerisierten als auch in nicht containerisierten Umgebungen sicher. Dadurch wird verhindert, dass Container zu einem blinden Fleck für die Sicherheitsüberwachung werden.
-
Transparenz in Hybridumgebungen: Für Unternehmen, die sowohl herkömmliche Windows-Server als auch Container betreiben, bieten Prüfungsrichtlinien eine ähnliche Transparenz und Kontrolle auf allen Plattformen, wodurch die Verwaltung einfacher und effektiver wird.
Verfolgung privilegierter Operationen:
-
Überwachung der Nutzung von Rechten: In Containerumgebungen, in denen Anwendungen mit erhöhten Rechten ausgeführt werden oder in denen administrative Aufgaben ausgeführt werden, gewährleistet die Prüfung privilegierter Operationen die Rechenschaftspflicht. Sie können protokollieren, wer auf vertrauliche Ressourcen zugegriffen oder kritische Aufgaben innerhalb des Containers ausgeführt hat.
-
Missbrauch von Rechten verhindern: Durch die Überwachung der Nutzung von Rechten können Sie erkennen, wenn nicht autorisierte Benutzer versuchen, ihre Rechte zu erweitern oder auf eingeschränkte Bereiche innerhalb des Containers zuzugreifen, wodurch interne oder externe Angriffe verhindert werden.
Erkennung unberechtigter Zugriffsversuche:
-
Fehlgeschlagene Anmeldeversuche: Durch die Aktivierung von Überwachungsrichtlinien für fehlgeschlagene Anmeldeversuche können Brute-Force-Angriffe oder unbefugte Versuche, auf containerisierte Anwendungen zuzugreifen, identifiziert werden. Auf diese Weise erhalten Sie einen Überblick darüber, wer versucht, wie oft Zugriff auf das System zu erhalten.
-
Überwachung von Kontosperrungen: Durch die Überwachung von Kontosperrungsereignissen können Administratoren potenzielle Aussperrungen erkennen und untersuchen, die durch verdächtige oder böswillige Aktivitäten verursacht werden.
Dauerhafte Sicherheit auch in kurzlebigen Umgebungen:
-
Flüchtig und doch sicher: Container sind zwar kurzlebig, was bedeutet, dass sie häufig gelöscht und neu erstellt werden können, aber Auditing spielt immer noch eine wichtige Rolle, um sicherzustellen, dass Sicherheitsereignisse erfasst werden, während der Container läuft. Dadurch wird sichergestellt, dass kritische Sicherheitsereignisse für die Dauer des Container-Lebenszyklus protokolliert werden.
Zentralisierte Protokollierung:
-
Weiterleitung von Protokollen an zentrale Systeme: Container können in zentrale Protokollierungssysteme (z. B. ELK-Stack, AWS CloudWatch) integriert werden, um Audit-Logs von mehreren Container-Instances zu erfassen. Dies ermöglicht eine bessere Analyse und Korrelation von Sicherheitsereignissen in Ihrer gesamten Infrastruktur.
Docker-Datei:
# Configure audit policies for logging security events RUN powershell -Command \ "Write-Host 'Configuring Audit Policy..'; \ Set-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Lsa' -Name 'SCENoApplyLegacyAuditPolicy' -Value 0; \ auditpol /set /category:"Logon/Logoff" /subcategory:"Logon" /failure:enable # Creates STDOUT on Windows Containers (check GitHub LogMonitor:: https://github.com/microsoft/windows-container-tools/blob/main/LogMonitor/README.md) COPY LogMonitor.exe LogMonitorConfig.json 'C:\\LogMonitor\\' WORKDIR /LogMonitor
Erklärung:
In diesem Abschnitt werden Überwachungsrichtlinien mithilfe von Registrierungsänderungen konfiguriert. Mit Überwachungsrichtlinien wird gesteuert, welche Sicherheitsereignisse von Windows protokolliert werden. Dies hilft bei der Überwachung und Erkennung unberechtigter Zugriffsversuche.
-
SCENoApplyLegacyAuditPolicy = 0 Dadurch wird das alte Überwachungsrichtlinienformat deaktiviert, sodass detailliertere Überwachungsrichtlinien möglich sind, die in späteren Versionen von Windows eingeführt wurden. Dies ist wichtig für moderne Überwachungskonfigurationen.
-
Auditpol-Unterkategorie: „Anmeldung“ Mit dieser Einstellung können sowohl erfolgreiche als auch fehlgeschlagene Anmeldeereignisse geprüft werden. Der Wert 3 bedeutet, dass Windows sowohl erfolgreiche als auch fehlgeschlagene Anmeldeversuche protokolliert. Dies hilft bei der Überwachung, wer auf das System zugreift, und bei der Erfassung fehlgeschlagener Anmeldeversuche.
Diese Überwachungsrichtlinien sind für die Sicherheitsüberwachung und die Einhaltung der Vorschriften von entscheidender Bedeutung, da sie detaillierte Protokolle wichtiger Sicherheitsereignisse wie Anmeldeversuche und die Verwendung privilegierter Operationen enthalten.
3. Bewährte Methoden zur IIS-Sicherheit für Windows-Container
Die Implementierung von bewährten IIS-Methoden in Windows-Containern ist aus mehreren Gründen wichtig, um sicherzustellen, dass Ihre Anwendungen sicher, leistungsstark und skalierbar sind. Container bieten zwar eine isolierte und schlanke Umgebung, erfordern aber dennoch eine korrekte Konfiguration, um Sicherheitslücken und Betriebsprobleme zu vermeiden. Aus diesem Grund ist es wichtig, die bewährten Methoden für IIS in Windows-Containern zu befolgen:
Sicherheit
-
Vermeidung häufiger Sicherheitslücken: IIS ist häufig ein Ziel für Angriffe wie Cross-Site Scripting (XSS), Clickjacking und Offenlegung von Informationen. Durch die Implementierung von Sicherheitsheadern (z. B., X-Content-Type-Options X-Frame-Options, und Strict-Transport-Security) können Sie Ihre Anwendung vor diesen Bedrohungen schützen.
-
Isolation allein reicht nicht aus: Container sind isoliert, aber eine falsch konfigurierte IIS-Instanz kann vertrauliche Informationen wie Serverversionsdetails, Verzeichnislisten oder unverschlüsselte Kommunikation preisgeben. Indem Sie Funktionen wie das Durchsuchen von Verzeichnissen und das Entfernen des IIS-Versionsheaders deaktivieren, minimieren Sie die Angriffsfläche.
-
Verschlüsselung und HTTPS: Bewährte Methoden, wie z. B. die Durchsetzung von reinen HTTPS-Verbindungen, stellen sicher, dass Daten während der Übertragung verschlüsselt werden, und schützen so vertrauliche Informationen davor, abgefangen zu werden.
Leistung
-
Effiziente Ressourcennutzung: Bewährte IIS-Methoden wie die Aktivierung dynamischer und statischer Komprimierung reduzieren die Bandbreitennutzung und verbessern die Ladezeiten. Diese Optimierungen sind besonders wichtig in containerisierten Umgebungen, in denen Ressourcen von Containern und dem Hostsystem gemeinsam genutzt werden.
-
Optimierte Protokollierung: Die korrekte Konfiguration der Protokollierung (z. B. einschließlich des X-Forwarded-For Headers) stellt sicher, dass Sie die Client-Aktivitäten verfolgen und gleichzeitig unnötigen Logging-Overhead minimieren können. Auf diese Weise können Sie relevante Daten für die Fehlerbehebung sammeln, ohne die Leistung zu beeinträchtigen.
Skalierbarkeit und Wartbarkeit
-
Konsistenz in allen Umgebungen: Indem Sie bewährte Methoden befolgen, stellen Sie sicher, dass Ihre IIS-Konfiguration über mehrere Container-Instances hinweg konsistent ist. Dies vereinfacht die Skalierung und stellt sicher, dass bei der Bereitstellung neuer Container dieselben Sicherheits- und Leistungsrichtlinien eingehalten werden.
-
Automatisierte Konfigurationen: Bewährte Methoden in Dockerfiles, wie das Festlegen von Ordnerberechtigungen und das Deaktivieren unnötiger Funktionen, stellen sicher, dass jeder neue Container automatisch korrekt konfiguriert wird. Dies reduziert manuelle Eingriffe und senkt das Risiko menschlicher Fehler.
Compliance
-
Erfüllung regulatorischer Anforderungen: In vielen Branchen gelten strenge regulatorische Anforderungen (z. B. PCI-DSS, HIPAA), die spezifische Sicherheitsmaßnahmen wie verschlüsselte Kommunikation (HTTPS) und Protokollierung von Kundenanfragen vorschreiben. Die Einhaltung der bewährten IIS-Methoden in Containern trägt dazu bei, die Einhaltung dieser Standards sicherzustellen.
-
Überprüfbarkeit: Die Implementierung von Prüfungsrichtlinien und die sichere Protokollierung ermöglichen die Rückverfolgbarkeit von Ereignissen, was bei Audits von entscheidender Bedeutung ist. Durch die Protokollierung des X-Forwarded-For Headers wird beispielsweise sichergestellt, dass die IP-Adressen der Clients in proxybasierten Architekturen korrekt aufgezeichnet werden.
Minimierung des Risikos in gemeinsam genutzten Umgebungen
-
Vermeidung von Fehlkonfigurationen: Container nutzen den Kernel des Hosts gemeinsam, und obwohl sie voneinander isoliert sind, kann eine schlecht konfigurierte IIS-Instanz Sicherheitslücken aufdecken oder Leistungsengpässe verursachen. Bewährte Methoden stellen sicher, dass jede IIS-Instanz optimal läuft, wodurch das Risiko containerübergreifender Probleme reduziert wird.
-
Zugriff mit geringsten Rechten: Durch die Festlegung geeigneter Berechtigungen für Ordner und Dateien innerhalb des Containers (z. B. mithilfe von Set-Acl in PowerShell) wird sichergestellt, dass Benutzer und Prozesse innerhalb des Containers nur über den erforderlichen Zugriff verfügen, wodurch das Risiko einer Rechteerweiterung oder Datenmanipulation verringert wird.
Resilienz in kurzlebigen Umgebungen
-
Vergänglichkeit von Containern: Container sind oft kurzlebig und werden häufig umgebaut. Durch die Anwendung bewährter IIS-Methoden wird sichergestellt, dass jeder Container sicher und konsistent konfiguriert ist, unabhängig davon, wie oft er erneut bereitgestellt wird. Dadurch wird verhindert, dass im Laufe der Zeit Fehlkonfigurationen eingeführt werden.
-
Minimierung potenzieller Fehlkonfigurationen: Durch die automatische Durchsetzung von Best Practices (z. B. Deaktivierung schwacher Protokolle oder Header) wird das Risiko einer Fehlkonfiguration bei Container-Neustarts oder -Updates minimiert.
Docker-Datei:
# Enforce HTTPS (disable HTTP) -- Only if container is target for SSL termination RUN powershell -Command \ "$httpBinding = Get-WebBinding -Name 'Default Web Site' -Protocol http | Where-Object { $_.bindingInformation -eq '*:80:' }; \ if ($httpBinding) { Remove-WebBinding -Name 'Default Web Site' -Protocol http -Port 80; } \ $httpsBinding = Get-WebBinding -Name 'Default Web Site' -Protocol https | Where-Object { $_.bindingInformation -eq '*:443:' }; \ if (-not $httpsBinding) { New-WebBinding -Name 'Default Web Site' -Protocol https -Port 443 -IPAddress '*'; }" # Use secure headers RUN powershell -Command \ "Write-Host 'Adding security headers...'; \ Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/sites/siteDefaults/logFile/customFields' -name "." -value @{logFieldName='X-Forwarded-For';sourceName='X-Forwarded-For';sourceType='RequestHeader'}; \ Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='Strict-Transport-Security';value='max-age=31536000; includeSubDomains'}; \ Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-Content-Type-Options';value='nosniff'}; \ Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-XSS-Protection';value='1; mode=block'}; \ Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-Frame-Options';value='DENY'};" # Disable IIS version disclosure RUN powershell -Command \ "Write-Host 'Disabling IIS version disclosure...'; \ Import-Module WebAdministration; \ Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "true";" # Set IIS Logging Best Practices RUN powershell -Command \ Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/directoryBrowse" -name "enabled" -value "false"; \ Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpErrors" -name "existingResponse" -value "PassThrough"; \ # Enable IIS dynamic and static compression to optimize performance RUN powershell -Command \ "Write-Host 'Enabling IIS compression...'; \ Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionDynamic; \ Import-Module WebAdministration; \ Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/urlCompression" -name "doDynamicCompression" -value "true"; \ Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/urlCompression" -name "doStaticCompression" -value "true" # Ensure proper folder permissions using PowerShell's Set-Acl RUN powershell -Command \ "Write-Host 'Setting folder permissions for IIS...'; \ $path = 'C:\\inetpub\\wwwroot'; \ $acl = Get-Acl $path; \ $iusr = New-Object System.Security.Principal.NTAccount('IIS_IUSRS'); \ $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($iusr, 'ReadAndExecute', 'ContainerInherit, ObjectInherit', 'None', 'Allow'); \ $acl.SetAccessRule($rule); \ $users = New-Object System.Security.Principal.NTAccount('Users'); \ $rule2 = New-Object System.Security.AccessControl.FileSystemAccessRule($users, 'ReadAndExecute', 'ContainerInherit, ObjectInherit', 'None', 'Allow'); \ $acl.SetAccessRule($rule2); \ Set-Acl -Path $path -AclObject $acl"
Erklärung:
Mit diesem Befehl wird IIS so konfiguriert, dass der X-Forwarded-For Header protokolliert wird. Dieser wird üblicherweise verwendet, um die ursprüngliche Client-IP-Adresse zu erfassen, wenn eine Anfrage einen Proxy oder einen Load Balancer durchläuft. Standardmäßig protokolliert IIS nur die IP-Adresse des Load Balancers oder Reverse-Proxys. Wenn Sie also dieses benutzerdefinierte Protokollfeld hinzufügen, können Sie die tatsächliche Client-IP für Sicherheitsüberprüfungen, Analysen und Problembehebung ermitteln.
-
X-Forwarded-For Header, der üblicherweise verwendet wird, um die ursprüngliche Client-IP-Adresse zu erfassen, wenn eine Anfrage einen Proxy oder Load Balancer durchläuft. Standardmäßig protokolliert IIS nur die IP-Adresse des Load Balancers oder Reverse-Proxys. Wenn Sie also dieses benutzerdefinierte Protokollfeld hinzufügen, können Sie die tatsächliche Client-IP für Sicherheitsüberprüfungen, Analysen und Problembehebung ermitteln.
-
Strict-Transport-Security (HSTS) Stellt sicher, dass Browser nur über HTTPS kommunizieren. Der Wert max-age=31536000 gibt an, dass diese Richtlinie für ein Jahr gilt, und wendet die Richtlinie auf alle Subdomains an. includeSubDomains
-
X-Content-Type-Options verhindert, dass Browser eine Antwort außerhalb des deklarierten Inhaltstyps „MIME-Sniffing“ durchführen. Dies hilft, einige Arten von Angriffen zu verhindern.
-
X-XSS-Protection Aktiviert den Cross-Site Scripting (XSS) -Schutz in Browsern.
-
X-Frame-Options verhindert das Einbetten der Seite in Iframes und schützt so vor Clickjacking-Angriffen.
-
Offenlegung der IIS-Version deaktivieren Mit diesem Befehl wird der Server-Header in HTTP-Antworten deaktiviert, wodurch standardmäßig die verwendete IIS-Version angezeigt wird. Das Ausblenden dieser Informationen trägt dazu bei, das Risiko zu verringern, dass Angreifer spezifische Sicherheitslücken in der IIS-Version identifizieren und gezielt einsetzen.
-
Reine HTTPS-Verbindungen aktivieren Dieser (auskommentierte) Abschnitt erzwingt HTTPS-Verbindungen und deaktiviert HTTP. Wenn es nicht kommentiert ist, konfiguriert das Dockerfile IIS so, dass es nur auf Port 443 (HTTPS) lauscht und die standardmäßige HTTP-Bindung auf Port 80 entfernt. Dies ist nützlich, wenn SSL innerhalb des Containers beendet wird, und stellt sicher, dass der gesamte Datenverkehr verschlüsselt wird.
-
Verzeichnissuche deaktivieren Verhindert, dass IIS eine Verzeichnisliste anzeigt, wenn kein Standarddokument vorhanden ist. Dadurch wird vermieden, dass die interne Dateistruktur Benutzern zugänglich gemacht wird.
-
Durch benutzerdefinierte Fehlerseiten weiterleiten Stellt sicher, dass IIS die Fehlerseiten der Anwendung durchlässt, wenn die Anwendung über eine eigene Fehlerbehandlung verfügt, anstatt die IIS-Standardfehlerseiten anzuzeigen.
-
Der detaillierte Fehlermodus konfiguriert IIS so, dass detaillierte Fehlermeldungen nur für lokale Anfragen angezeigt werden, sodass Entwickler Probleme diagnostizieren können, ohne vertrauliche Informationen externen Benutzern zugänglich zu machen.
-
Stellen Sie die richtigen Ordnerberechtigungen sicher Dieser Block konfiguriert die Ordnerberechtigungen für das IIS-Webstammverzeichnis (C:\inetpub\wwwroot). Er legt Lese- und Ausführungsberechtigungen für die Gruppen IIS_IUSRS und Users fest und stellt so sicher, dass diese Benutzer auf den Ordner zugreifen, aber keine Dateien ändern können. Durch das Einstellen der richtigen Berechtigungen wird das Risiko eines unbefugten Zugriffs oder einer Manipulation der auf dem Webserver gehosteten Dateien minimiert.
Die Einhaltung der bewährten IIS-Methoden in Windows-Containern stellt sicher, dass Ihre containerisierten Anwendungen sicher, leistungsstark und skalierbar sind. Diese Methoden tragen dazu bei, Sicherheitslücken zu vermeiden, die Ressourcennutzung zu optimieren, die Einhaltung von Vorschriften sicherzustellen und die Konsistenz zwischen Container-Instances aufrechtzuerhalten. Obwohl Container für den isolierten Einsatz konzipiert sind, ist eine korrekte Konfiguration erforderlich, um Risiken zu minimieren und die Zuverlässigkeit Ihrer Anwendung in Produktionsumgebungen zu gewährleisten.
4. Prinzip der geringsten Rechte
Das Prinzip der geringsten Rechte (Principle of Least Privilege, PolP) ist für Windows-Container aus mehreren wichtigen Gründen von entscheidender Bedeutung, insbesondere zur Erhöhung der Sicherheit und Minimierung von Risiken in containerisierten Umgebungen. Dieses Prinzip schreibt vor, dass ein System oder eine Anwendung mit den Mindestberechtigungen arbeiten sollte, die für ein ordnungsgemäßes Funktionieren erforderlich sind. Hier erfahren Sie, warum es in Windows-Containern wichtig ist:
Minimierung der Angriffsfläche
-
In Containern werden häufig Anwendungen ausgeführt, die mit verschiedenen Systemkomponenten interagieren. Je mehr Rechte eine Anwendung hat, desto umfassender ist ihr Zugriff auf diese Komponenten. Durch die Beschränkung der Berechtigungen des Containers auf das Notwendige reduziert PolP die Angriffsfläche erheblich, sodass es für einen Angreifer schwieriger wird, den Container auszunutzen, wenn er kompromittiert wird.
Begrenzung der Auswirkungen kompromittierter Container
-
Wenn ein Windows-Container kompromittiert ist, kann ein Angreifer durch die Ausführung von Anwendungen mit übermäßigen Rechten (z. B. Administrator- oder Root-Zugriff) die Kontrolle über wichtige Systemdateien erlangen oder Rechte auf dem gesamten Container-Host erweitern. Durch die Durchsetzung von PolP ist der Angreifer selbst bei einem Angriff auf einen Container in seinen Möglichkeiten eingeschränkt und verhindert so eine weitere Eskalation und den Zugriff auf sensible Ressourcen oder andere Container.
Schutz in Umgebungen mit mehreren Mandanten
-
In Cloud- oder Unternehmensumgebungen können mehrere Container auf derselben physischen oder virtuellen Infrastruktur ausgeführt werden. PolP stellt sicher, dass ein kompromittierter Container nicht auf Ressourcen oder Daten anderer Mandanten zugreifen kann. Diese Isolierung ist entscheidend für die Aufrechterhaltung der Sicherheit in gemeinsam genutzten Umgebungen mit mehreren Mandanten und schützt vor seitlicher Bewegung zwischen Containern.
Eindämmung der Eskalation von Rechten
-
Container, die mit hohen Rechten ausgeführt werden, können von Angreifern verwendet werden, um Rechte innerhalb des Systems zu erweitern. PolP mindert dieses Risiko, indem es den Zugriff des Containers auf Systemressourcen einschränkt und so unbefugte Aktionen oder Rechteerweiterungen außerhalb der Container-Umgebung verhindert.
Einhaltung von Vorschriften und Prüfung
-
Viele regulatorische Standards und Sicherheitsrahmen (z. B. PCI DSS, HIPAA, GDPR) verlangen von Systemen, dass sie sich an PolP halten, um den Zugriff auf sensible Daten zu beschränken. Der Betrieb von Windows-Containern mit eingeschränkten Rechten unterstützt Unternehmen bei der Einhaltung dieser Vorschriften und stellt sicher, dass Anwendungen nur Zugriff auf die Ressourcen erhalten, die sie speziell benötigen.
Verringerung des Risikos von Fehlkonfigurationen
-
Wenn Container mit unnötigen Rechten ausgeführt werden, kann selbst eine geringfügige Fehlkonfiguration zu schwerwiegenden Sicherheitslücken führen. Wenn beispielsweise ein Container, der als Administrator ausgeführt wird, versehentlich mit dem Internet in Kontakt kommt, könnte ein Angreifer die Kontrolle über das System erlangen. PolP trägt dazu bei, solche Risiken zu vermeiden, indem es standardmäßig eingeschränkte Rechte verwendet, wodurch Fehlkonfigurationen weniger gefährlich werden.
Verbesserter Sicherheitsstatus bei Containern
-
Durch die Einhaltung von PolP sind Container besser vom zugrundeliegenden Hostsystem und voneinander isoliert. Dadurch wird sichergestellt, dass die containerisierte Anwendung weniger wahrscheinlich auf Systemdateien oder Prozesse außerhalb des definierten Bereichs zugreift oder diese verändert, wodurch die Integrität des Host-Betriebssystems und anderer Workloads gewahrt bleibt.
Docker-Datei:
# Strongly recommended that when deploying a Windows server container to any multi-tenant environment that your application runs via the ContainerUser account USER ContainerUser
Erklärung:
In diesem Abschnitt gibt der ContainerUser Befehl USER an, dass die Anwendung im Windows-Container unter dem ContainerUser Konto statt unter dem Standard-Administratorkonto ausgeführt werden soll.
Aus folgenden Gründen ist dies wichtig, insbesondere in einer Umgebung mit mehreren Mandanten:
-
Prinzip der geringsten Rechte: Bei dem ContainerUser Konto handelt es sich um einen Benutzer ohne Administratorrechte mit eingeschränkten Rechten. Die Ausführung der Anwendung unter diesem Konto erfolgt nach dem Prinzip der geringsten Rechte, wodurch das Risiko einer Ausnutzung minimiert wird. Würde ein Angreifer die Anwendung kompromittieren, hätte er eingeschränkten Zugriff auf das System, wodurch der potenzielle Schaden reduziert würde.
-
Verbesserte Sicherheit: In Umgebungen mit mehreren Mandanten können Container dieselbe zugrunde liegende Infrastruktur gemeinsam nutzen. Running as ContainerUser stellt sicher, dass selbst wenn ein Container kompromittiert wird, dieser keine Administratorrechte hat, um auf kritische Systemdateien oder andere Container zuzugreifen oder diese zu ändern. Dadurch wird die Angriffsfläche erheblich reduziert.
-
Vermeidung des Root-Zugriffs: Standardmäßig können Container mit erhöhten Rechten ausgeführt werden (ähnlich dem Root-Zugriff in Linux-Containern), was gefährlich sein kann, wenn sie ausgenutzt werden. Durch die Verwendung ContainerUser wird sichergestellt, dass die Anwendung nicht mit unnötigen Administratorrechten ausgeführt wird, was es für Angreifer schwieriger macht, Rechte zu eskalieren.
-
Bewährte Methode für Umgebungen mit mehreren Mandanten: In Umgebungen, in denen sich mehrere Benutzer oder Organisationen dieselbe Infrastruktur teilen (z. B. in der Cloud), ist Sicherheit von entscheidender Bedeutung. Durch das Ausführen von Anwendungen mit eingeschränkten Berechtigungen wird verhindert, dass sich die Anwendung eines Mandanten auf andere auswirkt, wodurch sensible Daten und Ressourcen auf der gesamten Plattform geschützt werden.
Der ContainerUser Befehl USER stellt sicher, dass die Anwendung mit minimalen Rechten ausgeführt wird. Dadurch wird die Sicherheit in Umgebungen mit mehreren Mandanten erhöht, indem der Schaden begrenzt wird, der entstehen könnte, wenn der Container kompromittiert wird. Dies ist eine bewährte Methode, um unbefugten Zugriff oder die Eskalation von Rechten in einer containerisierten Umgebung zu verhindern.
Das Prinzip der geringsten Rechte ist für Windows-Container unverzichtbar, da es die potenziellen Auswirkungen von Sicherheitsverletzungen begrenzt, die Angriffsfläche reduziert und unbefugten Zugriff auf kritische Systemkomponenten verhindert. Indem Unternehmen containerisierte Anwendungen nur mit den erforderlichen Berechtigungen ausführen, können sie die Sicherheit und Stabilität ihrer Container-Umgebungen erheblich verbessern, insbesondere in Mehrmandanten- und gemeinsam genutzten Infrastrukturen.
Letzte Gedanken: Warum der Schutz Ihrer Windows-Container in der heutigen Bedrohungslandschaft ein Muss ist
In der heutigen, sich schnell entwickelnden digitalen Welt, in der Bedrohungen immer ausgefeilter und umfangreicher werden, ist der Schutz Ihrer Windows-Container nicht nur eine Empfehlung, sondern eine absolute Notwendigkeit. Container bieten eine einfache und flexible Möglichkeit, Anwendungen zu verpacken und bereitzustellen, sind jedoch nicht vor Sicherheitslücken gefeit. Da immer mehr Unternehmen Container einsetzen, um ihre Infrastruktur zu optimieren, werden sie auch zu einem potenziellen Ziel für Cyberangriffe, wenn sie nicht ausreichend geschützt sind.
Das Internet ist mit verschiedenen Bedrohungen überflutet — von böswilligen Akteuren, die ungepatchte Sicherheitslücken ins Visier nehmen, bis hin zu automatisierten Bots, die nach Fehlkonfigurationen suchen. Ohne die richtigen Sicherheitsmaßnahmen können Container ausgenutzt werden, um sensible Daten preiszugeben, Rechte zu erweitern oder als Einstiegspunkte für Angriffe zu dienen, die Ihre gesamte Infrastruktur gefährden können. Aus diesem Grund ist die Sicherheit von Containern genauso wichtig wie der Schutz aller anderen Teile Ihrer Umgebung.
Bei der Verwendung von Windows-Containern gelten weiterhin viele traditionelle bewährte Sicherheitsmethoden. Die Implementierung robuster Kontorichtlinien, die Sicherung von IIS-Konfigurationen, die Durchsetzung von HTTPS, die Verwendung strenger Firewallregeln und die Anwendung des Zugriffs mit den geringsten Rechten auf kritische Dateien sind alles wichtige Maßnahmen, die sicherstellen, dass der Container vor Angriffen geschützt bleibt. Darüber hinaus bieten regelmäßige Prüfungen und Protokollierung einen Überblick darüber, was im Container passiert, sodass Sie verdächtige Aktivitäten erkennen können, bevor sie zu einem echten Vorfall werden.
Die Sicherung von Windows-Containern entspricht auch den gesetzlichen Anforderungen, die den Schutz sensibler Daten und die Gewährleistung der Anwendungsintegrität vorschreiben. Da Cloud-native und containerisierte Architekturen immer mehr Verbreitung finden, trägt die Gewährleistung der Sicherheit auf jeder Ebene, vom Basis-Image bis zum laufenden Container, dazu bei, Ihren Betrieb zu schützen und das Vertrauen der Kunden zu wahren.
Zusammenfassend lässt sich sagen, dass die Zunahme containerisierter Anwendungen in Verbindung mit der wachsenden Zahl von Cyberbedrohungen die Containersicherheit zu einem unverzichtbaren Aspekt des modernen Infrastrukturmanagements macht. Durch die Einhaltung von Best Practices und die kontinuierliche Überwachung auf Sicherheitslücken können Unternehmen die Agilität und Effizienz von Windows-Containern nutzen, ohne Kompromisse bei der Sicherheit einzugehen. In dieser bedrohlichen Umgebung ist der Schutz Ihrer Windows-Container nicht nur eine Option, sondern ein Muss.