Profilanwendbarkeit: Stufe 1
Stellen Sie sicher, dass, wenn der Kubelet auf eine Konfigurationsdatei mit dem
--config
-Argument verweist, diese Datei Berechtigungen von 644 oder restriktiver hat.Der Kubelet liest verschiedene Parameter, einschließlich Sicherheitseinstellungen,
aus einer Konfigurationsdatei, die durch das Argument
--config
angegeben wird. Wenn diese Datei angegeben ist, sollten Sie die Dateiberechtigungen
einschränken, um die Integrität der Datei zu wahren. Die Datei sollte nur von den
Administratoren des Systems beschreibbar sein.![]() |
HinweisSiehe die AWS EKS-Dokumentation für den Standardwert.
|
Prüfung
Methode 1
- SSH zu den entsprechenden Worker-Knoten.
- Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Kubelet-Dienst läuft:
sudo systemctl status kubelet
Die Ausgabe sollteActive: active (running) since..
zurückgeben. - Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei
zu finden:
ps -ef | grep kubelet
Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie--config/etc/kubernetes/kubelet/kubelet-config.json
zurückgeben, was der Speicherort der Kubelet-Konfigurationsdatei ist. - Führen Sie diesen Befehl aus, um die Berechtigungen der Kubelet-Konfigurationsdatei
zu erhalten:
stat -c %a /etc/kubernetes/kubelet/kubelet-config.json
-
Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
Methode 2
Erstellen und Ausführen eines privilegierten Pods
- Führen Sie ein Pod aus, das ausreichend privilegiert ist, um auf das Dateisystem des
Hosts zuzugreifen. Um dies zu tun, deployen Sie ein Pod, das das hostPath-Volume verwendet,
um das Dateisystem des Knotens in das Pod einzubinden.
Ein Beispiel für eine einfache Pod-Definition, die das Root-Verzeichnis des Hosts im Pod unter /host einbindet:
apiVersion: v1 kind: Pod metadata: name: file-check spec: volumes: - name: host-root hostPath: path: / type: Directory containers: - name: nsenter image: busybox command: ["sleep", "3600"] volumeMounts: - name: host-root mountPath: /host securityContext: privileged: true
- Speichern Sie dies in einer Datei (z. B. file-check-pod.yaml) und erstellen Sie das
Pod:
kubectl apply -f file-check-pod.yaml
- Sobald das Pod läuft, führen Sie einen Exec-Befehl aus, um die Dateiberechtigungen
auf dem Knoten zu überprüfen:
kubectl exec -it file-check -- sh
- Jetzt befinden Sie sich in einer Shell innerhalb des Pods, aber Sie können über das
/host-Verzeichnis auf das Dateisystem des Knotens zugreifen und die Berechtigungsstufe
der Datei überprüfen:
ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
- Überprüfen Sie, ob eine Datei angegeben ist und existiert, und ob die Berechtigungen 644 oder restriktiver sind.
Wiederherstellung
Führen Sie den folgenden Befehl aus (unter Verwendung des Dateispeicherorts der Konfigurationsdatei,
der im Audit-Schritt identifiziert wurde):
chmod 644 /etc/kubernetes/kubelet/kubelet-config.json