--- title: Monitoring von Docker mit PRTG einrichten description: published: true date: 2024-06-17T10:36:27.785Z tags: editor: markdown dateCreated: 2024-06-17T10:36:25.494Z --- # Monitoring von Docker mit PRTG einrichten ## Monitoring von Docker mit PRTG Um den Docker Daemon von außen erreichbar zu haben muss man noch einige Zertifikate erstellen und ihn von der Firwall aus erreichbar machen. Die Zertifikate werden mit den Folgenden Befehl erstellt, beim Feld wo die *PEM pass phrase* eingeben werden muss kann ein beliebiges Passwort eingegeben werden, dies wird dann in den späteren Schritten wieder benötigt. ~~~ mkdir -p /opt/certs cd /opt/certs openssl genrsa -aes256 -out ca-key.pem 4096 Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ~~~ ~~~ openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem Enter pass phrase for ca-key.pem: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []: Email Address []: ~~~ Danach erstellt man nun noch mit foldenen Befehlen die Server-Zertifikate für Docker: ~~~ openssl genrsa -out server-key.pem 4096 ~~~ Hier bitte die Adresse der IP-Adresse (Interface) ergänzen von woher der Zugriff erfolgt. ~~~ HOST=10.161.24.10 openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr echo subjectAltName = DNS:$HOST,IP:10.161.24.10,IP:127.0.0.1 >> extfile.cnf echo extendedKeyUsage = clientAuth > extfile-client.cnf ~~~ ~~~ openssl genrsa -out key.pem 4096 openssl req -subj '/CN=client' -new -key key.pem -out client.csr ~~~ ~~~ openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf Certificate request self-signature ok subject=CN = client Enter pass phrase for ca-key.pem: ~~~ ### Konfigurationen am Docker Service anpassen Wir müssen Docker noch sagen, das er nun auf ein andere Adresse hören soll, dafür passieren wir die Service Datei von Docker an. Wir stopen einmal den Docker-Daemon und editieren anschließend die Datei. ~~~ systemctl stop docker mkdir -p /etc/systemd/system/docker.service.d/ nano -w /etc/systemd/system/docker.service.d/docker-daemon.conf ~~~ Der Inhalt sollte dann wiefolgt aussehen, der Docker Daemon hört nun auf alle Interfacen und IP-Adressen. Da wir aber die Adressen in den Zertifikaten beschränkt haben, sollten trotzdem fremde Systeme im Netzwerk keinen Zugriff bekommen können. ~~~ [Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --tlsverify=true --tlscacert=/opt/certs/ca.pem --tlscert=/opt/certs/cert.pem --tlskey=/opt/certs/key.pem --containerd=/run/containerd/containerd.sock ~~~ Danach müssen wir noch den Systemd Service reloaden und können Docker wieder starten mit: ~~~ systemctl daemon-reload systemctl start docker ~~~ Anschließend ist dieses hier der Server Schlüssel: ~~~ cat key.pem ~~~ ~~~ ----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDiFvMRT/LP4+K+ ... -----END PRIVATE KEY----- ~~~ Und das ist das Zertifikart: ~~~ cat cert.pem ~~~ ~~~ -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIUKzDT5l92Xd89Ksnzh3xoQfzWSgUwDQYJKoZIhvcNAQEL ... -----END CERTIFICATE----- ~~~ ### Firewall für Docker noch anpassen ~~~ sudo firewall-cmd --permanent --add-port=2376/tcp --zone=public sudo firewall-cmd --reload ~~~ ## Quellen https://kb.paessler.com/en/topic/67250-how-can-i-create-private-key-and-certificate-for-the-docker-sensor https://kb.paessler.com/en/topic/283-how-can-i-use-a-trusted-ssl-certificate-with-the-prtg-web-interface https://docs.docker.com/engine/security/protect-access/#create-a-ca-server-and-client-keys-with-openssl