clmBot çalışma izni gereksinimleri
clmBot, sertifika otomatik yenileme işlemini gerçekleştirirken hedef sertifika dosyalarını okuma ve yazma işlemlerini yapmalı ve yenileme sonrasında ilgili ara katman yazılım hizmetini yeniden yüklemeli veya yeniden başlatmalıdır.Bu makalede, çeşitli ara yazılım senaryolarında önerilen en az ayrıcalık yapılandırmaları açıklanmaktadır.
Ara katman reload / restart komutları, config.yaml içindeki servers[].after_script alanında tanımlıdır; kullanıcılar bunları kendi ortamlarına göre ayarlayabilir. clmBot’un root veya Administrator gibi yüksek yetkili hesaplarla sürekli çalışması gerekli değildir.
En Az Ayrıcalık İlkesi
Özel bir sistem hesabı (ör. clmbot) kullanarak clmBot'u çalıştırmanız ve aşağıdaki ilkelere uymanız önerilir:
- Bu hesaba yalnızca clmBot yapılandırmasını, günlük dizinini ve hedef sertifika kurulum noktası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 onaylanmış 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 denetlenmelidir; betikte gereken izinler tek tek verilmelidir.
Önerilmeyen uygulama:
- clmBot'ın uzun süre
rootveyaAdministratorkimliğiyle çalışmasına izin verin. - Ara yazılım yapılandırma dizinini, sertifika dizinini veya sistem hizmeti denetim izinlerini tümüyle clmBot'a açın.
bash,powershell.exe,systemctlöğelerine sınırsız yürütme izni verin.
Ara yazılım izin gereksinimleri
nginx
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Sertifika dizini okuma/yazma izinleri:Hedef sertifika dosyası(
.crt)、CA zincir dosyası(isteğe bağlı)ve özel anahtar dosyasının(.key)bulunduğu dizinde okuma/yazma iznine sahip olun; böylece yeni sertifika yazılabilir ve.bakyedeği oluşturulabilir. - reload komutunu çalıştırma:
after_scriptvarsayılan olarak aşağıdaki betiği oluşturur; bu betik, sertifika güncellendikten sonra nginx'i yeniden yüklemek için kullanılır:
nginx -t && nginx -s reload
En az ayrıcalık önerisi:
- Yalnızca hedef sertifika dizinini açın;
/etc/nginxiçin tüm okuma-yazma izinlerini vermeyin. - sudoers aracılığıyla
nginx -tvenginx -s reloadiçin hassas yetkilendirme yapın; tam root shell yetkisi vermeyin.
Apache HTTP Sunucusu
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Sertifika dizini okuma/yazma izinleri:
SSLCertificateFile,SSLCertificateChainFile,SSLCertificateKeyFileiçin bulunduğu dizinde okuma ve yazma iznine sahip olun. - Servis yeniden başlatma komutunu çalıştırma:
after_scriptvarsayılan olarak aşağıdaki betiklerden birini oluşturur (dağıtıma bağlı olarak):
systemctl restart httpd.service
systemctl restart apache2.service
En Az Yetki Önerisi:
- Yalnızca hedef sertifika dizinini açın; Apache yapılandırma dizininin tamamına erişim vermeyin.
- sudoers aracılığıyla yalnızca mevcut sistemde gerçekten 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ı veya JKS keystore dosyasının bulunduğu dizin üzerinde okuma/yazma iznine sahip olun.
- 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"
En az ayrıcalık önerisi:
- Öncelikle clmBot ile Tomcat'in aynı iş grubunu kullanmasını sağlayın ve yalnızca hedef keystore veya sertifika dizinine okuma-yazma yetkisi verin.
- Yalnızca ilgili Tomcat örneğinin
shutdown.shvestartup.shkomutlarının çalıştırılmasına izin verin; tüm/optdizinine yetki vermeyin. - Çoklu örneklemeli Tomcat ortamlarında yetkilendirme örnek bazında ayrılmalıdır.
IIS
IIS senaryosu, PFX'i içe aktarmak ve HTTPS bağlamasını güncellemek için Windows PowerShell betiğine bağımlıdır; yönetici ayrıcalıkları gereklidir.
clmBot aşağıdaki izinlere ihtiyaç duyar:
- Yönetici hesabıyla çalıştırma: Geçici PFX'i içe aktarmak ve IIS site bağlamaları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.
En Az Yetki Önerisi:
- Hedef IIS sitesi bağlamaları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 bilgisayar güvenlik taban çizgisine göre ayrı olarak denetlenmelidir.
Linux sudoers yapılandırma örneği
Aşağıdaki örnek yalnızca yetkilendirme ayrıntı düzeyini ifade eder; gerçek yol, hedef ana makineye göre ayarlanmalıdır.
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
clmBot'un yukarıdaki dosyaya yazmasına ve yedeklemesine izin vermek için ACL ile 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
Yetki Kontrol Listesi (Yayına Alma Öncesi)
clmBot'u dağıtmadan önce aşağıdaki izin yapılandırmalarını tek tek doğrulamanız önerilir.
- clmBot özel bir hesapla mı çalışıyor;
rootveya yönetici hesabıyla değil. config.yamlyalnızca gerekli hesapların okuma ve yazma yapmasına mı izin veriyor.- Her
servers[].formatile gösterilen sertifika dosyası yalnızca gerekli okuma-yazma izinlerine mi sahip. - Sertifika dosyalarının bulunduğu dizin
.bakyedek dosyalarının oluşturulmasına ve temizlenmesine izin veriyor mu. before_script,after_scriptelle denetlendi mi.- sudoers yalnızca kesin komutları mı içeriyor;
ALL,bashveya tamsystemctldeğil. - nginx / Apache / Tomcat 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ı ilkesine uygun mu.