Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
AIDE (Advanced Intrusion Detection Environment), dosyaların özetlerini (hash), izinlerini, sahipliklerini ve zaman damgalarını bir veritabanında saklayan ve sonradan değişiklik olup olmadığını denetleyen bir dosya bütünlüğü izleme aracıdır. Bir sunucu ele geçirildiğinde saldırganın değiştirdiği sistem dosyalarını veya yerleştirdiği web kabuklarını fark etmenin etkili yollarından biridir.
Bu rehberde AIDE'yi kuracak, izlenecek dizinleri belirleyecek, ilk veritabanını oluşturacak, düzenli denetim kuracak ve çıktıları nasıl yorumlayacağınızı öğreneceksiniz. Rehber sunucu yöneticilerine yöneliktir. Tahmini süre: 30-45 dakika.
Gereksinimler
- Debian/Ubuntu veya AlmaLinux/Rocky tabanlı bir sunucu ve sudo yetkisi
- İlk veritabanı oluşturulurken sistemin temiz ve güvenilir durumda olması (zaten ele geçirilmiş bir sistemde alınan taban çizgisi anlamsızdır)
- Yeterli disk alanı ve ilk taramanın disk G/Ç yükünü kaldıracak bir zaman penceresi
- Veritabanının bir kopyasını saklayacak sunucu dışı bir yer
Adım adım AIDE ile dosya bütünlüğü izleme
1. AIDE'yi kurun
# Debian / Ubuntu
sudo apt update && sudo apt install -y aide aide-common
# AlmaLinux / Rocky
sudo dnf install -y aide2. Yapılandırma dosyasının konumunu bilin
Yapılandırma dosyası Debian/Ubuntu'da /etc/aide/aide.conf (ek kurallar /etc/aide/aide.conf.d/ altında), RHEL tabanlı sistemlerde /etc/aide.conf konumundadır. Varsayılan yapılandırma sistem dizinlerini kapsar. Önce dosyayı yedekleyin ve içeriğini inceleyin.
sudo cp /etc/aide/aide.conf /etc/aide/aide.conf.orig # Debian / Ubuntu
sudo cp /etc/aide.conf /etc/aide.conf.orig # RHEL tabanlı3. İzlenecek dizinleri ve kuralları belirleyin
AIDE'de bir kural grubu, hangi özelliklerin denetleneceğini tanımlar (izinler, sahip, boyut, değişiklik zamanı, hash). Kendi kural grubunuzu tanımlayıp web dizinleri gibi önemli yerlere uygulayabilirsiniz. Sık değişen dizinleri (önbellek, günlük, oturum) dışarıda bırakın; aksi halde her gün gürültü alırsınız.
WEBKURAL = p+i+n+u+g+s+m+c+sha256
/var/www WEBKURAL
!/var/www/.*/cache
!/var/www/.*/tmp
/usr/local/sbin WEBKURALBu satırları yapılandırma dosyasının sonuna (Debian'da aide.conf.d altına ayrı bir dosya olarak; dosya adı nokta içermemeli, örneğin 70_web) ekleyin. /etc ve /var/log varsayılan yapılandırmada zaten tanımlıdır; aynı yolu ikinci kez eklemeyin. Web dizininizin yolunu kendi sunucunuza göre uyarlayın. Dosya içeriği değişmemesi gereken yerlerde (sistem ikili dosyaları, yapılandırma, web kodu) sıkı kural, sürekli değişen yerlerde gevşek kural veya dışlama kullanın. Kural adları ve öznitelikleri için kurulu sürümün man aide.conf sayfasına bakın.
Yapılandırma sözdizimini denetleyin:
sudo aide --config-check 2>&1 | tail -n 5 # RHEL tabanlı
sudo aide --config=/etc/aide/aide.conf --config-check 2>&1 | tail -n 5 # Debian / Ubuntu4. İlk veritabanını (taban çizgisini) oluşturun
Bu adım tüm izlenen dosyaları tarar ve disk kullanımı yüksek olabilir; yoğun olmayan saatte çalıştırın.
# Debian / Ubuntu (aideinit yeni veritabanını aide.db olarak yerleştirir)
sudo aideinit
# AlmaLinux / Rocky
sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gzOluşan aide.db dosyasının sahibi ve izinleri kısıtlı olmalıdır. Kopyayı sunucu dışında güvenli bir yere (salt okunur ortam, ayrı bir yedek sunucu) alın; saldırgan veritabanını da değiştirebilirse izlemenin değeri kalmaz.
sudo ls -l /var/lib/aide/
sudo sha256sum /var/lib/aide/aide.db*5. İlk denetimi çalıştırın
sudo aide --check # RHEL tabanlı
sudo aide --config=/etc/aide/aide.conf --check # Debian / UbuntuTaban çizgisi yeni alındıysa AIDE found NO differences benzeri bir sonuç beklenir. Hemen değişiklik raporu alıyorsanız hangi dizinlerin sürekli değiştiğine bakın ve onları dışlama listesine ekleyin.
6. Düzenli denetimi zamanlayın
Debian/Ubuntu'da aide-common paketi günlük bir denetim betiği ile gelir; çalışma durumu ve e-posta bildirimi ayarları dağıtımın belgesinde yer alır. RHEL tabanlı sistemlerde ve özel ihtiyaçlarda cron ile kendiniz zamanlayabilirsiniz. Sonuçları e-postayla alın ya da bir günlük dosyasına yazdırın.
echo '15 4 * * * root umask 077; /usr/sbin/aide --check > /var/log/aide-kontrol.log 2>&1' | sudo tee /etc/cron.d/aide-kontrol
sudo chmod 644 /etc/cron.d/aide-kontrolDebian'da ikili dosya /usr/bin/aide yolundadır ve --config=/etc/aide/aide.conf seçeneğini ekleyin; yolu command -v aide ile doğrulayın. Rapor dosya listesini açığa çıkardığından günlüğü yalnızca root okuyabilmelidir. Çıktıyı yalnızca değişiklik olduğunda size bildirecek bir betikle sarmalamak gürültüyü azaltır.
7. Meşru değişikliklerden sonra veritabanını güncelleyin
Paket güncellemesi, yapılandırma değişikliği veya site dağıtımından sonra AIDE değişiklik raporlayacaktır. Raporu inceleyip değişikliklerin beklenen olduğunu doğruladıktan sonra veritabanını güncelleyin ve yeni kopyayı yedekleyin. Raporu incelemeden güncellemek, saldırganın değişikliklerini de meşrulaştırmak demektir.
# Debian / Ubuntu
sudo aide --config=/etc/aide/aide.conf --update
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# AlmaLinux / Rocky
sudo aide --update
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gzDoğrulama
AIDE'nin gerçekten değişiklik yakaladığını kanıtlamak için güvenli bir test dosyası oluşturun, denetimi çalıştırın ve ardından dosyayı silin.
sudo touch /usr/local/sbin/aide-deneme.txt
sudo aide --check | head -n 30
sudo rm /usr/local/sbin/aide-deneme.txtBeklenen sonuç: raporda Added entries bölümünde /usr/local/sbin/aide-deneme.txt dosyasının görünmesi ve özetin eklenen dosya sayısını göstermesi. Dosya silinip veritabanı güncellenmediyse bir sonraki denetim Removed entries altında bunu da raporlar; test sonrası tutarlılık için veritabanını güncelleyin. Debian'da komut için --config=/etc/aide/aide.conf ekleyin.
Sık karşılaşılan sorunlar
- Her gün çok sayıda değişiklik raporlanıyor: önbellek, oturum, günlük ve geçici dizinleri
!ile dışlayın; kuralı gereksiz özniteliklerden (örneğin sürekli değişen zaman damgaları) arındırın. - İlk tarama çok uzun sürüyor: izlenen kapsamı daraltın ve düşük öncelikle çalıştırın (
niceveionice). - Veritabanı dosyası bulunamadı hatası: yapılandırmadaki
database_inyoluna uygun adlı dosya olmalıdır; init sonrası.newdosyasını doğru ada taşıdığınızdan emin olun. - Güncelleme sonrası beklenmeyen değişiklikler: paket yöneticisi sistem dosyalarını güncellemiştir; paket güncellemesinden hemen sonra raporu inceleyip veritabanını yenileyin.
- Debian'da komut yapılandırmayı bulamıyor:
--configile yapılandırma dosyasının yolunu açıkça verin veya dağıtımın sağladığı sarmalayıcı betiği kullanın.
Güvenlik ve bakım notları
- Veritabanını ve yapılandırmayı sunucu dışında, mümkünse salt okunur bir yerde tutun; saldırgan bunları değiştirebiliyorsa AIDE kör kalır.
- Taban çizgisini yalnızca temiz olduğunu bildiğiniz bir sistemde oluşturun.
- Denetim sonuçlarını bir kişi düzenli okumalıdır; kimsenin bakmadığı rapor koruma sağlamaz.
- Paket güncellemelerinden sonra rapor incelemesini ve veritabanı güncellemesini rutin haline getirin.
- AIDE bir önleme değil bir tespit aracıdır; güvenlik duvarı, güncelleme ve yedekleme ile birlikte kullanın.
- Web kabuğu tespiti için AIDE'yi günlük izleme ve zararlı yazılım taramasıyla tamamlayın.
Sık sorulan sorular
AIDE gerçek zamanlı izleme yapar mı?
Hayır. AIDE, zamanlanmış çalışmalarda veritabanıyla karşılaştırma yapan bir denetleyicidir. Gerçek zamanlı izleme için auditd veya inotify tabanlı araçlar kullanılır; AIDE bunları tamamlar.
Hangi dizinleri izlemeliyim?
Önce /etc, /usr/local/sbin ve sistem ikili dosya dizinlerini, ardından web kök dizinlerinizi izleyin. Sık değişen önbellek, günlük ve yükleme dizinlerini dışarıda bırakmak raporu anlamlı tutar.
AIDE veritabanı ele geçirilirse ne olur?
Saldırgan veritabanını yeniden oluşturup değişikliklerini gizleyebilir. Bu yüzden veritabanının bir kopyasını sunucu dışında veya salt okunur ortamda saklayın ve düzenli olarak karşılaştırın.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- Dosya yükleme güvenliği: uzantı, MIME, depolama ve çalıştırma engeliDosya yükleme formlarını güvenli hale getirin: uzantı beyaz listesi, gerçek MIME denetimi, rastgele dosya adı, web kökü dışında depolama ve yükleme dizininde betik çalıştırmayı engelleme.
- XSS önleme ve CSP ile site savunmasıSiteler arası betik çalıştırma (XSS) saldırılarını çıktı kaçışı, güvenli çerezler ve Content-Security-Policy başlığıyla önleyin; Nginx ve Apache örnekleri ve Report-Only ile güvenli geçiş.
- SQL enjeksiyonunu önleme: hazır sorgular (prepared statements) ve doğrulama (PHP PDO örnekleriyle)SQL enjeksiyonunu PHP PDO hazır sorgularıyla önleyin: parametre bağlama, beyaz liste ile ORDER BY, IN listeleri, en az yetkili veritabanı kullanıcısı ve saldırı denemesiyle doğrulama.
- ClamAV ile sunucuda zararlı yazılım taramasıClamAV kurulumu, imza güncelleme, clamscan ile site dizinlerini tarama, cron ile otomatik rapor ve karantina adımlarını Debian ile AlmaLinux için öğrenin.