clmBot Çalışma İzni Gereksinimleri
clmBot, sertifika otomatik yenileme işlemi sırasında hedef sertifika dosyalarını okuma ve yazma işlemleri yapmalı, güncelleme sonrasında ilgili ara katman hizmetini yeniden yüklemeli veya yeniden başlatmalıdır. Bu belge, çeşitli ara katman senaryolarında önerilen minimum izin yapılandırmasını açıklar.
Ara katman reload / restart komutları, config.yaml içindeki servers[].after_script alanında tanımlanmıştır; kullanıcılar gerçek ortama göre ayarlayabilir. clmBot, root veya Administrator gibi yüksek yetkili hesaplarla sürekli çalıştırılmak zorunda değildir.
Minimum İzin İlkesi
clmBot'un özel bir sistem hesabıyla (ör. clmbot) çalıştırılması ve aşağıdaki ilkelere uyulması önerilir:
- Bu hesaba yalnızca clmBot yapılandırması, günlük dizini 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 bulundukları dizinlere yazma izni verin.
- Yalnızca doğrulanmış ara katman reload / restart komutlarının çalıştırılmasına izin verin;
NOPASSWD: ALLveya tam root yetkisi vermeyin. before_script,after_scriptmutlaka insan tarafından denetlenmeli; betikte gereken izinler tek tek yetkilendirilmelidir.
Önerilmeyen uygulamalar:
- clmBot'ın
rootveyaAdministratorkimliğiyle uzun süreli çalışmasına izin verin. - Ara yazılım yapılandırma dizinini, sertifika dizinini veya sistem hizmeti denetim izinlerini bütünüyle clmBot'a açın.
bash,powershell.exe,systemctliçin sınırsız yürütme izni verin.
Ara Yazılımların İzin Gereksinimleri
nginx
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Sertifika dizini okuma-yazma izni: Hedef sertifika dosyası (
.crt), CA zincir dosyası (isteğe bağlı) ve özel anahtar dosyasının (.key) bulunduğu dizin üzerinde okuma-yazma iznine sahip olmalıdır; böylece yeni sertifika yazabilir ve.bakyedeği oluşturabilir. - reload komutunu çalıştırın:
after_scriptvarsayılan olarak, sertifika yenilendikten sonra nginx’i yeniden yüklemek için aşağıdaki betiği oluşturur:
nginx -t && nginx -s reload
En az ayrıcalık önerileri:
- Yalnızca hedef sertifika dizinini açın;
/etc/nginxöğesinin tamamına okuma/yazma izni vermeyin. - sudoers aracılığıyla
nginx -tvenginx -s reloadiçin hassas yetkilendirme yapın; tam root kabuğu vermeyin.
Apache HTTP Server
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Sertifika dizini okuma/yazma izni:
SSLCertificateFile,SSLCertificateChainFile,SSLCertificateKeyFileöğelerinin bulunduğu dizinde okuma/yazma iznine sahip olmalıdır. - Hizmet yeniden başlatma komutunu çalıştırma:
after_scriptvarsayılan olarak aşağıdaki betiklerden birini üretir (dağıtıma bağlı olarak):
systemctl restart httpd.service
systemctl restart apache2.service
最小 yetkilendirme önerileri:
- Yalnızca hedef sertifika dizinini açın; Apache yapılandırma dizininin tamamına yetki vermeyin.
- sudoers aracılığıyla yalnızca sistemde gerçekte kullanılan Apache hizmet adına
restartyetkisi verin.
Tomcat
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Sertifika dizini okuma-yazma izni: PEM sertifika/özel anahtar dosyalarının veya JKS keystore dosyalarının bulunduğu dizin üzerinde okuma-yazma iznine sahip olmalıdır.
- Durdurma ve başlatma betiklerini çalıştırma:
after_scriptvarsayılan olarak aşağıdaki betikleri oluşturur:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"
Minimum yetkilendirme önerileri:
- clmBot ile Tomcat'in aynı iş grubunu kullanmasına öncelik verin; yalnızca hedef keystore veya sertifika dizinine okuma-yazma izni verin.
- Yalnızca ilgili Tomcat örneğinin
shutdown.shvestartup.shişlemlerinin yürütülmesine izin verin;/optdizininin tamamına izin vermeyin. - Çok örnekli Tomcat ortamlarında yetkilendirme örnek bazında ayrılmalıdır.
IIS
IIS senaryosu, PFX içe aktarmak ve HTTPS bağlamasını güncellemek için Windows PowerShell betiklerine bağımlıdır; yönetici ayrıcalıkları gerektirir.
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Yönetici hesabıyla çalıştırma: Geçici PFX'i içe aktarmak ve IIS sitesi bağlamasını güncellemek için
powershell.exe -NoProfile -ExecutionPolicy Bypassçalıştırın. - Sertifika dizini okuma-yazma izni: Geçici PFX dosyasının oluşturulması ve temizlenmesi.
Minimum yetkilendirme önerileri:
- Yalnızca hedef IIS sitesi bağlamasını yönetmek için gereken izinlere sahip özel bir Windows hizmet hesabı kullanın.
- PowerShell yürütme ilkesi ve modül izinleri, ana makine güvenlik taban çizgisine göre ayrıca denetlenmelidir.
Linux sudoers yapılandırma örneği
Aşağıdaki örnekler yalnızca yetkilendirme ayrıntı düzeyini göstermektedir; gerçek yolları hedef ana makineye 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 örneği:
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
ACL kullanarak clmBot'a yukarıdaki dosyalara yazma ve yedekleme izni vermek için hassas yetkilendirme yapabilirsiniz:
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
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 okumasına ve yazması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_scriptmanuel olarak denetlendi mi?- sudoers yalnızca tam komutları mı içeriyor;
ALL,bashveya tamsystemctliçermiyor mu? - 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ına uygun mu?