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.
