Bir Linux sunucusunu kurduktan sonra "sertleştirdim" demek yetmez: hangi ayarın gevşek kaldığını ölçmek, bir standarda göre raporlamak ve bunu zaman içinde tekrar edebilmek gerekir. Bu rehberde iki açık kaynak aracı bir arada kullanıyoruz: hızlı ve yorumlayıcı bir denetim için Lynis, standarda dayalı ve raporlanabilir uyumluluk taraması için OpenSCAP. Komutlar ve seçenekler Lynis (CISOfy), OpenSCAP kullanıcı kılavuzu ve ComplianceAsCode projesinin resmî belgelerine dayanır.

Lynis ve OpenSCAP: hangisi ne için?

ÖzellikLynisOpenSCAP
YaklaşımSistem üzerinde çalışan, ajansız güvenlik denetimiSCAP içeriğine (XCCDF/OVAL) göre kural tabanlı değerlendirme
ÇıktıUyarılar, öneriler ve sertleştirme puanıKural başına geçti/kaldı sonucu, HTML rapor, ARF sonuç dosyası
StandartKendi test seti; ISO27001, PCI-DSS, HIPAA gibi uyumluluk testleri de anılıyorCIS, OSPP, PCI-DSS, STIG gibi ComplianceAsCode profilleri
DüzeltmeÖneri verir, kendisi düzeltmezBash betiği veya Ansible playbook üretebilir, isterse uygular
LisansGPLv3 (Enterprise sürümü ayrı)Açık kaynak


Pratik yaklaşım: Lynis ile ilk turda göze çarpan eksikleri hızla bulun, OpenSCAP ile de denetçiye veya ekibe verilebilecek standart bir rapor üretin.

Lynis kurulumu ve ilk tarama

Lynis paket yöneticisiyle ya da doğrudan Git'ten alınabilir; Git yönteminde derleme gerekmez:

CODE TERMINAL
# Debian / Ubuntu
sudo apt-get install lynis

# Git ile
git clone https://github.com/CISOfy/lynis
cd lynis
sudo ./lynis audit system


Paketle kurulduysa komut lynis audit system olarak çalışır. Tam bir denetim için root olarak çalıştırın. Sürüm bilgisi için lynis update info komutunu kullanın. Sık kullanılan seçenekler:


  • --quick (veya -Q): Hata dışında kullanıcı girişi beklemez.
  • --cronjob: Cron altında çalıştırmak içindir, hızlı kipi de kapsar.
  • --pentest: Yetkisiz kullanıcıyla, sızma testi bakış açısıyla tarama yapar.
  • --no-colors: Renksiz çıktı verir.
  • --auditor "Ad Soyad": Raporda denetçi adını belirtir.



Lynis iki dosya üretir: ayrıntılı günlük /var/log/lynis.log (her taramada yenilenir) ve makine tarafından okunabilir /var/log/lynis-report.dat.

Lynis sonuçlarını okuma

Çıktıdaki sonuçlar iki gruba ayrılır. Belgelere göre uyarılar genellikle gerçekten aksiyon gerektiren bulgulardır, öneriler ise iyileştirme alanlarıdır ve genellikle uyarılardan çok daha fazladır. Belgeler ayrıca, uyarı olmaması ve çok sayıda öneri bulunmasının sistemin düzgün korunduğu anlamına gelmediğini vurgular. Her bulgunun köşeli parantez içinde bir test kimliği bulunur (örneğin SSH-7440); ayrıntı için bu kimliği /var/log/lynis.log içinde aratın.

Rapor dosyasından uyarı, öneri ve sertleştirme puanını ayıklamak için:

CODE TERMINAL
sudo grep -E '^(warning|suggestion)\[\]' /var/log/lynis-report.dat
sudo grep '^hardening_index' /var/log/lynis-report.dat


Lynis profillerini özelleştirme

Varsayılan profil default.prf'dir; kendi ayarlarınızı bu dosyayı değiştirmeden /etc/lynis/custom.prf içine yazın. Geçerli profilleri ve ayarları görmek için:

CODE TERMINAL
sudo touch /etc/lynis/custom.prf
lynis show profiles
lynis show settings


Bilinçli olarak kabul ettiğiniz bir bulguyu taramadan çıkarmak için custom.prf içine skip-test satırı ekleyin. Lynis'in varsayılan profilindeki örneklerde test kimliğinin tamamı ya da yalnızca bir alt testi belirtilebilir:

CODE TERMINAL
skip-test=SSH-7408
skip-test=SSH-7408:permitrootlogin


Neden atladığınızı yorum satırıyla kaydedin; aksi halde bir yıl sonra kimse o kararı hatırlamaz.

OpenSCAP kurulumu ve içerik

OpenSCAP taraması iki parça ister: oscap aracı ve taranacak SCAP içeriği. İçeriği ComplianceAsCode (SCAP Security Guide) projesi üretir; proje Ubuntu, Debian, RHEL, Fedora ve SLES için içerik sunar.

CODE TERMINAL
# RHEL 8+ / Fedora
sudo dnf install openscap-scanner scap-security-guide

# Debian / Ubuntu (tarayıcı)
sudo apt install libopenscap8


Debian tarafında içerik paketleri ssg-debian, ssg-debderived, ssg-nondebian ve ssg-applications adlarıyla dağıtılır; hazır paket yoksa proje sürüm sayfasındaki ZIP dosyalarından hazır veri akışlarını alabilir ya da ./build_product betiğiyle kendiniz üretebilirsiniz. Veri akışları ssg-rhel8-ds.xml gibi adlandırılır. Bir dosyadaki profilleri görmek için:

CODE TERMINAL
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml


Tarama ve rapor üretme

CODE TERMINAL
sudo oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_ospp \
  --results-arf arf.xml --report report.html \
  /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml


Komut ARF sonuç dosyasını ve insan okunabilir HTML raporunu üretir. Başlıca sonuç durumları: pass (kural sağlanıyor), fail (sağlanmıyor), error (değerlendirme tamamlanamadı), unknown, notapplicable (kural hedefe uygulanamaz), notchecked (kontrol tanımlı değil) ve fixed (başarısız kural düzeltildi). Çıkış kodu otomasyon için önemlidir: tüm kurallar geçerse 0, değerlendirme sırasında hata olursa 1, en az bir kural fail veya unknown olursa 2 döner. Yani 2, "tarama başarılı ama sistem uyumsuz" demektir.

Düzeltmeleri güvenle uygulama

OpenSCAP taramadan sonra düzeltme üretebilir. Önce üretin, okuyun, test ortamında deneyin, sonra üretimde uygulayın:

CODE TERMINAL
# Bash betiği olarak
sudo oscap xccdf generate fix --fix-type bash \
  --output duzelt.sh --result-id  results.xml

# Ansible playbook olarak
oscap xccdf generate fix --profile ospp --fix-type ansible \
  /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml > playbook.yml


Tarama sırasında doğrudan düzeltmek için --remediate seçeneği vardır. Kılavuz, düzeltmeyi sonraya bırakmak için iki adımlı yolu da anlatır: önce sonuçları kaydedin, sonra oscap xccdf remediate --results sonuc.xml results.xml ile uygulayın. Bazı düzeltmeler SSH erişimini veya servis ayarlarını değiştirebileceğinden, canlı sunucuda otomatik düzeltmeyi doğrudan çalıştırmayın.

Profili ihtiyaca göre uyarlama (tailoring)

Her kural her ortama uymaz. Kılavuzdaki autotailor aracıyla bir profilden kural çıkarıp özel bir profil üretebilir, taramada --tailoring-file ile kullanabilirsiniz:

CODE TERMINAL
autotailor --unselect RULE_ID --output /tmp/tailoring.xml \
  --new-profile-id custom ssg-rhel8-ds.xml ospp


Kural dışı bırakırken gerekçeyi dokümante edin; uyumluluk raporunda "neden atlandı" sorusunun yanıtı hazır olmalı.

Uzaktan ve konteyner taraması

Tek bir yönetim makinesinden sunucuları taramak için oscap-ssh, konteyner imajları için oscap-podman kullanılır:

CODE TERMINAL
oscap-ssh [email protected] 22 xccdf eval --profile ospp \
  --report report.html /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml


Sürekli denetim için kontrol listesi


  • Lynis'i cron ile --cronjob kipinde çalıştırın; her turun sertleştirme puanını ve uyarı sayısını kaydedip zamanla karşılaştırın.
  • OpenSCAP çıkış kodunu izleyin; 2 dönerse HTML raporu ilgili ekibe iletin.
  • Yeni sunucu imajı üretirken tarama yapıp raporu imaj sürümüyle birlikte saklayın.
  • Atlanan test ve kural listesini (custom.prf, tailoring dosyası) sürüm kontrolünde tutun.
  • Düzeltmeleri önce test sunucusunda uygulayın, SSH ve servis erişimini doğrulayın, sonra yayına alın.
  • Raporlar sistem yapılandırmanızı ayrıntılı gösterir; sonuç dosyalarını yalnızca yetkili ekiplerle paylaşın.



Lynis ve OpenSCAP birbirinin alternatifi değil, tamamlayıcısıdır: biri size neyi düzeltmeniz gerektiğini hızlıca söyler, diğeri sonucu bir standarda göre kanıtlanabilir hâle getirir.

Kaynaklar
TR Siber Ekibi Yazar · TRSiber
← Ana sayfaya dön