Zum Hauptinhalt springen

Berechtigungsanforderungen für die Ausführung von clmBot

clmBot muss bei der automatischen Zertifikatserneuerung auf die Ziel-Zertifikatsdateien lesend und schreibend zugreifen und nach der Aktualisierung den entsprechenden Middleware-Dienst neu laden oder neu starten. Dieses Dokument beschreibt die empfohlene Mindestberechtigungskonfiguration für verschiedene Middleware-Szenarien.

Hinweis

Die Middleware-Befehle für reload / restart 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 dauerhaften Betrieb mit hoch privilegierten Konten wie root oder Administrator.


Prinzip der geringsten Berechtigung

Es wird empfohlen, clmBot mit einem dedizierten Systemkonto (z. B. clmbot) auszuführen und die folgenden Grundsätze zu beachten:

  • Gewähren Sie diesem Konto nur die Berechtigungen, die zum Lesen der clmBot-Konfiguration, der Protokollverzeichnisse und des Ziel-Installationspunkts des Zertifikats erforderlich sind.
  • Gewähren Sie Schreibberechtigungen nur für die von clmBot verwalteten Zertifikatsdateien, privaten Schlüsseldateien und die zugehörigen Verzeichnisse.
  • Erlauben Sie nur die Ausführung bestätigter Middleware-Befehle für reload / restart und gewähren Sie keine NOPASSWD: ALL- oder vollständigen root-Berechtigungen.
  • before_script und after_script müssen manuell geprüft werden; im Skript benötigte Berechtigungen sollten einzeln erteilt werden.

Nicht empfohlene Vorgehensweisen:

  • Lassen Sie clmBot langfristig als root oder Administrator laufen.
  • Gewähren Sie clmBot vollständigen Zugriff auf das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Steuerungsrechte für Systemdienste.
  • Erteilen Sie bash, powershell.exe, systemctl uneingeschränkte Ausführungsrechte.

Berechtigungsanforderungen der einzelnen Middleware-Komponenten

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-Kettendatei (optional) und die Private-Key-Datei (.key) befinden, um neue Zertifikate zu schreiben und ein .bak-Backup zu erstellen.
  2. Führen Sie den reload-Befehl aus: after_script generiert standardmäßig das folgende Skript, mit dem nginx nach der Zertifikatsaktualisierung neu geladen wird:
nginx -t && nginx -s reload

Empfehlungen für minimale Berechtigungen:

  • Nur das Ziel-Zertifikatsverzeichnis freigeben und nicht dem gesamten /etc/nginx Lese-/Schreibrechte erteilen.
  • Über sudoers gezielt nginx -t und nginx -s reload autorisieren, keine vollständige root-Shell gewähren.

Apache HTTP Server

clmBot benötigt folgende Berechtigungen:

  1. Lese-/Schreibrechte für das Zertifikatsverzeichnis: Lese-/Schreibrechte für das Verzeichnis, in dem sich SSLCertificateFile, SSLCertificateChainFile und SSLCertificateKeyFile befinden.
  2. Befehl zum Neustart des Dienstes ausführen: after_script generiert standardmäßig eines der folgenden Skripte (abhängig von der Distribution):
systemctl restart httpd.service
systemctl restart apache2.service

Empfehlungen für minimale Berechtigungen:

  • Nur das Zielzertifikatverzeichnis freigeben, nicht das gesamte Apache-Konfigurationsverzeichnis.
  • Über sudoers nur die Berechtigung restart für den tatsächlich auf dem aktuellen System verwendeten Apache-Dienstnamen erteilen.

Tomcat

clmBot benötigt die folgenden Berechtigungen:

  1. Lese- und Schreibrechte für das Zertifikatverzeichnis: Lese- und Schreibrechte für das Verzeichnis, in dem sich PEM-Zertifikat-/Private-Key-Dateien oder JKS-Keystore-Dateien befinden.
  2. Stopp- und Startskripte ausführen: after_script generiert standardmäßig die folgenden Skripte:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"

Mindestberechtigungsempfehlungen:

  • Lassen Sie clmBot möglichst dieselbe Geschäftsgruppe wie Tomcat verwenden und gewähren Sie nur Lese-/Schreibzugriff auf den Ziel-Keystore oder das Zertifikatsverzeichnis.
  • Erlauben Sie nur die Ausführung von shutdown.sh und startup.sh der entsprechenden Tomcat-Instanz; gewähren Sie keine Berechtigungen für das gesamte Verzeichnis /opt.
  • In Umgebungen mit mehreren Tomcat-Instanzen sollte die Berechtigung pro Instanz aufgeteilt werden.

IIS

IIS-Szenarien sind auf Windows-PowerShell-Skripte angewiesen, um PFX zu importieren und HTTPS-Bindungen zu aktualisieren, Administratorrechte sind erforderlich.

clmBot benötigt die folgenden Berechtigungen:

  1. Ausführung mit Administratorkonto: Führen Sie powershell.exe -NoProfile -ExecutionPolicy Bypass aus, um temporäre PFX zu importieren und IIS-Site-Bindungen zu aktualisieren.
  2. Lese-/Schreibzugriff auf das Zertifikatsverzeichnis: Erstellung und Bereinigung temporärer PFX-Dateien.

Mindestberechtigungsempfehlungen:

  • Verwenden Sie ein dediziertes Windows-Dienstkonto und gewähren Sie nur die Berechtigungen, die für die Verwaltung der Bindungen der Ziel-IIS-Site erforderlich sind.
  • Die PowerShell-Ausführungsrichtlinie und Modulberechtigungen sollten separat gemäß der Host-Sicherheitsbaseline überprüft werden.

Beispiel für die Linux-sudoers-Konfiguration

Die folgenden Beispiele dienen nur zur Veranschaulichung der Berechtigungsgranularität; 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 die Verzeichnisberechtigung eines Zertifikats:

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, können Sie eine präzise Autorisierung über ACL erteilen:

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

Berechtigungs-Checkliste vor dem Go-Live

Hinweis

Vor der Bereitstellung des clmBot wird empfohlen, die folgenden Berechtigungskonfigurationen Punkt für Punkt zu überprüfen.

  • Wird der clmBot mit einem dedizierten Konto ausgeführt und nicht mit root oder einem Administrator?
  • Erlaubt config.yaml nur den erforderlichen Konten das Lesen und Schreiben?
  • Sind die Zertifikatsdateien, auf die jeder servers[].format verweist, nur mit den erforderlichen Lese- und Schreibberechtigungen versehen?
  • Erlaubt das Verzeichnis der Zertifikatsdateien das Erstellen und Bereinigen von .bak-Sicherungsdateien?
  • Wurden before_script und after_script bereits manuell geprüft?
  • Ob die sudoers nur exakte Befehle enthalten und nicht ALL, bash oder vollständige systemctl.
  • Ob die reload- oder restart-Berechtigungen für nginx / Apache / Tomcat nur die Zielinstanzen abdecken.
  • Ob die Abhöradresse und der Port des Dienstmodus (clm-bot server) der Firewall-Richtlinie des Hosts entsprechen.