Profilanwendbarkeit: Stufe 1
Deaktivieren Sie keine Timeouts bei Streaming-Verbindungen.
Das Festlegen von Leerlaufzeitlimits stellt sicher, dass Sie vor Denial-of-Service-Angriffen,
inaktiven Verbindungen und dem Erschöpfen von temporären Ports geschützt sind.
![]() |
HinweisStandardmäßig ist
--streaming-connection-idle-timeout auf 4 Stunden eingestellt, was für Ihre Umgebung möglicherweise zu hoch ist. Eine
entsprechende Anpassung würde zusätzlich sicherstellen, dass solche Streaming-Verbindungen
nach dem Bedienen legitimer Anwendungsfälle ablaufen. |
![]() |
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Auswirkung
Langfristige Verbindungen könnten unterbrochen werden.
Prüfung
Audit Method 1:
-
SSH in den entsprechenden Knoten und führen Sie den folgenden Befehl auf jedem Knoten aus, um den laufenden Kubelet-Prozess zu finden:
ps -ef | grep kubelet
- Wenn die Befehlszeile für den Prozess das Argument
streaming-connection-idle-timeout
enthält, überprüfen Sie, dass es nicht auf 0 gesetzt ist. -
Wenn das Argument
streaming-connection-idle-timeout
nicht in der Ausgabe des obigen Befehls vorhanden ist, beziehen Sie sich stattdessen auf das Argumentconfig
, das den Speicherort der Kubelet-Konfigurationsdatei angibt, z. B.--config /etc/kubernetes/kubelet/kubelet-config.json
.
- Wenn die Befehlszeile für den Prozess das Argument
-
Öffnen Sie die Kubelet-Konfigurationsdatei:
cat /etc/kubernetes/kubelet/kubelet-config.json
Überprüfen Sie, dass das ArgumentstreamingConnectionIdleTimeout
nicht auf"0"
gesetzt ist.
Audit Method 2:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"streamingConnectionIdleTimeout":"4h0m0s"
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.-
Legen Sie die lokale Proxy-Portnummer und die folgenden Variablen fest und geben Sie die Proxy-Portnummer und den Knotennamen an:
HOSTNAME_PORT="localhost-and-port-number"
NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" from the output of "kubectl get nodes"
kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 (example host and port number) export NODE_NAME=ip-192.168.31.226.aks.internal (example node name from "kubectl get nodes") curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Remediation Method 1:
Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie
/etc/kubernetes/kubelet/kubelet-config.json
und setzen Sie den untenstehenden Parameter auf einen Wert ungleich null im Format
#h#m#s:"streamingConnectionIdleTimeout": "4h0m0s"
Stellen Sie sicher, dass die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
kein --streaming-connection-idle-timeout
-Argument angibt, da dies die Kubelet-Konfigurationsdatei überschreiben würde.Remediation Method 2:
Wenn ausführbare Argumente verwendet werden, bearbeiten Sie die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
auf jedem Worker-Knoten und fügen Sie am Ende der KUBELET_ARGS
-Variablenzeichenfolge den folgenden Parameter hinzu:--streaming-connection-idle-timeout=4h0m0s
Remediation Method 3:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"streamingConnectionIdleTimeout":
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.Siehe schrittweise ConfigMap-Verfahren in der Kubernetes-Dokumentation und führen Sie die Curl-Anweisung aus dem Audit-Prozess erneut aus, um Änderungen
an der Kubelet-Konfiguration zu überprüfen:
kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 (example host and port number) export NODE_NAME=ip-192.168.31.226.aks.internal (example node name from "kubectl get nodes") curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all remediations:
Starten Sie den
kubelet
-Dienst neu und überprüfen Sie den Status:systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l