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.
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_scriptundafter_scriptmü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
rootoderAdministratorlaufen. - Gib clmBot vollständigen Zugriff auf das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Systemdienst-Steuerungsberechtigungen.
- Gewähre
bash,powershell.exe,systemctluneingeschränkte Ausführungsrechte.
Anforderungen an die Berechtigungen der Middleware
nginx
clmBot benötigt die folgenden Berechtigungen:
- 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. - Führen Sie den reload-Befehl aus:
after_scriptgeneriert 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/nginxgewähren. - Über sudoers präzise
nginx -tundnginx -s reloadautorisieren, keine vollständige Root-Shell gewähren.
Apache HTTP Server
clmBot benötigt die folgenden Berechtigungen:
- Lese-/Schreibrechte für das Zertifikatsverzeichnis: Lese-/Schreibrechte für die Verzeichnisse, in denen sich
SSLCertificateFile,SSLCertificateChainFileundSSLCertificateKeyFilebefinden. - Ausführen des Dienstneustartbefehls:
after_scriptgeneriert 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
restarterteilen.
Tomcat
Der clmBot benötigt die folgenden Berechtigungen:
- 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.
- Ausführen von Stopp- und Startskripten:
after_scriptgeneriert 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.shundstartup.shfür die betreffende Tomcat-Instanz, ohne Zugriff auf das gesamte Verzeichnis/optzu 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:
- Ausführung mit einem Administratorkonto:
powershell.exe -NoProfile -ExecutionPolicy Bypassausführen, um eine temporäre PFX-Datei zu importieren und die IIS-Site-Bindung zu aktualisieren. - 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
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
rootoder einem Administrator? - Dürfen nur die erforderlichen Konten auf
config.yamllesen und schreiben? - Sind die Lese- und Schreibberechtigungen für die Zertifikatsdateien, auf die jede
servers[].formatverweist, nur auf das notwendige Maß beschränkt? - Ist es im Verzeichnis der Zertifikatsdateien erlaubt,
.bak-Sicherungsdateien zu erstellen und zu bereinigen? - Wurden
before_scriptundafter_scriptbereits manuell geprüft? - Enthält sudoers nur präzise Befehle und nicht
ALL,bashoder das vollständigesystemctl. - 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.