Çalıştırma İzin Gereksinimleri
clmBot sertifika otomatik yenileme işlemini gerçekleştirirken hedef sertifika dosyalarına okuma/yazma erişimi gerektirir ve yenileme sonrasında ilgili ara yazılım servisini yeniden yükler veya yeniden başlatır. Bu makale, çeşitli ara yazılım senaryolarında önerilen en az ayrıcalık yapılandırmalarını açıklamaktadır.
Ara yazılım reload / restart komutları config.yaml içindeki servers[].after_script alanında tanımlanır; kullanıcılar gerçek ortama göre bunları ayarlayabilir. clmBot’un root veya Administrator gibi yüksek ayrıcalıklı hesaplarla sürekli çalıştırılması gerekmez.
En Az Ayrıcalık İlkesi
clmBot’u çalıştırmak için özel bir sistem hesabı (ör. clmbot) kullanılması önerilir:
- Bu hesaba yalnızca clmBot yapılandırmasını, günlük dizinini ve hedef sertifika kurulum noktalarını okumak için gereken izinleri verin.
- Yalnızca clmBot tarafından yönetilen sertifika dosyalarına, özel anahtar dosyalarına ve bunların bulunduğu dizinlere yazma izni verin.
- Yalnızca doğrulanmış ara yazılım reload / restart komutlarının çalıştırılmasına izin verin;
before_script,after_scriptinsan denetiminden geçtikten sonra tek tek yetkilendirilmelidir.
Önerilmez:
- clmBot'un uzun süre
rootveyaAdministratorkimliğiyle çalışmasına izin verin. - Ara yazılım yapılandırma dizinini, sertifika dizinini veya sistem hizmeti kontrol izinlerini bütünüyle clmBot'a açın.
bash,powershell.exe,systemctl'e sınırsız yürütme izni veyaNOPASSWD: ALLverin.
Her ara yazılım için izin gereksinimleri
| Ara Yazılım | Gereken İzinler | after_script örneği |
|---|---|---|
| nginx | Sertifika (.crt), CA zinciri (isteğe bağlı), özel anahtar (.key) dosyaları ve bulundukları dizin üzerinde okuma-yazma izni; yeni sertifikayı yazmak ve .bak yedeğini oluşturmak için | nginx -t && nginx -s reload |
| Apache | SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile bulunduğu dizinde okuma/yazma izni | systemctl restart httpd.service veya systemctl restart apache2.service |
| Tomcat | PEM sertifikası/özel anahtar veya JKS keystore dosyası ve bulunduğu dizinde okuma/yazma izni | JAVA_HOME + shutdown.sh + startup.sh |
| IIS | clmBot tarafından yerleşik PowerShell betiği ile PFX içe aktarılır ve site bağlamaları güncellenir, yönetici yetkisi gereklidir; geçici PFX dosyasının oluşturulması ve temizlenmesi | Yapılandırma gerekmez, yerleşik betik otomatik olarak işler |
- Sertifika keşif özelliğiyle otomatik oluşturulan komut dosyaları, komutların mutlak yollarını kullanır (ör. nginx
-pve-cparametreleriyle birlikte gelir,systemctlmutlak yol kullanır); lütfen gerçekte oluşturulanservers[].after_scriptdeğerini esas alın. - Tomcat systemd tarafından yönetiliyorsa, otomatik oluşturulan komut dosyası
shutdown.sh/startup.shdeğil,systemctl restart <tomcat 服务名>olur.
Linux sudoers yapılandırma örneği
Aşağıdaki örnek yalnızca yetkilendirme ayrıntı düzeyini gösterir; gerçek yolları hedef sunucuya göre ayarlayın.
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
Sertifika dizini izin örnekleri
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
Örneğin, clmBot'un yukarıdaki dosyalara yazmasına ve yedeklemesine izin vermek için, hassas yetkilendirme amacıyla ACL'leri kullanabilirsiniz:
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/site.key
Yayına Alma Öncesi İzin Kontrol Listesi
clmBot'u dağıtmadan önce aşağıdaki izin yapılandırmalarını tek tek doğrulamanız önerilir.
- clmBot,
rootveya yönetici yerine özel bir hesapla mı çalışıyor? config.yamlyalnızca gerekli hesapların okuma ve yazma yapmasına izin verecek şekilde mi yapılandırıldı?- Her
servers[].formattarafından işaret edilen sertifika dosyaları yalnızca gerekli okuma ve yazma izinlerine mi açık? - Sertifika dosyalarının bulunduğu dizin,
.bakyedek dosyalarının oluşturulmasına ve temizlenmesine izin veriyor mu? before_script,after_scriptiçin manuel denetim yapıldı mı?- sudoers yalnızca tam komutları mı içeriyor, yoksa
ALL,bashveya tümsystemctlmu? - nginx / Apache / Tomcat'in reload veya restart izinleri yalnızca hedef örneği mi kapsıyor?
- Hizmet modu (
clm-bot server) dinleme adresi ve bağlantı noktası, ana makine güvenlik duvarı politikasıyla uyumlu mu?