Zum Hauptinhalt springen

Anforderungen an die Laufzeitberechtigung für clmBot

Beim automatischen Erneuern von Zertifikaten muss clmBot Lese- und Schreibzugriff auf die Ziel-Zertifikatsdateien haben und nach der Aktualisierung den entsprechenden Middleware-Dienst neu laden oder neu starten. Dieser Artikel beschreibt die empfohlenen Minimalberechtigungen für verschiedene Middleware-Szenarien.

Hinweis

Die Befehle zum Neuladen / Neustarten der Middleware sind im Feld servers[].after_script von config.yaml definiert und können vom Benutzer an die tatsächliche Umgebung angepasst werden. clmBot erfordert keinen langfristigen Betrieb mit Hochberechtigungs-Konten wie root oder Administrator.


Prinzip der minimalen Berechtigung​

Es wird empfohlen, ein dediziertes Systemkonto (z. B. clmbot) für den Betrieb von clmBot zu verwenden und die folgenden Prinzipien zu beachten:

  • Gewähren Sie diesem Konto nur die Berechtigungen, die zum Lesen der clmBot-Konfiguration, des Protokollverzeichnisses und des Installationspunkts der Ziel-Zertifikate erforderlich sind.
  • Gewähren Sie Schreibberechtigungen nur für die von clmBot verwalteten Zertifikatsdateien, privaten Schlüsseldateien und deren Verzeichnisse.
  • Erlauben Sie nur die Ausführung bestätigter Middleware-Neulade-/Neustart-Befehle; gewähren Sie keine NOPASSWD: ALL- oder vollständige root-Berechtigungen.
  • before_script und after_script müssen einer manuellen Überprüfung unterzogen werden; die im Skript benötigten Berechtigungen sollten einzeln erteilt werden.

Nicht empfohlene Vorgehensweisen:

  • Lass clmBot langfristig unter der Identität root oder Administrator laufen.
  • Gib clmBot vollständigen Zugriff auf das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Systemdienst-Steuerungsberechtigungen.
  • Gewähre bash, powershell.exe, systemctl uneingeschränkte Ausführungsrechte.

Anforderungen an die Berechtigungen der Middleware​

nginx​

clmBot benötigt die folgenden Berechtigungen:

  1. Lese- und Schreibrechte für das Zertifikatsverzeichnis: Lese- und Schreibrechte für das Verzeichnis, in dem sich die Zielzertifikatsdatei (.crt), die CA-Ketten-Datei (optional) und die Schlüsseldatei (.key) befinden, um neue Zertifikate schreiben und eine .bak-Sicherung erstellen zu können.
  2. Führen Sie den reload-Befehl aus:after_script generiert standardmäßig das folgende Skript, um nginx nach der Zertifikatsaktualisierung neu zu laden:
nginx -t && nginx -s reload

Minimale Berechtigungsempfehlung:

  • Nur das Zielzertifikatsverzeichnis freigeben, nicht die vollständigen Lese-/Schreibrechte für /etc/nginx gewähren.
  • Über sudoers präzise nginx -t und nginx -s reload autorisieren, keine vollständige Root-Shell gewähren.

Apache HTTP Server​

clmBot benötigt die folgenden Berechtigungen:

  1. Lese-/Schreibrechte für das Zertifikatsverzeichnis: Lese-/Schreibrechte für die Verzeichnisse, in denen sich SSLCertificateFile, SSLCertificateChainFile und SSLCertificateKeyFile befinden.
  2. Ausführen des Dienstneustartbefehls: after_script generiert standardmäßig eines der folgenden Skripte (abhängig von der Distribution):
systemctl restart httpd.service
systemctl restart apache2.service

Minimale Berechtigungsempfehlung:

  • Nur das Ziel-Zertifikatsverzeichnis freigeben, nicht den gesamten Apache-Konfigurationsverzeichnisordner gewähren.
  • Über sudoers nur dem tatsächlich aktuell verwendeten Apache-Dienstnamen die Berechtigung für restart erteilen.

Tomcat​

Der clmBot benötigt die folgenden Berechtigungen:

  1. Lese- und Schreibrechte für das Zertifikatsverzeichnis: Lese- und Schreibzugriff auf das Verzeichnis, in dem sich die PEM-Zertifikate/privaten Schlüsseldateien oder die JKS-Keystore-Datei befinden.
  2. Ausführen von Stopp- und Startskripten: after_script generiert standardmäßig die folgenden Skripte:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"

Empfehlungen für minimale Berechtigungen:

  • Verwenden Sie für clmBot und Tomcat möglichst dieselbe Anwendungsgruppe und gewähren Sie nur Lese- und Schreibrechte für den Ziel-Keystore oder das Zertifikatsverzeichnis.
  • Erlauben Sie nur die Ausführung von shutdown.sh und startup.sh für die betreffende Tomcat-Instanz, ohne Zugriff auf das gesamte Verzeichnis /opt zu gewähren.
  • In Umgebungen mit mehreren Tomcat-Instanzen sollten die Berechtigungen nach Instanz getrennt werden.

IIS​

Bei IIS werden PFX-Dateien mithilfe von Windows-PowerShell-Skripten importiert und HTTPS-Bindungen aktualisiert. Dafür sind Administratorrechte erforderlich.

clmBot benötigt die folgenden Berechtigungen:

  1. Ausführung mit einem Administratorkonto: powershell.exe -NoProfile -ExecutionPolicy Bypass ausführen, um eine temporäre PFX-Datei zu importieren und die IIS-Site-Bindung zu aktualisieren.
  2. Lese- und Schreibrechte für das Zertifikatsverzeichnis: zum Erstellen und Entfernen der temporären PFX-Datei.

Empfehlungen für minimale Berechtigungen:

  • Verwenden Sie ein dediziertes Windows-Dienstkonto und gewähren Sie nur die Rechte, die zur Verwaltung der HTTPS-Bindungen der Ziel-IIS-Site erforderlich sind.
  • Prüfen Sie die PowerShell-Ausführungsrichtlinie und die Modulberechtigungen separat anhand der Sicherheitsvorgaben des Hosts.

Beispiele für die Linux-sudoers-Konfiguration​

Die folgenden Beispiele zeigen nur die Granularität der Berechtigungen. Passen Sie die tatsächlichen Pfade an den Zielhost an.

nginx:

clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -t
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -s reload

Apache:

clmbot ALL=(root) NOPASSWD: /bin/systemctl restart apache2.service

Tomcat:

clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/shutdown.sh
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/startup.sh

Beispiel für Berechtigungen im Zertifikatsverzeichnis:

chown -R root:clmbot /etc/ssl/example
chmod 0750 /etc/ssl/example
chmod 0640 /etc/ssl/example/site.crt /etc/ssl/example/ca.crt
chmod 0640 /etc/ssl/example/site.key

Um clmBot das Schreiben und Sichern der oben genannten Dateien zu ermöglichen, kann eine präzise Autorisierung über ACL verwendet werden:

setfacl -m u:clmbot:rwx /etc/ssl/example
setfacl -m u:clmbot:rw- /etc/ssl/example/site.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/ca.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/site.key

Checkliste zur Berechtigungsprüfung vor der Inbetriebnahme​

Hinweis

Vor der Bereitstellung von clmBot wird empfohlen, die folgenden Berechtigungskonfigurationen Punkt für Punkt zu bestätigen.

  • Läuft clmBot mit einem dedizierten Konto und nicht mit root oder einem Administrator?
  • Dürfen nur die erforderlichen Konten auf config.yaml lesen und schreiben?
  • Sind die Lese- und Schreibberechtigungen für die Zertifikatsdateien, auf die jede servers[].format verweist, nur auf das notwendige Maß beschränkt?
  • Ist es im Verzeichnis der Zertifikatsdateien erlaubt, .bak-Sicherungsdateien zu erstellen und zu bereinigen?
  • Wurden before_script und after_script bereits manuell geprüft?
  • Enthält sudoers nur präzise Befehle und nicht ALL, bash oder das vollständige systemctl.
  • Deckt die reload- oder restart-Berechtigung von nginx / Apache / Tomcat nur die Zielinstanz ab.
  • Entspricht die Liste- und Portadresse im Dienstmodus (clm-bot server) der Firewall-Richtlinie des Hosts.