1. Sicherheitsprobleme mit DockerDockers eigene Schwachstellen Als Anwendung weist Docker selbst Codefehler in seiner Implementierung auf. CVE erfasst offiziell mehr als 20 Schwachstellen in historischen Versionen von Docker. Zu den gängigen Angriffsmethoden von Hackern zählen Codeausführung, Rechteausweitung, Informationslecks und die Umgehung von Rechte. Derzeit werden Docker-Versionen sehr schnell aktualisiert. Daher wird Docker-Benutzern empfohlen, Docker auf die neueste Version zu aktualisieren. Docker-Quellcodeproblem Docker bietet einen Docker-Hub, der es Benutzern ermöglicht, von ihnen erstellte Bilder hochzuladen, sodass andere Benutzer sie herunterladen und schnell eine Umgebung erstellen können. Es bringt aber auch einige Sicherheitsprobleme mit sich. (2) Images verwenden anfällige Software. Unter den Images, die auf Docker Hub zum Download zur Verfügung stehen, ist auf 75 % anfällige Software installiert. Daher müssen Sie nach dem Herunterladen des Images die Versionsinformationen der darin enthaltenen Software überprüfen, um festzustellen, ob die entsprechende Version Schwachstellen aufweist, und diese rechtzeitig aktualisieren und patchen. (3) Man-in-the-Middle-Angriff: Bei der Übertragung kann es zu Bildmanipulationen kommen. Um dieses Problem zu verhindern, verfügt die neue Version von Docker über einen entsprechenden Prüfmechanismus. 2. Mängel der Docker-Architektur und SicherheitsmechanismenDurch die Architektur und Mechanismen von Docker selbst können Probleme entstehen, wie etwa ein Angriffsszenario, bei dem ein Hacker die Kontrolle über einige Container auf dem Hostcomputer übernommen hat oder Zugriff auf eine Möglichkeit zum Erstellen von Containern in einer öffentlichen Cloud erlangt hat und dann den Hostcomputer oder andere Container angreift. LAN-Angriffe zwischen Containern Die Container auf dem Host können ein lokales Netzwerk bilden, sodass Angriffe wie ARP-Spoofing, Sniffing und Broadcast Storms gegen das lokale Netzwerk eingesetzt werden können. Daher erfordert die Bereitstellung mehrerer Container auf einem Host eine angemessene Netzwerkkonfiguration und das Festlegen von iptable-Regeln. DDoS-Angriffe erschöpfen die Ressourcen Der Sicherheitsmechanismus von cgroups soll solche Angriffe verhindern. Dieses Problem kann vermieden werden, indem einem einzelnen Container nicht zu viele Ressourcen zugewiesen werden. Anfälliger Systemaufruf Ein wichtiger Unterschied zwischen Docker und einer virtuellen Maschine besteht darin, dass Docker und Hostmaschine denselben Betriebssystemkernel gemeinsam nutzen. Sobald der Host-Kernel eine Schwachstelle aufweist, die zu einer Rechteausweitung oder Privilegienerweiterung führen kann, kann ein Angreifer, selbst wenn Docker als normaler Benutzer ausgeführt wird, bei einem Eindringen in den Container immer noch die Kernel-Schwachstelle ausnutzen, um auf den Host-Computer zu springen und weitere Dinge zu tun. Gemeinsame Root-Benutzerberechtigungen Wenn Sie den Container mit Root-Benutzerberechtigungen ausführen, verfügt der Root-Benutzer im Container auch über Root-Berechtigungen auf dem Hostcomputer. 3. Der Unterschied zwischen Docker-Container und virtueller MaschineIsolation und Teilen Die virtuelle Maschine fügt eine Hypervisor-Schicht hinzu, um virtuelle Hardware wie Netzwerkkarten, Speicher und CPU zu virtualisieren, und erstellt dann darauf virtuelle Maschinen. Jede virtuelle Maschine hat ihren eigenen Systemkernel. Docker-Container isolieren Dateisysteme, Prozesse, Geräte, Netzwerke und andere Ressourcen und steuern dann Berechtigungen, CPU-Ressourcen usw., sodass Container sich nicht gegenseitig beeinflussen und den Hostcomputer nicht beeinträchtigen können. Der Container teilt den Kernel, das Dateisystem, die Hardware und andere Ressourcen mit dem Host. Leistung und Verlust Im Vergleich zu virtuellen Maschinen verbrauchen Container weniger Ressourcen. Auf derselben Hostmaschine können mehr Container erstellt werden als virtuelle Maschinen. Allerdings ist die Sicherheit virtueller Maschinen etwas besser als die von Containern. Um von der virtuellen Maschine aus in die Hostmaschine oder andere virtuelle Maschinen einzudringen, müssen Sie zuerst in die Hypervisor-Schicht eindringen, was äußerst schwierig ist. Der Docker-Container teilt den Kernel, das Dateisystem und andere Ressourcen mit dem Hostcomputer und hat wahrscheinlicher Auswirkungen auf andere Container und den Hostcomputer. Grundlegende Docker-SicherheitsstandardsIm Folgenden werden die Docker-Sicherheitsgrundstandards aus sechs Aspekten zusammengefasst: Kernel, Host, Netzwerk, Image, Container und andere. Kernel-Ebene (1) Aktualisieren Sie den Kernel rechtzeitig. Hostebene (1) Erstellen Sie unabhängige Partitionen für Container. (Dateideskriptor: Der Kernel verwendet Dateideskriptoren, um auf Dateien zuzugreifen. Dateideskriptoren sind nicht negative Ganzzahlen. Beim Öffnen einer vorhandenen Datei oder beim Erstellen einer neuen Datei gibt der Kernel einen Dateideskriptor zurück. Das Lesen und Schreiben von Dateien erfordert auch die Verwendung von Dateideskriptoren, um die zu lesenden und zu schreibenden Dateien anzugeben.) (6) Die Zugriffsberechtigungen für Docker-bezogene Dateien mit Root-Benutzerberechtigungen sollten 644 oder niedriger sein. Netzwerkebene (1) Legen Sie über iptables Regeln fest, um Netzwerkverkehr zwischen Containern zu verbieten oder zuzulassen. Bildebene (1) Erstellen Sie einen lokalen Image-Repository-Server. Behälterebene (1) Minimieren Sie den Container und den Mindestsatz an Betriebssystem-Images. Andere Einstellungen (1) Führen Sie regelmäßig Sicherheitsüberprüfungen des Hostsystems und der Container durch. Docker-TLS-verschlüsselte Kommunikation Um zu verhindern, dass während der Docker-Kommunikation Link-Hijacking, Session-Hijacking und andere Probleme zu Man-in-the-Middle-Angriffen führen, sollten beide Enden des c/s verschlüsselt kommunizieren. Erstellen Sie einen Ordner und ändern Sie den Hostnamen (für die spätere Verwendung). [root@server1 ~]# mkdir /tls [root@server1 ~]# cd /tls [root@server1 tls]# hostnamectl set-hostname master [root@server1 tls]# bash [root@master tls] Kundenergänzungen: [root@client ~]# vim /etc/hosts Erstellen Sie einen CA-Schlüssel und legen Sie das Schlüsselkennwort fest [root@master tls]# openssl genrsa -aes256 -out ca-key.pem 4096 Generieren eines privaten RSA-Schlüssels, 4096 Bit langes Modul ...........................................++ ...................................................................................................................................................................................++ e ist 65537 (0x10001) Geben Sie die Passphrase für ca-key.pem ein: Überprüfen – Geben Sie die Passphrase für ca-key.pem ein: Erstellen eines CA-Zertifikats [root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=liuwei" -out ca.pem Geben Sie die Passphrase für ca-key.pem ein: ###Geben Sie das Passwort ein Erstellen eines privaten Serverschlüssels [root@master tls]# openssl genrsa -out server-key.pem 4096 Generieren eines privaten RSA-Schlüssels, 4096 Bit langes Modul ................................++ ................................++ e ist 65537 (0x10001) Signatur privater Schlüssel [root@master tls]# openssl req -subj "/CN=lw" -sha256 -new -key server-key.pem -out server.csr Verwenden Sie zum Signieren ein CA-Zertifikat und ein privates Schlüsselzertifikat. Geben Sie 123456 ein. [root@master tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem Unterschrift ok Betreff=/CN=lw Abrufen des privaten CA-Schlüssels Geben Sie die Passphrase für ca-key.pem ein: Clientschlüssel generieren [root@master tls]# openssl genrsa -out key.pem 4096 Signatur-Client [root@master tls]# openssl req -subj "/CN=client" -new -key key.pem -out client.csr Erstellen einer Konfigurationsdatei echo extendedKeyUsage=clientAuth > extfile.cnf Signaturzertifikat, geben Sie 123456 ein, erforderlich (Signaturclient, CA-Zertifikat, CA-Schlüssel) [root@master tls]# openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf Unterschrift ok Betreff=/CN=Kunde Abrufen des privaten CA-Schlüssels Geben Sie die Passphrase für ca-key.pem ein: Ändern Sie die Docker-Konfigurationsdatei und starten Sie den Dienst neu ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/tls/ca.pem --tlscert=/tls/server-cert.pem --tlskey=/tls/server-key.pem -H tcp://0.0.0.0:2388 -H unix:///var/run/docker.sock Starten Sie Docker neu [root@master tls]# systemctl daemon-reload [root@master tls]# systemctl Neustart Docker Kopieren Sie die drei Dateien /tls/ca.pem /tls/cert.pem /tls/key.pem auf den Client. [root@master tls]# scp ca.pem [email protected]:/etc/docker [root@master tls]# scp cert.pem [email protected]:/etc/docker [root@master tls]# scp key.pem [email protected]:/etc/docker Bei der TLS-Verifizierung müssen Sie die vom privaten Schlüssel festgelegte ID verwenden, daher müssen die oben genannten Hostnamen in lw geändert werden. Lokale Authentifizierung [root@lw tls]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://lw:2388 Version Laden Sie das NGINX-Image herunter [root@lw tls]# Docker zieht nginx Bereitstellen der Clientumgebung und Überprüfen von TLS Geben Sie das Verzeichnis /etc/docker ein Überprüfen Sie die Docker-Version auf der Clientseite [root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://lw:2388 Version Bereitstellungsumgebung, TLS überprüfen Sehen Sie sich die Clientbilder an [root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://lw:2388 Bilder Dies ist das Ende dieses Artikels über Docker-Sicherheit und Docker-TLS-verschlüsselte Kommunikation. Weitere Informationen zur Docker-TLS-verschlüsselten Kommunikation finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Unterschieds zwischen Uniapp und Vue
>>: Schnelle Lösung zum Vergessen des MySQL8-Passworts
<br />Ursprünglicher Link: http://www.dudo.o...
Inhaltsverzeichnis Ursache Grund Einführung in NP...
Der automatische Bildlaufeffekt der Seite kann du...
[LeetCode] 184. Abteilung Höchstes Gehalt Die Mit...
CPU-Last und CPU-Auslastung Beides kann bis zu ei...
MTR steht für Mini-Transaktion. Wie der Name scho...
Inhaltsverzeichnis Kettenanrufe Ein kleiner Koffe...
PCIE verfügt über vier verschiedene Spezifikation...
Überblick Ich habe vor Kurzem begonnen, mir Wisse...
Inhaltsverzeichnis Umfeld: 1. Docker ermöglicht d...
Betriebssystem: Windows 10 MySQL-Version: 8.0.13-...
Hintergrund Verwenden Sie Idea mit Docker, um den...
Die meisten Browser speichern die Eingabewerte st...
<div Klasse="Seitenleiste"> <d...
Inhaltsverzeichnis 1. Komponentenwechselmethode M...