Konuyu Okuyanlar: 1 Ziyaretçi

Linux'ta Dosya Bütünlüğü İzleme: AIDE Kurulumu, İlk Veritabanı ve Günlük Kontrol

Linux'ta Dosya Bütünlüğü İzleme: AIDE Kurulumu, İlk Veritabanı ve Günlük Kontrol
[Resim: attachment.php?aid=257]

Selam arkadaşlar,

Geçen ay bir test sunucusunda /usr/bin altındaki bir dosyanın tarihi dikkatimi çekti. Sonradan paket güncellemesi olduğu ortaya çıktı ama o an "bu dosya gerçekten değişti mi, ne zaman değişti?" sorusuna elimde net bir cevap yoktu. O günden beri kurduğum her Linux makinede ilk işlerden biri AIDE oluyor. Bu konuda AIDE'yi (Advanced Intrusion Detection Environment) sıfırdan kurmayı, ilk veritabanını oluşturmayı, gürültüyü azaltmayı ve kontrolü otomatiğe bağlamayı anlatacağım. Örnekler Debian 12 / Ubuntu 24.04 üzerinde; RHEL tarafındaki farkları da not düştüm.

AIDE tam olarak ne yapar?
AIDE bir dosya bütünlüğü izleme (FIM) aracıdır. Mantığı basit: sistem temizken seçtiğiniz dizinlerdeki dosyaların özniteliklerini (izinler, sahip, boyut, inode, değişiklik zamanı) ve hash değerlerini (SHA-256, SHA-512 vb.) bir veritabanına yazar. Sonraki her kontrolde mevcut durumu bu veritabanıyla karşılaştırır ve eklenen, silinen, değişen dosyaları raporlar.

Önemli nokta: AIDE gerçek zamanlı değildir. Bir saldırganın değiştirdiği dosyayı anında yakalamaz, bir sonraki taramada yakalar. Gerçek zamanlı izleme istiyorsanız auditd veya Wazuh'un syscheck modülü gibi araçlara bakmak gerekir. AIDE'nin gücü sadeliği ve bağımsız çalışabilmesidir.

Kurulum
Debian/Ubuntu:
Kod:
sudo apt update sudo apt install aide aide-common aide --version
RHEL / Rocky / Alma:
Kod:
sudo dnf install aide
Debian paketinde yapılandırma /etc/aide/aide.conf ve /etc/aide/aide.conf.d/ altında parçalı tutulur. RHEL tarafında tek dosya olarak /etc/aide.conf vardır. Bu fark, internetteki örnekleri birebir kopyalarken en sık takıldığım yer oldu.

İlk veritabanını oluşturmak
Debian ailesinde paketle gelen yardımcı betik işi kolaylaştırır:
Kod:
sudo aideinit
Bu komut veritabanını /var/lib/aide/aide.db.new dosyasına yazar ve ardından aide.db olarak kopyalar. RHEL tarafında elle yapılır:
Kod:
sudo aide --init sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
İlk tarama disk boyutuna göre birkaç dakikadan yarım saate kadar sürebilir. Benim 40 GB'lık test VM'imde yaklaşık 6 dakika sürdü.

Çok kritik bir uyarı: veritabanını mutlaka temiz olduğundan emin olduğunuz bir anda oluşturun. Zaten ele geçirilmiş bir sistemde oluşturulan veritabanı, saldırganın değişikliklerini "normal" kabul eder.

Kontrol çalıştırmak ve çıktıyı okumak
Kod:
sudo aide --check --config /etc/aide/aide.conf
Ben test için bilerek /etc/passwd dosyasına bir test kullanıcısı ekledim. Çıktının özeti şuna benziyordu:

[Resim: attachment.php?aid=258]

Çıktıdaki satır başındaki harf dosya tipini (f: dosya, d: dizin), ardından gelen sütunlar hangi özniteliğin değiştiğini gösterir. Örneğin boyut, mtime, ctime ve hash değişmişse ilgili sütunlarda işaret görürsünüz. Raporun alt kısmında "Detailed information about changes" bölümü eski ve yeni hash değerlerini tek tek listeler.

Çıkış kodu da önemlidir: AIDE değişiklik bulduğunda sıfırdan farklı bir kodla çıkar. Betiklerde bunu kullanarak alarm üretebilirsiniz.

Gürültüyü azaltmak: kural yazımı
Varsayılan yapılandırma ilk günlerde çok fazla satır üretir: log dosyaları, önbellekler, /var/lib altında sürekli değişen veriler... Bunları izlemenin anlamı yok. Kendi kurallarımı Debian'da /etc/aide/aide.conf.d/ altına ayrı bir dosya olarak koyuyorum:
Kod:
# /etc/aide/aide.conf.d/99_yerel !/var/log !/var/cache !/var/lib/apt/lists !/home/.*/\.cache /etc CONTENT_EX /usr/bin CONTENT_EX /usr/sbin CONTENT_EX /boot CONTENT_EX
Ünlem işareti (!) hariç tutma anlamına gelir. CONTENT_EX gibi grup adları ana yapılandırmada tanımlıdır; kendi grubunuzu da tanımlayabilirsiniz:
Kod:
BENIM = p+u+g+s+m+c+sha256 /opt/uygulama BENIM
Buradaki harfler: p izinler, u kullanıcı, g grup, s boyut, m mtime, c ctime. Tam liste için man 5 aide.conf kılavuzuna bakın.

Yapılandırmayı değiştirdikten sonra sözdizimini test etmek için:
Kod:
sudo aide --config-check --config /etc/aide/aide.conf

Meşru değişikliklerden sonra veritabanını güncellemek
Paket güncellemesi yaptığınızda yüzlerce dosya değişir. Bu durumda önce raporu gözden geçirip değişikliklerin beklenen olduğundan emin olun, sonra veritabanını yenileyin:
Kod:
sudo aide --update --config /etc/aide/aide.conf sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Benim alışkanlığım: her "apt upgrade" sonrası bir kontrol, rapor temizse güncelleme. Kontrol etmeden körlemesine güncelleme yapmak AIDE'yi anlamsız kılar.

Günlük otomatik kontrol
Debian paketi zaten /etc/cron.daily/aide betiğiyle günlük kontrol kurar ve sonuçları e-posta ile gönderir (MAILTO ayarı /etc/default/aide içinde). Systemd kullanan dağıtımlarda dailyaidecheck.timer da gelebilir:
Kod:
systemctl list-timers | grep -i aide
Kendi betiğinizi yazmak isterseniz basit bir örnek:
Kod:
#!/bin/bash LOG=/var/log/aide/aide-$(date +%F).log mkdir -p /var/log/aide /usr/bin/aide --check --config /etc/aide/aide.conf > "$LOG" 2>&1 if [ $? -ne 0 ]; then logger -t aide "AIDE değişiklik tespit etti: $LOG" fi
logger ile syslog'a yazınca SIEM'iniz bu satırı yakalayıp alarm üretebilir.

Veritabanını korumak
AIDE'nin en zayıf noktası şudur: root yetkisi alan bir saldırgan veritabanını da güncelleyebilir. Bu yüzden temiz veritabanının bir kopyasını salt okunur bir ortama alın, kontrol öncesi hash doğrulayın ve mümkünse AIDE binary'sinin kendisini de güvenilir bir kopyadan çalıştırın.
Kod:
sha256sum /var/lib/aide/aide.db > /root/aide.db.sha256

AIDE ne değildir?
AIDE size "ne değişti" der, "neden değişti" demez. Bir değişikliğin saldırı mı yoksa yönetici işlemi mi olduğunu anlamak için auditd kayıtları, paket yöneticisi geçmişi ve oturum loglarıyla birlikte değerlendirmek gerekir. Rootkit tespiti için de tek başına yeterli değildir.

Kaynaklar
  • AIDE resmi proje sayfası: aide.github.io
  • man aide, man 5 aide.conf
  • Red Hat Enterprise Linux Security Hardening belgesi, "Checking integrity with AIDE" bölümü

Siz FIM için hangi aracı kullanıyorsunuz? Wazuh syscheck ile AIDE'yi karşılaştıran olduysa deneyimini merak ediyorum.

Paket güncellemesi sonrası kontrol rutini
Üretimde unattended-upgrades veya Ansible ile yama dağıtıyorsanız AIDE veritabanını körlemesine güncellemek yerine şu sırayı kullanın: yama penceresi bitince aide --check, değişen dosyaların paket listesiyle kesişimini doğrula (dpkg -S /path veya rpm -qf), ardından --update. Kesişmeyen dosyalar (ör. /etc altında elle değiştirilmiş config) ayrı ticket ister.

Wazuh syscheck ile fark
Wazuh syscheck gerçek zamanlıa daha yakın (inotify) çalışabilir ve merkezi yöneticiden politika iter. AIDE ise ajan gerektirmeyen, tek makinelik, denetim izine kolay eklenen bir araçtır. Küçük lab veya internete kapalı sunucuda AIDE yeter; filo yönetiminde Wazuh/OSSEC ailesi daha ölçeklenir. İkisini birlikte kullananlar: AIDE'yi "altın imaj doğrulama", Wazuh'u "sürekli izleme" diye ayırır.


Sık sorulanlar
AIDE veritabanını NFS'e koymayın; saldırgan orayı da yazabilir. cron mail çalışmıyorsa logger + SIEM yolunu kullanın. İlk kurulumda /var ve /home'u olduğu gibi izlemek gürültü tsunami'sidir; önce /etc /bin /sbin /usr/bin /boot ile başlayın, sonra genişletin. Sunucu immutable infrastructure ise her deploy'da yeni baseline alın; AIDE'yi golden image pipeline'ının son adımı yapın.

Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.


Ek DosyalarEkran Görüntüleri
       
Cevapla



Hızlı Menü: