AIDE ile Linux Dosya Bütünlük İzleme Rehberi
Linux sunucularının güvenliği, modern siber güvenlik stratejilerinin en kritik bileşenlerinden birini oluşturmaktadır. Dosya bütünlük izleme, birçok güvenlik standardı ve düzenleyici gereksinim tarafından zorunlu tutulan temel bir güvenlik uygulamasıdır. PCI DSS, HIPAA, ISO 27001 ve NIST SP 800-53 gibi çerçeveler, kritik sistem ve denetim dosyalarında sürekli değişiklik tespiti ve raporlanmasını gerektirmektedir. Bu makalede, Linux ortamlarında dosya bütünlük izleme için en yaygın kullanılan açık kaynaklı araçlardan biri olan AIDE (Advanced Intrusion Detection Environment) kapsamlı bir şekilde ele alınacaktır.
AIDE, sistem yöneticilerinin dosya ve dizin bütünlüğünü izlemelerini sağlayan güçlü bir yardımcı programdır. Bir veritabanı oluşturarak dosyaların başlangıç durumunu kaydeder ve sonrasında yapılan karşılaştırmalarla yetkisiz değişiklikleri tespit eder. Bu yaklaşım, saldırganların izlerini örtbas etmeye çalışsa bile sisteme sızma girişimlerini belirlemenize olanak tanır. AIDE, özellikle hava boşluğu (air-gapped) ortamlar ve düşük kaynak tüketimi gerektiren senaryolar için ideal bir çözüm sunmaktadır.
AIDE Kurulumu
AIDE kurulumu, Linux dağıtımlarının çoğunda oldukça basittir çünkü araç varsayılan paket depolarında bulunmaktadır. Kurulum öncesinde sistemin güncel olduğundan emin olunmalı ve root veya sudo erişimi sağlanmış olmalıdır. Dağıtımınıza göre aşağıdaki komutlardan birini kullanarak kurulumu gerçekleştirebilirsiniz.
Debian ve Ubuntu Tabanlı Sistemler
Debian tabanlı sistemlerde APT paket yöneticisi kullanılarak kurulum yapılır. Önce depoları güncelleyip ardından AIDE paketini kurmalısınız.
sudo apt update
sudo apt install aide
Kurulum tamamlandıktan sonra AIDE yapılandırma dosyası /etc/aide/aide.conf konumunda oluşturulur ve çalışma dizini /var/lib/aide/ olarak belirlenir.
Red Hat Enterprise Linux ve CentOS
Red Hat tabanlı sistemlerde DNF veya YUM paket yöneticisi kullanılır. Aşağıdaki komutlarla kurulumu gerçekleştirebilirsiniz.
sudo dnf install aide
# veya eski sistemler için
sudo yum install aide
Arch Linux
Arch Linux ve türevlerinde Pacman paket yöneticisi kullanılır.
sudo pacman -S aide
Kurulum sonrasında /etc/aide.conf dosyası oluşturulur ve /var/lib/aide/ çalışma dizini hazır hale getirilir.
AIDE Veritabanı Başlatma
AIDE'nin çalışması için öncelikle bir başlangıç veritabanı oluşturulması gerekmektedir. Bu veritabanı, sistemin temiz ve güvenli durumunun anlık görüntüsünü temsil eder. Veritabanı oluşturulduktan sonra tüm değişiklikler bu temel görüntüye göre değerlendirilir.
Başlangıç Veritabanı Oluşturma
AIDE kurulumunun ardından aşağıdaki komutla başlangıç veritabanını oluşturabilirsiniz.
sudo aide --init
Bu komut çalıştırıldığında AIDE, /etc/aide.conf dosyasında tanımlanan kurallara göre sistemdeki dosyaları tarar ve özniteliklerini kaydeder. Varsayılan yapılandırma /etc, /bin, /sbin, /usr/bin ve /usr/sbin gibi kritik sistem dizinlerini izler. Tarama tamamlandığında veritabanı /var/lib/aide/aide.db.new.gz dosyasına kaydedilir.
Veritabanını Etkinleştirme
Oluşturulan veritabanını kullanıma almak için dosya adından .new uzantısını kaldırmanız gerekmektedir.
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Bu adımdan sonra AIDE, dosya bütünlük kontrolleri için bu veritabanını kullanmaya hazır hale gelir. Veritabanının güvenliği kritik öneme sahiptir çünkü saldırganlar veritabanını değiştirerek izlerini örtbas edebilir. Bu nedenle veritabanını salt okunur ortamlarda saklamanız önerilir.
Yapılandırma Dosyası
AIDE'nin davranışını /etc/aide.conf dosyası üzerinden özelleştirebilirsiniz. Bu dosya, hangi dosyaların ve dizinlerin izleneceğini, hangi özniteliklerin kontrol edileceğini ve hangi karma algoritmaların kullanılacağını belirler. Varsayılan yapılandırma çoğu senaryo için yeterli olsa da kritik sistemlerde ek özelleştirmeler gerekebilir.
Temel Yapılandırma Öğeleri
AIDE yapılandırma dosyasında üç temel öğe bulunmaktadır. Birincisi, izlenecek dosya ve dizinlerin belirlendiği seçim kurallarıdır. İkincisi, bu dosyaların hangi özniteliklerinin kontrol edileceğini tanımlayan öznitelik tanımlarıdır. Üçüncüsü ise gruplama kurallarıdır.
Öznitelik tanımları, dosyaların hangi özelliklerinin izleneceğini belirler. Yaygın kullanılan öznitelikler arasında izinler (p), inode numarası (i), kullanıcı kimliği (u), grup kimliği (g), dosya boyutu (s), değiştirme zamanı (m), erişim zamanı (a) ve karma değerleri (md5, sha1, sha256, sha512, crc32) bulunmaktadır.
SHA512 = SHA512
SEC_BIN = p+i+n+u+g+s+b+m+c+acl+xattrs+sha512
Bu örnekte SEC_BIN kuralı, ikili dosyalar için kapsamlı bir öznitelik seti tanımlamaktadır.
Özel Dizin ve Dosya İzleme
Varsayılan yapılandırmaya ek olarak izlemek istediğiniz özel dizinleri veya dosyaları ekleyebilirsiniz. Örneğin web sunucusu yapılandırma dosyalarını veya uygulama dizinlerini izlemek isteyebilirsiniz.
/etc/apache2 SHA512
/etc/nginx SHA512
/var/www/html SHA512
/home/*/public_html SHA512
Bu yapılandırma, belirtilen dizinlerin SHA512 karma değerleri ile birlikte izlenmesini sağlar.
Dosya Bütünlük Kontrolü
AIDE'nin temel işlevi, mevcut sistem durumunu veritabanındaki kayıtlı durumla karşılaştırarak değişiklikleri tespit etmektir. Bu kontrolü manuel olarak çalıştırabileceğiniz gibi otomatik olarak da planlayabilirsiniz.
Manuel Kontrol
Dosya bütünlüğünü manuel olarak kontrol etmek için aşağıdaki komutu kullanabilirsiniz.
sudo aide --check
Bu komut çalıştırıldığında AIDE, veritabanındaki kayıtlı değerleri mevcut dosya öznitelikleriyle karşılaştırır. Eğer herhangi bir değişiklik tespit edilirse, değişikliğin detaylarını ekrana yansıtır. Değişiklik bulunmadığında "All files match AIDE database" gibi bir mesaj görüntülenir.
Çıktı Formatını Anlama
AIDE kontrol çıktısı, değişiklik türlerini belirli harf kodlarıyla gösterir. Bu kodlar değişikliğin niteliğini anlamanıza yardımcı olur.
"f" harfi dosyanın değiştiğini, "d" harfi dizinin silindiğini veya eklendiğini, "b" harfi blok cihazının değiştiğini, "c" harfi karakter cihazının değiştiğini, "l" harfi sembolik bağın değiştiğini, "p" harfi izinlerin değiştiğini, "u" harfi kullanıcı kimliğinin değiştiğini, "g" harfi grup kimliğinin değiştiğini, "s" harfi boyutun değiştiğini, "m" harfi değiştirme zamanının değiştiğini, "a" harfi erişim zamanının değiştiğini, "i" harfi inode numarasının değiştiğini ve "S" harfi boyutun azaldığını ifade eder.
Veritabanı Güncelleme
Sisteminizde meşru değişiklikler yapıldığında (paket güncellemeleri, yapılandırma değişiklikleri gibi) AIDE veritabanını güncellemeniz gerekmektedir. Aksi takdirde her kontrolde bu meşru değişiklikler yetkisiz erişim olarak algılanır.
Güncelleme Komutu
Veritabanını güncellemek için aşağıdaki komutu kullanabilirsiniz.
sudo aide --update
Bu komut, mevcut dosya durumunu tarar ve yeni bir veritabanı dosyası (/var/lib/aide/aide.db.new.gz) oluşturur. Güncellenmiş veritabanıyı kullanıma almak için yeniden adlandırma işlemi yapmanız gerekir.
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Güncelleme işleminden önce değişikliklerin meşru olduğundan emin olmalısınız. Sistem güncellemeleri, yapılandırma değişiklikleri veya yeni yazılım kurulumları dışındaki değişiklikler araştırılmalıdır.
Otomatik Zamanlama
Düzenli dosya bütünlük kontrolleri, güvenlik açıklarının erken tespit edilmesi açısından kritik öneme sahiptir. Cron kullanarak AIDE kontrolünü otomatik hale getirebilirsiniz.
Cron Yapılandırması
Günlük kontrol için /etc/crontab dosyasına veya kullanıcı crontab'ına aşağıdaki satırı ekleyebilirsiniz.
05 4 * * * root /usr/sbin/aide --check
Bu yapılandırma, her gün saat 04:05'te AIDE kontrolünü çalıştırır. Çıktıyı e-posta ile almak istiyorsanız, crontab yapılandırmanıza bir mail komutu ekleyebilirsiniz.
05 4 * * * root /usr/sbin/aide --check | mail -s "AIDE Raporu" admin@example.com
Daha gelişmiş bir yaklaşım olarak, kontrol sonuçlarını bir log dosyasına yazdırabilir ve ardından logrotate ile döndürebilirsiniz.
05 4 * * * root /usr/sbin/aide --check > /var/log/aide/aide.log 2>&1
Öznel Koruma
AIDE veritabanının kendisi, saldırganlar tarafından değiştirilebilir veya silinebilir. Bu nedenle veritabanının korunması kritik öneme sahiptir. Veritabanını salt okunur ortamda saklamak veya donanım korumalı bir bölümde tutmak en güvenli yaklaşımdır.
Okunabilir Koruma Yöntemleri
Birinci yöntem, veritabanını salt okunur bir mount noktasında saklamaktır. İkinci yöntem, veritabanını şifrelemektir. Üçüncü yöntem, veritabanının bir kopyasını harici bir ortamda (USB bellek, harici disk) saklamaktır. Dördüncü yöntem, AIDE ikilisinin kendisini salt okunur yapmaktır.
sudo chattr +i /var/lib/aide/aide.db.gz
sudo chattr +i /usr/sbin/aide
Bu komutlar, dosyaları değiştirilemez (immutable) hale getirir. Ancak sistem güncellemeleri için bu korumayı geçici olarak kaldırmanız gerekecektir.
Uyarılara Tepki Verme
AIDE bir değişiklik tespit ettiğinde, bu uyarıların uygun şekilde araştırılması gerekmektedir. Her uyarı potansiyel bir güvenlik olayı olarak değerlendirilmeli ve meşru değişiklikler ile yetkisiz erişimler ayırt edilebilmelidir.
Değişiklik Analizi
Bir uyarı aldığınızda öncelikle değişikliğin niteliğini anlamalısınız. Değişikliğin kaynağını belirlemek için sistem günlüklerini, son komut geçmişini ve varsa denetim günlüklerini inceleyebilirsiniz. Aşağıdaki sorulara yanıt aramalısınız: Değişiklik planlı bir güncelleme veya yapılandırma değişikliği mi? Değişiklik yetkili bir kullanıcı tarafından yapıldı mı? Değişiklik zamanı, bilinen bir bakım penceresiyle örtüşüyor mu?
Olası Senaryolar
Sisteminize yetkisiz erişim tespit edildiğinde yapmanız gerekenler şunlardır: Etkilenen sunucuyu ağdan izole edin, değişikliğin kapsamını belirleyin, yedeklerden temiz bir kopyayı geri yükleyin, güvenlik açığını kapatın ve olayı belgelendirin.
Meşru bir değişiklik tespit edildiğinde ise veritabanını güncelleyin ve değişikliğin nedenini dokümante edin.
AIDE ve IMA Karşılaştırması
Red Hat Enterprise Linux ve benzeri dağıtımlarda dosya bütünlüğü için AIDE'nin yanı sıra IMA (Integrity Measurement Architecture) da kullanılabilmektedir. Bu iki araç farklı yaklaşımlar sunar ve farklı kullanım senaryolarına uygundur.
AIDE Özellikleri
AIDE, bir veritabanı oluşturarak dosya ve dizinlerin bütünlüğünü kontrol eder. Değişiklik tespit edildiğinde uyarı verir ancak değişikliği önlemez. AIDE özellikle periyodik kontroller için uygundur ve offline veya hava boşluğu ortamlar için idealdir. Kurulumu ve yapılandırması görece basittir.
IMA Özellikleri
IMA, dosya hash değerlerini genişletilmiş özniteliklerde saklar ve dosya erişildiğinde bütünlüğü kontrol eder. IMA hem tespit hem de önleme mekanizması sunar çünkü dosya değiştirildiğinde genişletilmiş özniteliği de değiştirir. IMA, yerel ve uzak sistemlerde güvenliği sağlar ve gerçek zamanlı izleme gerektiren senaryolar için uygundur.
Hangisi Seçilmeli
Periyodik kontroller ve basit kurulum gereksinimleri için AIDE, gerçek zamanlı koruma gerektiren yüksek güvenlikli ortamlar için IMA tercih edilmelidir. Birçok kurumsal ortamda her iki araç birlikte kullanılarak katmanlı bir güvenlik yaklaşımı benimsenmektedir.
En İyi Uygulamalar
AIDE'den maksimum verim almak ve güvenlik duruşunuzu güçlendirmek için aşağıdaki en iyi uygulamaları izlemeniz önerilmektedir.
Veritabanı Güvenliği
Veritabanını salt okunur ortamda saklayın ve düzenli olarak yedeklerini alın. Veritabanının bir kopyasını fiziksel olarak ayrı bir ortamda tutun. AIDE ikilisinin ve yapılandırma dosyasının da korunduğundan emin olun.
İzleme Kapsamı
Yalnızca kritik sistem dosyalarını değil, uygulama yapılandırma dosyalarını da izleyin. Kullanıcı home dizinlerindeki önemli dosyaları (SSH anahtarları, yetkilendirme dosyaları) kapsama alın. Web sunucusu kök dizinlerini ve veritabanı dosyalarını izlemeye dahil edin.
Kontrol Sıklığı
Minimum haftalık kontrol önerilir ancak kritik sistemlerde günlük kontrol yapılmalıdır. Yüksek riskli ortamlarda birden fazla kontrol planlanabilir. Kontrollerin farklı zaman dilimlerinde yapılması, saldırganların kalıpları tespit etmesini zorlaştırır.
Belgelendirme
Tüm yapılandırma değişikliklerini ve veritabanı güncellemelerini belgelendirin. Kontrol sonuçlarını düzenli olarak arşivleyin. Olay müdahale prosedürlerini önceden tanımlayın ve düzenli olarak tatbikat yapın.
Sonuç
AIDE, Linux sunucularınızın dosya bütünlüğünü izlemek için güçlü ve etkili bir araçtır. Açık kaynak yapısı, düşük kaynak tüketimi ve esnek yapılandırma seçenekleriyle çeşitli kullanım senaryolarına uyum sağlayabilir. Ancak AIDE tek başına kapsamlı bir güvenlik çözümü değildir. Defense-in-depth (derinlemesine savunma) stratejisinin bir parçası olarak diğer güvenlik araçları ve uygulamalarıyla birlikte kullanılmalıdır.
Dosya bütünlük izlemenin düzenli olarak gerçekleştirilmesi, potansiyel güvenlik ihlallerinin erken tespit edilmesini sağlar. Bu sayede saldırganların sisteme erişim sağladıktan sonra izlerini örtbas etmeleri zorlaşır ve müdahale süresi kısalır. AIDE kurulumunun ardından düzenli kontrolleri planlayarak ve uyarıları uygun şekilde değerlendirerek Linux sunucularınızın güvenlik duruşunu önemli ölçüde güçlendirebilirsiniz.