View a markdown version of this page

Härtung von Windows-Container-Images - Amazon EKS

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ärtung 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 in die Absicherung ihrer Windows-Server gesteckt haben und alles von CIS-Benchmarks bis hin zu Runtime-Virenschutz implementiert haben, um sensible Daten zu schützen.

Es zeichnet sich jedoch ein besorgniserregender Trend ab. Da diese hochsicheren virtuellen Maschinen zu Containern modernisiert werden, werden viele wichtige Verfahren zur Absicherung übersehen. Bewährte Sicherheitspraktiken von Windows, vom Basisimage (OS) bis hin zu Webdiensten wie IIS, werden oft 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 arbeiten, aber dennoch Kernel-Primitive mit dem Host gemeinsam nutzen. Angreifer sind in der Regel eher an seitlicher Bewegung interessiert, als direkt auf den Container-Host abzuzielen. Dadurch können sie schwache Sicherheitseinstellungen des Containers ausnutzen und auf sensible Daten zugreifen.

Das Ziel der Dokumentationen 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

  • Audit-Richtlinien

  • Bewährte Methoden zur IIS-Sicherheit

  • Prinzip der geringsten Rechte

Zunächst untersuchen wir, 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 sehen wir uns einen Codeausschnitt an, 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 ihre Funktion, ihre Auswirkungen auf die Containersicherheit und ihren Beitrag zum Schutz Ihrer Anwendungen umfassend erläutern. Dieser Ansatz zeigt Ihnen nicht nur, wie Sie diese Best Practices anwenden können, sondern gibt Ihnen auch einen Einblick, warum sie für die Aufrechterhaltung eines robusten Sicherheitsniveaus 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 minimale Installationsoption, die als Teil des [EKS-optimierten 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 lokaler 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 vor gängigen Angriffen im Zusammenhang mit Passwörtern zu schützen.

Durch die Festlegung eines maximalen Passwortalters werden Benutzer aufgefordert, ihre Passwörter regelmäßig zu aktualisieren, wodurch die Wahrscheinlichkeit, dass Zugangsdaten 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

  • Compliance: Die Durchsetzung konsistenter Passwort- und Sperrregeln in Containern trägt zur Einhaltung der Sicherheitsbestimmungen bei, insbesondere in Umgebungen, die strenge Zugriffskontrollen erfordern (z. B. die 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 kennwortbasierten Angriffen geschützt ist. Dadurch wird die Sicherheitslage Ihres Containers an die allgemeinen Systemsicherheitsrichtlinien angepasst.

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: Wenn komplexe Passwörter mit ausreichender Länge erforderlich sind, verringert sich die Wahrscheinlichkeit, dass schwache Passwörter ausgenutzt werden, selbst in isolierten Containerumgebungen.

Multi-User Szenarien

  • Wenn Ihre containerisierte Anwendung für die Verarbeitung mehrerer Benutzer konzipiert ist oder eine Benutzerauthentifizierung erfordert, wird durch die Durchsetzung von Kennwortrichtlinien sichergestellt, dass Benutzerkonten innerhalb des Containers strenge Sicherheitsregeln einhalten, sodass der Zugriff nur autorisierten Benutzern vorbehalten ist.

Persistente Windows-Container

  • Container gelten 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, ähnlich wie bei einem normalen Windows-Server.

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 in 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.

Docker-Datei:

# 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 die Kontorichtlinien für Passwort- und Sperreinstellungen über die Windows-Registrierung konfiguriert. Diese Richtlinien tragen zur Durchsetzung der Sicherheit bei, indem sie die Kennwortanforderungen und Schwellenwerte für die Kontosperrung kontrollieren.

  1. MinimumPasswordLength (MINPWLEN) = 14 Diese Einstellung definiert die Mindestanzahl von Zeichen für ein Passwort. Der Bereich liegt zwischen 0 und 14 Zeichen; die Standardeinstellung sind sechs Zeichen.

  2. MaximumPasswordAge (MAXPWAGE) = 60 Diese Einstellung definiert die maximale Anzahl von Tagen, für die ein Passwort gültig ist. Bei Verwendung von UNLIMITED wird kein Limit angegeben. /MAXPWAGE darf nicht kleiner als /MINPWAGE sein. Der Bereich liegt zwischen 1 und 999; die Standardeinstellung ist 90 Tage

  3. Sperrschwellenwert (LOCKOUTTHRESHOLD) = 5 Diese Einstellung definiert den Schwellenwert für fehlgeschlagene Anmeldeversuche. Nach 5 falschen Versuchen wird das Konto gesperrt.

Diese Einstellungen tragen zur Verbesserung der Passwortsicherheit bei und verhindern Brute-Force-Angriffe, indem sie strenge Passwortrichtlinien durchsetzen und Konten nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche sperren.

2. Audit-Richtlinien

Überwachungsrichtlinien sind für Windows-Container wichtig, da sie wichtige Einblicke in Sicherheitsereignisse wie Anmeldeversuche und die Nutzung von Rechten bieten. Sie helfen dabei, unbefugte Zugriffe zu erkennen, Benutzeraktivitäten zu überwachen und die Einhaltung gesetzlicher Standards sicherzustellen. Selbst wenn Container kurzlebig sind, sind Auditprotokolle für die Untersuchung von Vorfällen, die proaktive Erkennung von Bedrohungen und die Aufrechterhaltung einer konsistenten Sicherheitslage in containerisierten Umgebungen unerlässlich.

Sicherheitsüberwachung und Einhaltung von Vorschriften:

  • Benutzeraktivitäten verfolgen: Mithilfe von Überwachungsrichtlinien können Administratoren Benutzeraktivitäten wie Anmeldeversuche und die Verwendung 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 und GDPR PCI-DSS einzuhalten. Durch die Aktivierung von Auditrichtlinien in Containern wird sichergestellt, dass Sie diese Anforderungen auch in containerisierten Umgebungen erfüllen.

Untersuchung des Vorfalls:

  • Forensik und Analyse: Wenn eine containerisierte Anwendung oder ein Dienst kompromittiert wird, können Auditprotokolle wertvolle Erkenntnisse für die Analyse nach einem Vorfall liefern. Sie helfen Sicherheitsteams dabei, die von Angreifern ergriffenen Maßnahmen nachzuverfolgen oder zu ermitteln, wie es zu einer Sicherheitsverletzung gekommen ist.

  • Real-time Erkennung: Mithilfe von Auditprotokollen können Administratoren Echtzeitwarnungen für kritische Ereignisse einrichten (z. B. fehlgeschlagene Anmeldeversuche, Rechteausweitungen). Diese proaktive Überwachung hilft, Angriffe frühzeitig zu erkennen und ermöglicht schnellere Reaktionszeiten.

Konsistenz in allen Umgebungen:

  • Einheitliches Sicherheitsniveau: Durch die Anwendung von Audit-Richtlinien in Containern über die Registry sorgen Sie für konsistente Sicherheitspraktiken sowohl in containerisierten als auch in nicht containerisierten Umgebungen. Dadurch wird verhindert, dass Container zu einem blinden Fleck für die Sicherheitsüberwachung werden.

  • Sichtbarkeit in Hybridumgebungen: Für Unternehmen, die sowohl herkömmliche Windows-Server als auch Container verwenden, bieten Audit-Richtlinien auf allen Plattformen eine ähnliche Transparenz und Kontrolle, was die Verwaltung einfacher und effektiver macht.

Überwachung privilegierter Operationen:

  • Überwachung der Nutzung von Rechten: In Container-Umgebungen, in denen Anwendungen mit erhöhten Rechten ausgeführt werden oder in denen administrative Aufgaben ausgeführt werden, gewährleistet die Überwachung privilegierter Vorgänge die Rechenschaftspflicht. Sie können protokollieren, wer auf vertrauliche Ressourcen zugegriffen oder wichtige Aufgaben im Container ausgeführt hat.

  • Verhindern Sie den Missbrauch von Rechten: Indem Sie die Nutzung von Rechten überwachen, können Sie erkennen, wenn nicht autorisierte Benutzer versuchen, ihre Rechte zu erhöhen oder auf eingeschränkte Bereiche innerhalb des Containers zuzugreifen, wodurch interne oder externe Angriffe verhindert werden.

Erkennung unberechtigter Zugriffsversuche:

  • Fehlgeschlagene Anmeldeversuche: Die Aktivierung von Überwachungsrichtlinien für fehlgeschlagene Anmeldeversuche hilft dabei, Brute-Force-Angriffe oder unbefugte Versuche, auf containerisierte Anwendungen zuzugreifen, zu identifizieren. Dies gibt Aufschluss darüber, wer wie oft versucht, Zugriff auf das System zu erhalten.

  • Überwachung von Kontosperrungen: Die Überwachung von Kontosperrungsereignissen ermöglicht es Administratoren, potenzielle Sperrungen zu erkennen und zu untersuchen, die durch verdächtige oder böswillige Aktivitäten verursacht werden.

Dauerhafte Sicherheit auch in kurzlebigen Umgebungen:

  • Kurzlebig und doch sicher: Container sind zwar kurzlebig, was bedeutet, dass sie häufig gelöscht und neu erstellt werden können, aber Auditing spielt dennoch eine wichtige Rolle, um sicherzustellen, dass Sicherheitsereignisse erfasst werden, während der Container ausgeführt wird. 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. Überwachungsrichtlinien steuern, welche Sicherheitsereignisse von Windows protokolliert werden. Dies hilft bei der Überwachung und Erkennung unberechtigter Zugriffsversuche.

  1. SCENoApplyLegacyAuditPolicy = 0 Dadurch wird das alte Format der Überwachungsrichtlinien deaktiviert und detailliertere Überwachungsrichtlinien ermöglicht, die in späteren Versionen von Windows eingeführt wurden. Dies ist wichtig für moderne Überwachungskonfigurationen.

  2. Auditpol-Unterkategorie: „Anmeldung“ Diese Einstellung ermöglicht die Überwachung von erfolgreichen und fehlgeschlagenen Anmeldeereignissen. Der Wert 3 bedeutet, dass Windows sowohl erfolgreiche als auch fehlgeschlagene Anmeldeversuche protokolliert. Dies hilft dabei, zu überwachen, wer auf das System zugreift, und fehlgeschlagene Anmeldeversuche abzufangen.

Diese Audit-Richtlinien sind für die Sicherheitsüberwachung und die Einhaltung von Sicherheitsvorschriften von entscheidender Bedeutung, da sie detaillierte Protokolle wichtiger Sicherheitsereignisse wie Anmeldeversuche und der Verwendung privilegierter Operationen liefern.

3. Bewährte Methoden zur IIS-Sicherheit für Windows-Container

Die Implementierung bewährter Methoden für IIS in Windows-Containern ist aus mehreren Gründen wichtig, um sicherzustellen, dass Ihre Anwendungen sicher, leistungsstark und skalierbar sind. Obwohl Container eine isolierte und schlanke Umgebung bieten, müssen sie dennoch ordnungsgemäß konfiguriert werden, 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 Sicherheits-Headern (z. B. X-Content-Type-Options X-Frame-Options, und Strict-Transport-Security) können Sie Ihre Anwendung vor diesen Bedrohungen schützen.

  • Isolierung 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 das Erzwingen von HTTPS-only Verbindungen stellen sicher, dass Daten bei der Übertragung verschlüsselt werden, sodass vertrauliche Informationen vor dem Abfangen geschützt werden.

Leistung

  • Effiziente Ressourcennutzung: Bewährte Methoden von IIS wie die Aktivierung der dynamischen und statischen Komprimierung reduzieren die Bandbreitennutzung und verkürzen 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-Aufwand 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 sich an bewährte Methoden halten, 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. HIPAA) PCI-DSS, die spezifische Sicherheitsmaßnahmen wie verschlüsselte Kommunikation (HTTPS) und die Protokollierung von Kundenanfragen vorschreiben. Die Einhaltung der bewährten Methoden von IIS in Containern trägt dazu bei, die Einhaltung dieser Standards sicherzustellen.

  • Überprüfbarkeit: Die Implementierung von Auditrichtlinien und die sichere Protokollierung ermöglichen die Rückverfolgbarkeit von Ereignissen, was bei Audits von entscheidender Bedeutung ist. Beispielsweise stellt die Protokollierung des X-Forwarded-For Headers sicher, dass Client-IP-Adressen 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 zu Leistungsengpässen führen. Bewährte Methoden stellen sicher, dass jede IIS-Instanz optimal läuft, wodurch das Risiko von containerübergreifenden Problemen reduziert wird.

  • Zugriff mit geringsten Rechten: Durch die Festlegung der richtigen Berechtigungen für Ordner und Dateien innerhalb des Containers (z. B. durch die Verwendung von Set-Acl in PowerShell) wird sichergestellt, dass Benutzer und Prozesse innerhalb des Containers nur den erforderlichen Zugriff erhalten, wodurch das Risiko einer Rechteerweiterung oder Datenmanipulation verringert wird.

Resilienz in kurzlebigen Umgebungen

  • Kurzlebigkeit von Containern: Container sind oft kurzlebig und werden häufig umgebaut. Durch die Anwendung der bewährten Methoden von IIS wird sichergestellt, dass jeder Container sicher und konsistent konfiguriert wird, unabhängig davon, wie oft er erneut bereitgestellt wird. Dadurch wird verhindert, dass im Laufe der Zeit Fehlkonfigurationen auftreten.

  • Minimierung potenzieller Fehlkonfigurationen: Durch die automatische Durchsetzung von Best Practices (z. B. das Deaktivieren 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 zur Erfassung der ursprünglichen Client-IP-Adresse verwendet, wenn eine Anforderung 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 wahre Client-IP für Sicherheitsüberprüfungen, Analysen und Problembehebungen nachverfolgen.

  1. X-Forwarded-For Header, der häufig verwendet wird, um die ursprüngliche Client-IP-Adresse zu erfassen, wenn eine Anforderung 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 wahre Client-IP für Sicherheitsüberprüfungen, Analysen und Problemlösungen nachverfolgen.

  2. Strict-Transport-Security (HSTS) Stellt sicher, dass Browser nur über HTTPS kommunizieren. Das max-age=31536000 gibt an, dass diese Richtlinie ein Jahr lang durchgesetzt wird. Include wendet die Richtlinie auf alle Subdomains an. SubDomains

  3. X-Content-Type-OptionsVerhindert, dass Browser "" MIME-sniffing eine Antwort erhalten, die von der deklarierten Version abweicht. Content-Type Dies hilft, einige Arten von Angriffen zu verhindern.

  4. X-XSS-ProtectionAktiviert Cross-Site den Scripting-Schutz (XSS) in Browsern.

  5. X-Frame-OptionsVerhindert, dass die Seite in Iframes eingebettet wird, und schützt so vor Clickjacking-Angriffen.

  6. Offenlegung der IIS-Version deaktivieren Mit diesem Befehl wird der Serverheader in HTTP-Antworten deaktiviert, wodurch standardmäßig die verwendete IIS-Version angezeigt wird. Durch das Ausblenden dieser Informationen wird das Risiko verringert, dass Angreifer die für die IIS-Version spezifischen Sicherheitslücken identifizieren und ins Visier nehmen.

  7. HTTPS-only Verbindungen aktivieren Dieser (auskommentierte) Abschnitt erzwingt HTTPS-Verbindungen und deaktiviert HTTP. Ohne Kommentar konfiguriert das Dockerfile IIS so, dass es nur auf Port 443 (HTTPS) lauscht und die Standard-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.

  8. 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.

  9. Benutzerdefinierte Fehlerseiten weiterleiten Stellt sicher, dass IIS, wenn die Anwendung über eine eigene Fehlerbehandlung verfügt, die Fehlerseiten der Anwendung passieren lässt, anstatt die Standard-IIS-Fehlerseiten anzuzeigen.

  10. Im detaillierten Fehlermodus wird IIS so konfiguriert, dass detaillierte Fehlermeldungen nur für lokale Anfragen angezeigt werden, sodass Entwickler Probleme diagnostizieren können, ohne dass vertrauliche Informationen an externe Benutzer weitergegeben werden.

  11. Stellen Sie sicher, dass die Ordnerberechtigungen korrekt sind 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 Benutzer fest und stellt so sicher, dass diese Benutzer auf den Ordner zugreifen, aber keine Dateien ändern können. Durch das Festlegen der richtigen Berechtigungen wird das Risiko eines unbefugten Zugriffs oder einer Manipulation der vom Webserver gehosteten Dateien minimiert.

Das Befolgen der bewährten IIS-Methoden in Windows-Containern stellt sicher, dass Ihre containerisierten Anwendungen sicher, leistungsstark und skalierbar sind. Diese Methoden helfen dabei, Sicherheitslücken zu vermeiden, die Ressourcennutzung zu optimieren, die Einhaltung von Vorschriften sicherzustellen und die Konsistenz aller Container-Instances aufrechtzuerhalten. Obwohl Container so konzipiert sind, dass sie isoliert sind, ist eine korrekte Konfiguration erforderlich, um Risiken zu minimieren und die Zuverlässigkeit Ihrer Anwendung in Produktionsumgebungen sicherzustellen.

4. Prinzip der geringsten Rechte

Das Prinzip der geringsten Rechte (PoLP) ist für Windows-Container aus mehreren wichtigen Gründen von entscheidender Bedeutung, insbesondere zur Erhöhung der Sicherheit und zur Minimierung von Risiken in containerisierten Umgebungen. Dieses Prinzip schreibt vor, dass ein System oder eine Anwendung mit dem Mindestmaß an Berechtigungen betrieben werden sollte, das für einen ordnungsgemäßen Betrieb erforderlich ist. Deshalb ist es in Windows-Containern wichtig:

Minimierung der Angriffsfläche

  • Container führen häufig Anwendungen aus, die mit verschiedenen Systemkomponenten interagieren. Je mehr Rechte eine Anwendung hat, desto umfassender ist ihr Zugriff auf diese Komponenten. Indem PoLP die Berechtigungen des Containers auf das Notwendige beschränkt, reduziert es die Angriffsfläche erheblich, sodass es für einen Angreifer schwieriger wird, den Container auszunutzen, falls er kompromittiert wird.

Begrenzung der Auswirkungen kompromittierter Container

  • Wenn ein Windows-Container kompromittiert ist, kann das Ausführen von Anwendungen mit übermäßigen Rechten (z. B. Administrator- oder Root-Level-Zugriff) es einem Angreifer ermöglichen, die Kontrolle über wichtige Systemdateien zu erlangen oder Rechte auf den Container-Host auszuweiten. Durch die Durchsetzung von PoLP sind die Möglichkeiten des Angreifers selbst bei einem Angriff auf einen Container eingeschränkt, sodass eine weitere Eskalation und der Zugriff auf sensible Ressourcen oder andere Container verhindert werden.

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 seitlichen Bewegungen zwischen Containern.

Eindämmung der Rechteeskalation

  • Container, die mit hohen Rechten ausgeführt werden, können von Angreifern verwendet werden, um Rechte innerhalb des Systems zu eskalieren. PoLP mindert dieses Risiko, indem es den Zugriff des Containers auf Systemressourcen einschränkt und so unbefugte Aktionen oder Rechteausweitungen 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 den Systemen die Einhaltung von PolP, um den Zugriff auf sensible Daten einzuschränken. Der Betrieb von Windows-Containern mit eingeschränkten Rechten hilft Unternehmen dabei, diese Vorschriften einzuhalten, und stellt sicher, dass Anwendungen nur auf die Ressourcen zugreifen können, die sie tatsächlich benötigen.

Verringerung des Risikos einer Fehlkonfiguration

  • 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 dem Internet ausgesetzt ist, könnte ein Angreifer die Kontrolle über das System erlangen. PolP hilft, solche Risiken zu vermeiden, indem es standardmäßig eingeschränkte Rechte verwendet, wodurch Fehlkonfigurationen weniger gefährlich werden.

Verbesserter Sicherheitsstatus für Container

  • Indem Sie PolP folgen, sind Container besser vom zugrunde liegenden 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 ä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 und nicht unter dem Standard-Administratorkonto ausgeführt werden soll.

Aus den folgenden Gründen ist dies wichtig, insbesondere in einer Umgebung mit mehreren Mandanten:

  1. Prinzip der geringsten Rechte: Bei dem ContainerUser Konto handelt es sich um einen Benutzer ohne Administratorrechte mit eingeschränkten Rechten. Bei der Ausführung der Anwendung unter diesem Konto gilt das Prinzip der geringsten Rechte, wodurch das Risiko einer Ausnutzung minimiert wird. Wenn ein Angreifer die Anwendung kompromittieren würde, hätte er nur eingeschränkten Zugriff auf das System, was den potenziellen Schaden reduziert.

  2. Verbesserte Sicherheit: In Umgebungen mit mehreren Mandanten können Container dieselbe zugrunde liegende Infrastruktur nutzen. Running as ContainerUser stellt sicher, dass selbst wenn ein Container kompromittiert ist, er keine Administratorrechte hat, um auf kritische Systemdateien oder andere Container zuzugreifen oder diese zu ändern. Dadurch wird die Angriffsfläche erheblich reduziert.

  3. Vermeidung von Root-Zugriffen: 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, ihre Rechte zu erweitern.

  4. Best Practice für Umgebungen mit mehreren Mandanten: In Umgebungen, in denen mehrere Benutzer oder Organisationen dieselbe Infrastruktur nutzen (z. B. in der Cloud), ist Sicherheit von entscheidender Bedeutung. Das Ausführen von Anwendungen mit eingeschränkten Berechtigungen verhindert, dass die Anwendung eines Mandanten andere beeinträchtigt, 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 den unbefugten Zugriff auf wichtige Systemkomponenten verhindert. Indem sie containerisierte Anwendungen nur mit den erforderlichen Berechtigungen ausführen, können Unternehmen die Sicherheit und Stabilität ihrer Container-Umgebungen erheblich verbessern, insbesondere in Infrastrukturen mit mehreren Mandanten und gemeinsam genutzten Infrastrukturen.

Letzte Gedanken: Warum die Absicherung Ihrer Windows-Container in der heutigen Bedrohungslandschaft eine Must-Have wichtige Rolle spielt

In der heutigen, sich schnell entwickelnden digitalen Welt, in der Bedrohungen immer raffinierter und zahlreicher werden, ist der Schutz Ihrer Windows-Container nicht nur eine Empfehlung, sondern eine absolute Notwendigkeit. Container bieten eine einfache, flexible Methode zum Verpacken und Bereitstellen von Anwendungen, sind jedoch nicht vor Sicherheitslücken gefeit. Da immer mehr Unternehmen Container einsetzen, um ihre Infrastruktur zu rationalisieren, werden sie auch zu einem potenziellen Ziel für Cyberangriffe, wenn sie nicht angemessen 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, Zugriffsrechte auszuweiten oder als Einfallstore 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 anderer Bereiche Ihrer Umgebung.

Bei der Verwendung von Windows-Containern gelten nach wie vor viele traditionelle bewährte Sicherheitsmethoden. Die Implementierung robuster Kontorichtlinien, die Absicherung von IIS-Konfigurationen, die Durchsetzung von HTTPS, die Verwendung strenger Firewallregeln und die Anwendung der geringsten Zugriffsrechte auf kritische Dateien sind wichtige Maßnahmen, die sicherstellen, dass der Container gegen Angriffe geschützt bleibt. Darüber hinaus bieten regelmäßige Prüfungen und Protokollierungen einen Überblick darüber, was im Container vor sich geht, sodass Sie verdächtige Aktivitäten erkennen können, bevor sie zu einem vollständigen Vorfall werden.

Der Schutz von Windows-Containern entspricht auch den gesetzlichen Anforderungen, die den Schutz vertraulicher Daten und die Gewährleistung der Anwendungsintegrität vorschreiben. Da Cloud-native und containerisierte Architekturen immer mehr an Bedeutung gewinnen, 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 Anzahl 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 genießen, ohne Abstriche bei der Sicherheit machen zu müssen. In dieser Umgebung mit vielen Bedrohungen ist der Schutz Ihrer Windows-Container nicht nur eine Option, sondern ein Muss.