Ana içeriğe geç

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.

Açıklama

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: ALL veya tam root yetkisi vermeyin.
  • before_script, after_script mutlaka insan tarafından denetlenmelidir; betikte gereken izinler tek tek verilmelidir.

Önerilmeyen uygulama:

  • clmBot'ın uzun süre root veya Administrator kimliğ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:

  1. 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 .bak yedeği oluşturulabilir.
  2. reload komutunu çalıştırma:after_script varsayı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/nginx için tüm okuma-yazma izinlerini vermeyin.
  • sudoers aracılığıyla nginx -t ve nginx -s reload için hassas yetkilendirme yapın; tam root shell yetkisi vermeyin.

Apache HTTP Sunucusu​

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. Sertifika dizini okuma/yazma izinleri: SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile için bulunduğu dizinde okuma ve yazma iznine sahip olun.
  2. Servis yeniden başlatma komutunu çalıştırma: after_script varsayı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 restart yetkisi verin.

Tomcat​

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. 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.
  2. Durdurma ve başlatma betiklerini çalıştırma: after_script varsayı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.sh ve startup.sh komutlarının çalıştırılmasına izin verin; tüm /opt dizinine 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:

  1. 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.
  2. 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)​

İpucu

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; root veya yönetici hesabıyla değil.
  • config.yaml yalnızca gerekli hesapların okuma ve yazma yapmasına mı izin veriyor.
  • Her servers[].format ile gösterilen sertifika dosyası yalnızca gerekli okuma-yazma izinlerine mi sahip.
  • Sertifika dosyalarının bulunduğu dizin .bak yedek dosyalarının oluşturulmasına ve temizlenmesine izin veriyor mu.
  • before_script, after_script elle denetlendi mi.
  • sudoers yalnızca kesin komutları mı içeriyor; ALL, bash veya tam systemctl değ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.