Lynis ile Linux Sistem Güvenlik Denetimi Nasıl Yapılır?

Linux sistemlerinizin güvenlik durumunu gerçekten biliyor musunuz? Çoğu sysadmin, sunucularının “yeterince güvenli” olduğunu düşünür ama bunu kanıtlayacak somut bir veriye sahip değildir. İşte tam bu noktada Lynis devreye giriyor. Lynis, açık kaynaklı bir güvenlik denetim aracı olup sisteminizi baştan sona tarayarak zayıf noktaları, yanlış yapılandırmaları ve güvenlik açıklarını raporluyor. Bu yazıda Lynis’i nasıl kurup kullanacağınızı, çıktılarını nasıl yorumlayacağınızı ve bulguları gerçek dünya senaryolarında nasıl düzelteceğinizi ele alacağız.

Lynis Nedir ve Neden Kullanmalısınız?

Lynis, CISOfy tarafından geliştirilen ve UNIX tabanlı sistemler için tasarlanmış bir güvenlik denetim aracıdır. 2007 yılından bu yana aktif olarak geliştirilmekte ve her iki haftada bir güncellenmektedir. Araç, sistem üzerinde herhangi bir agent kurmaya gerek kalmadan doğrudan çalışır ve 300’den fazla güvenlik testini kapsar.

Peki neden Lynis? Çünkü:

  • Ajanssız çalışır: Sisteme ekstra bir servis kurmak zorunda değilsiniz
  • Kapsamlıdır: Kullanıcı hesapları, ağ yapılandırması, dosya sistemi, servisler ve daha fazlasını denetler
  • Uyumluluk odaklıdır: PCI-DSS, HIPAA, ISO 27001 gibi standartlarla uyumlu raporlar üretir
  • Ücretsizdir: Community edition ile ciddi bir denetim yapabilirsiniz
  • Shell tabanlıdır: Herhangi bir bağımlılık gerektirmez, sadece bash yeterlidir

Kurulum

Lynis’i birkaç farklı yöntemle kurabilirsiniz. Dağıtıma göre paket yöneticisi kullananabilirsiniz, ancak en güncel versiyonu almak için direkt kaynak kodunu çekmenizi tavsiye ederim.

Debian/Ubuntu sistemlerde paket yöneticisi ile:

sudo apt update
sudo apt install lynis -y
lynis --version

RHEL/CentOS/Rocky Linux sistemlerde:

sudo dnf install lynis -y
# veya EPEL reposu ile
sudo dnf install epel-release -y
sudo dnf install lynis -y

En güncel versiyonu GitHub’dan kurmak için (önerilen):

cd /opt
sudo git clone https://github.com/CISOfy/lynis.git
cd lynis
sudo ./lynis --version

GitHub’dan kurduğunuzda her zaman en son güvenlik testlerine sahip olursunuz. Paket reposundaki versiyon bazen birkaç sürüm geride kalabiliyor.

Lynis’i güncel tutmak:

cd /opt/lynis
sudo git pull

İlk Tarama: Temel Kullanım

Lynis’in en temel komutu audit system dir. Bu komut sisteminizin tam bir güvenlik denetimini yapar.

sudo lynis audit system

Tarama birkaç dakika sürer. Ekranda renkli çıktılar göreceksiniz: yeşil OK, sarı WARNING, kırmızı ise dikkat edilmesi gereken kritik bulgular anlamına gelir.

Eğer sadece belirli bir kategoriye odaklanmak istiyorsanız:

# Sadece ağ güvenliğini denetle
sudo lynis audit system --tests-from-group networking

# Sadece dosya sistemi testleri
sudo lynis audit system --tests-from-group filesystems

# Sadece authentication testleri
sudo lynis audit system --tests-from-group authentication

Mevcut test gruplarını görmek için:

sudo lynis show groups

Önemli Komut Parametreleri

Lynis oldukça esnek bir araç. Sık kullandığım parametreler şunlar:

–quick: Etkileşimli olmayan mod, script içinde kullanmak için idealdir –quiet: Sadece uyarıları gösterir, gürültüyü keser –logfile /path/to/log: Log dosyasının konumunu belirler –report-file /path/to/report: Rapor dosyasının konumunu belirler –no-colors: Renksiz çıktı, log dosyalarına yazarken okunabilirliği artırır –verbose: Daha fazla detay gösterir, sorun giderme için kullanışlıdır –tests-from-group: Belirli test gruplarını çalıştırır –skip-test: Belirli bir testi atlar –profile: Özel profil dosyası kullanır

Otomasyon için kullandığım temel komut şu şekilde:

sudo lynis audit system --quick --quiet 
  --logfile /var/log/lynis.log 
  --report-file /var/log/lynis-report.dat 
  --no-colors

Çıktıyı Anlamak ve Yorumlamak

Lynis taraması tamamlandığında en alt kısımda bir Hardening Index skoru göreceksiniz. Bu skor 0 ile 100 arasında değişir. Genellikle:

  • 0-49: Kritik sorunlar var, acil müdahale gerekiyor
  • 50-69: Orta düzey güvenlik, iyileştirme gerekli
  • 70-84: İyi seviye, bazı düzenlemeler yapılabilir
  • 85-100: Güçlü güvenlik yapılandırması

Ama bu skora körü körüne güvenmeyin. Skor bir başlangıç noktasıdır, her bulguyu kendi ortamınız için değerlendirmeniz gerekir.

Rapor dosyasını incelemek:

cat /var/log/lynis-report.dat | grep "warning"
cat /var/log/lynis-report.dat | grep "suggestion"

Rapor dosyasında her satır anahtar=değer formatındadır ve bu yapıyı kullanarak otomatik işlemler yapabilirsiniz.

Gerçek Dünya Senaryosu 1: Yeni Sunucu Devreye Alma

Bir müşteri için yeni bir Ubuntu 22.04 web sunucusu kuruyorsunuz. Sunucuyu üretime almadan önce güvenlik denetimi şart. Lynis’i çalıştırdığınızda karşılaşacağınız tipik bulgular ve çözümleri şöyle:

SSH yapılandırması uyarıları:

# Lynis genellikle şu SSH ayarlarını önerir
sudo nano /etc/ssh/sshd_config

# Şu değerleri kontrol edin ve düzeltin:
Protocol 2
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowTcpForwarding no
X11Forwarding no

Değişikliklerden sonra:

sudo systemctl restart sshd
# Tekrar test edin
sudo lynis audit system --tests-from-group ssh

Gerçek Dünya Senaryosu 2: Periyodik Denetim Otomasyonu

Manuel tarama yapmak yorucu ve atlanma ihtimali yüksek. Bunu otomatize etmek için bir cron job kuralım:

# /usr/local/bin/lynis-audit.sh dosyasını oluşturun
sudo nano /usr/local/bin/lynis-audit.sh
#!/bin/bash
# Lynis Otomatik Denetim Scripti
# Her hafta çalışır ve sonuçları mail ile gönderir

LYNIS_DIR="/opt/lynis"
LOG_DIR="/var/log/lynis"
DATE=$(date +%Y%m%d_%H%M%S)
REPORT_FILE="$LOG_DIR/lynis-report-$DATE.dat"
LOG_FILE="$LOG_DIR/lynis-$DATE.log"
EMAIL="[email protected]"
HOSTNAME=$(hostname)

# Log dizinini oluştur
mkdir -p $LOG_DIR

# Lynis denetimini çalıştır
cd $LYNIS_DIR
./lynis audit system --quick --quiet 
  --no-colors 
  --logfile $LOG_FILE 
  --report-file $REPORT_FILE

# Hardening index skorunu çek
SCORE=$(grep "hardening_index" $REPORT_FILE | cut -d'=' -f2)

# Uyarıları çek
WARNINGS=$(grep "^warning[]=" $REPORT_FILE | cut -d'=' -f2 | tr 'n' ', ')

# Kritik uyarı sayısı
WARNING_COUNT=$(grep -c "^warning[]=" $REPORT_FILE)

# Mail gönder
MAIL_BODY="Lynis Güvenlik Denetim Raporu
Sunucu: $HOSTNAME
Tarih: $(date)
Hardening Index: $SCORE/100
Kritik Uyarı Sayısı: $WARNING_COUNT

Uyarılar:
$WARNINGS

Tam rapor için: $LOG_FILE"

echo "$MAIL_BODY" | mail -s "[$HOSTNAME] Lynis Güvenlik Raporu - Skor: $SCORE" $EMAIL

# 30 günden eski raporları temizle
find $LOG_DIR -name "lynis-*" -mtime +30 -delete

echo "Denetim tamamlandı. Skor: $SCORE"

Scripti çalıştırılabilir yapın ve cron’a ekleyin:

sudo chmod +x /usr/local/bin/lynis-audit.sh

# Crontab düzenle - her Pazartesi sabah 03:00'da çalışsın
sudo crontab -e
0 3 * * 1 /usr/local/bin/lynis-audit.sh >> /var/log/lynis/cron.log 2>&1

Kritik Bulgular ve Çözümleri

Lynis’in sıkça raporladığı bulgular ve bunları nasıl düzelteceğinizi anlatalım.

Kernel Hardening

Lynis çoğunlukla kernel parametrelerini eleştirir. /etc/sysctl.conf dosyasına şu ayarları ekleyerek ciddi bir iyileşme sağlayabilirsiniz:

sudo nano /etc/sysctl.d/99-security.conf
# IP Spoofing koruması
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# ICMP broadcast isteklerini reddet
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Kötü amaçlı ICMP hatalarını yoksay
net.ipv4.icmp_ignore_bogus_error_responses = 1

# SYN flood koruması
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# IP forwarding kapalı (router değilsek)
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0

# Source routing'i devre dışı bırak
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Log spoofed, source-routed ve redirect paketleri
net.ipv4.conf.all.log_martians = 1

# Bellek koruma
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

Ayarları uygulayın:

sudo sysctl -p /etc/sysctl.d/99-security.conf

Dosya İzinleri ve Sahiplik

Lynis sık sık kritik dosyaların izinlerini sorgular:

# passwd ve shadow dosyaları
sudo chmod 644 /etc/passwd
sudo chmod 000 /etc/shadow
sudo chown root:shadow /etc/shadow

# cron dosyaları
sudo chmod 600 /etc/crontab
sudo chmod 700 /etc/cron.d
sudo chmod 700 /etc/cron.daily
sudo chmod 700 /etc/cron.weekly
sudo chmod 700 /etc/cron.monthly

# SSH anahtarları
sudo chmod 600 /etc/ssh/ssh_host_*_key
sudo chmod 644 /etc/ssh/ssh_host_*_key.pub

Kullanıcı Hesabı Güvenliği

# Boş şifreli hesapları bul
sudo awk -F: '($2 == "") {print $1}' /etc/shadow

# UID 0'a sahip root dışı hesapları bul
sudo awk -F: '($3 == "0") {print}' /etc/passwd

# Kullanılmayan servislere ait hesapları kilitle
sudo passwd -l daemon
sudo passwd -l bin
sudo passwd -l sys

# Şifre politikası ayarla
sudo nano /etc/security/pwquality.conf
# minlen = 12
# minclass = 3
# maxrepeat = 2

Lynis Profil Dosyaları ile Özelleştirme

Varsayılan Lynis davranışı tüm ortamlar için uygun olmayabilir. Özel profil dosyaları oluşturarak taramayı ortamınıza göre ayarlayabilirsiniz.

# Örnek profil dosyası oluşturun
sudo cp /opt/lynis/default.prf /etc/lynis/custom.prf
sudo nano /etc/lynis/custom.prf

Profil dosyasında sık kullanılan ayarlar:

# Belirli testleri atla (yanlış pozitif durumunda)
skip-test=FIRE-4512
skip-test=HTTP-6640

# Makul olmayan uyarıları sustur
machine-role=server

# Minimum şifre uzunluğunu belirt
password-min-length=12

# Log dosyası konumunu belirt
logfile=/var/log/lynis/lynis.log

# Rapor dosyası konumunu belirt
report-file=/var/log/lynis/lynis-report.dat

Profil ile çalıştırma:

sudo lynis audit system --profile /etc/lynis/custom.prf

Gerçek Dünya Senaryosu 3: Uyumluluk Denetimi

PCI-DSS uyumluluğu gerektiren bir ödeme sistemi sunucusunu denetliyorsunuz. Lynis bu konuda oldukça yardımcı olur ama bazı ek adımlar gerektirir:

# PCI-DSS odaklı test profili ile çalıştırın
sudo lynis audit system --tests-from-group "malware,authentication,crypto,networking,firewalls"

# Sonuçları bir rapor dosyasına aktarın
sudo lynis audit system --quick --no-colors 
  --report-file /tmp/pci-audit-$(date +%Y%m%d).dat 
  --logfile /tmp/pci-audit-$(date +%Y%m%d).log

# Kritik bulguları filtrele
grep "warning|suggestion|hardening_index" /tmp/pci-audit-$(date +%Y%m%d).dat

PCI-DSS için özellikle dikkat etmeniz gereken Lynis test kategorileri:

  • CRYPT testleri: Şifreleme algoritmalarının gücü
  • AUTH testleri: Kimlik doğrulama mekanizmaları
  • FIRE testleri: Güvenlik duvarı yapılandırması
  • LOGG testleri: Log yönetimi
  • NETW testleri: Ağ güvenliği

Lynis Çıktısını Başka Araçlarla Entegre Etmek

Lynis rapor dosyasını parse ederek kendi izleme sistemlerinizle entegre edebilirsiniz. Basit bir Elasticsearch entegrasyonu örneği:

#!/bin/bash
# Lynis sonuçlarını JSON'a çevir ve ELK'a gönder

REPORT="/var/log/lynis/lynis-report.dat"
ES_HOST="http://elasticsearch:9200"
DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
HOSTNAME=$(hostname)

# Temel metrikleri çek
SCORE=$(grep "hardening_index" $REPORT | cut -d'=' -f2)
WARNING_COUNT=$(grep -c "^warning[]=" $REPORT)
SUGGESTION_COUNT=$(grep -c "^suggestion[]=" $REPORT)

# JSON oluştur
JSON_PAYLOAD=$(cat <<EOF
{
  "@timestamp": "$DATE",
  "hostname": "$HOSTNAME",
  "hardening_index": $SCORE,
  "warning_count": $WARNING_COUNT,
  "suggestion_count": $SUGGESTION_COUNT
}
EOF
)

# Elasticsearch'e gönder
curl -s -X POST "$ES_HOST/lynis-reports/_doc" 
  -H "Content-Type: application/json" 
  -d "$JSON_PAYLOAD"

echo "Veriler Elasticsearch'e gönderildi"

Sık Yapılan Hatalar

Lynis kullanırken karşılaştığım ve dikkat edilmesi gereken bazı noktalar:

Root olmadan çalıştırmak: Lynis bazı testleri root yetkisi olmadan çalıştıramaz ve bu da eksik bulgulara yol açar. Her zaman sudo ile çalıştırın.

Çıktıyı körü körüne uygulamak: Lynis genel öneriler sunar. Bir web sunucusunda HTTP portunu kapatmak elbette mantıklı değildir. Her bulguyu kendi ortamınız için değerlendirin.

Tek seferlik denetim: Güvenlik bir süreç, anlık bir durum değil. Düzenli denetimler şart.

Eski Lynis versiyonu kullanmak: Paket reposundaki versiyon aylarca güncellenmeyebilir. Kritik ortamlarda GitHub’dan kurun ve düzenli güncelleyin.

Sadece skora odaklanmak: 90 skoru bile gerçek bir güvenlik açığını gizleyebilir. Her uyarıyı tek tek inceleyin.

Bulgu Takibi ve Raporlama

Kurumsal ortamlarda bulguları takip etmek için basit bir sistem oluşturabilirsiniz:

# İki farklı tarihte alınan raporları karşılaştır
diff /var/log/lynis/lynis-report-20240101.dat 
     /var/log/lynis/lynis-report-20240201.dat | 
     grep "^[<>]" | 
     grep -E "warning|suggestion|hardening_index"

Bu komut hangi uyarıların kapandığını, hangilerinin yeniden ortaya çıktığını kolayca gösterir.

Sonuç

Lynis, Linux sistem güvenliğini denetlemek için başvurulacak ilk araçlardan biri olmalı. Kurulumu kolay, çıktıları anlaşılır ve kapsamlı test seti ile hem tek seferlik denetimler hem de sürekli izleme için idealdir.

Özetlemek gerekirse yapmanız gerekenler şunlar: Öncelikle sisteminizde ilk denetimi yapın ve temel skoru kaydedin. Ardından kritik uyarıları öncelik sırasına göre ele alın, SSH ve kernel hardening ile başlamanızı öneririm. Sonrasında haftalık veya aylık otomatik denetim scripti kurun. Son olarak bulguları takip edin ve her denetimde bir öncekiyle karşılaştırın.

Güvenlik bir hedefe ulaşmak değil, sürekli iyileştirme sürecidir. Lynis bu yolculukta size güvenilir bir yol arkadaşı olacaktır. Bugün başlayın, ilk denetimi yapın ve ne kadar çok şeyin gözden kaçtığını görünce şaşırmaya hazır olun.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir