Bütünlük izlemesi, ne bir antivirüsün ne de bir güvenlik duvarının yanıtladığı bir soruya yanıt verir: bu sunucuda geçen haftadan bu yana ne değişti. İmza tabanlı bir tarayıcı bilinen kötü şeyleri arar; AIDE kötülük hakkında hiçbir şey bilmez, bu dosyanın dün farklı olduğunu bilir. Var olan bir dosyanın sonuna eklenmiş bir arka kapıyı bulmak için işe yarayan tek yaklaşım budur.

AIDE iki komutla kurulur. Raporlarının okunacağı biçimde yapılandırmak daha zor kısımdır — ve onu genellikle öldüren de budur: ilk rapor on bin satırla gelir, ikincisini kimse açmaz ve bir ay sonra görev silinir.

Kurulum ve ilk veritabanı

sudo apt install aide aide-common
sudo aideinit

İlklendirme birkaç dakikadan yarım saate kadar sürer: her dosya için özet değerleri hesaplanır. Sonuç, çalışan veritabanının yanına .new sonekiyle konur ve hizmete alınması gerekir:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Bundan sonra kontrol şununla çalıştırılır:

sudo aide --check

Raporu okunabilir tutmak için neyi hariç tutmalı

Ayarlar /etc/aide/aide.conf dosyasında ve /etc/aide/aide.conf.d/ dizinindedir. Standart Debian yapılandırması fazlasını kontrol eder ve yapılacak ilk şey, sürekli kendiliğinden değişeni çıkarmaktır:

  • /var/log — her saniye değişir;
  • /var/lib dizininin tamamı — veritabanları, paket durumu, servis durumu;
  • /var/cache, /tmp, /proc, /sys, /run;
  • sitenin yükleme ve önbellek dizinleri — içeriklerini ziyaretçiler değiştirir.

En sıkı ayarlarla kontrol edilmeye değer olan dar bir listedir:

  • /bin, /sbin, /usr/bin, /usr/sbin — sistemin çalıştırılabilir dosyaları;
  • /lib, /usr/lib — kütüphaneler;
  • /etc — yapılandırma;
  • /root/.ssh ve kullanıcılarınızın .ssh dizinleri;
  • sitenin kodu, ama yükleme ve önbellek dizinleri olmadan.

Ölçüt: sıradan bir günlük rapor bir ekrana sığmalıdır. Daha uzunsa hariç tutmalar yetersizdir ve rapor okunmaz olacaktır.

Veritabanını nerede tutmalı

Sık gözden kaçan önemli bir nokta. Başka biri root’a sahipse, bir dosyayı değiştirip hemen ardından AIDE veritabanını güncellemek ona hiçbir şeye mal olmaz — ve sonraki kontrol her şeyin yolunda olduğunu bildirir. Aynı makinede duran, yazılabilir bir veritabanı yalnızca kazalara karşı korur.

Tek bir sunucu için makul bir asgari:

  • her güncellemeden sonra veritabanını başka bir makineye kopyalayın ve kontrolü o kopyayı yerine koyarak çalıştırın;
  • ya da en azından veritabanının sağlama toplamını ayrıca saklayın ve kontrolden önce doğrulayın:
sha256sum /var/lib/aide/aide.db

Bu kadar basit bir önlem bile sessiz bir değiştirmeyi fark edilir bir olaya dönüştürür.

Veritabanını güncellemek bilinçli bir eylemdir

Meşru değişikliklerden sonra — bir sistem güncellemesi, sitenin yeni bir sürümünün yayına alınması — veritabanı yeniden kurulur:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Bunun ne zaman yapıldığı önemlidir. Doğrusu: raporu okuyun, her değişikliğin açıklanabilir olduğuna kanaat getirin ve ancak ondan sonra güncelleyin. Yanlışı ve çok yaygını: raporlar temiz çıksın diye aide --update komutunu bir zamanlamaya göre çalıştırmak. İkinci durumda sistem çalışır, raporlar gelir ve değişiklikler tam olarak gerçekleştikleri anda normal olarak kaydedilir — yani anlam bütünüyle yitirilmiştir.

Zamanlama ve yük

aide-common paketi günlük bir görevi kendisi kurar. Kontrol diski ve işlemciyi birkaç dakika yükler, bu yüzden sakin bir saatte ve düşürülmüş öncelikle çalıştırmaya değer:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

Rapor nasıl okunur

Üç bölüm: eklenen, silinen ve değişen dosyalar. Her değişiklik için tam olarak neyin farklı olduğunu gösterir: içerik, izinler, sahip, zaman.

İlk tepki verilecekler:

  • bir güncelleme penceresi dışında /bin, /sbin, /usr/bin içindeki herhangi bir dosyanın değişmesi;
  • sistem dizinlerindeki yeni dosyalar;
  • authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab ve /etc/cron.d içindeki değişiklikler;
  • beliren bir /etc/ld.so.preload dosyası — kendiliğinden asla belirmez.

apt upgrade hemen sonrasında yüz değişmiş dosya normaldir ve raporun zaman damgası bunu doğrular. Hiçbir güncelleme olmayan bir çarşamba günü /usr/bin içinde üç değişmiş dosya, durup incelemek için bir gerekçedir.

AIDE ve debsums

Araçlar komşu sorunları çözer, ama referansları farklıdır. AIDE kendi anlık görüntünüzle karşılaştırır — dolayısıyla sitenin kodu dahil her dosyadaki değişiklikleri görür. debsums dağıtım paketlerindeki sağlama toplamlarıyla karşılaştırır — dolayısıyla hiçbir ön hazırlık olmadan değiştirilmiş sistem dosyalarını görür, ama paketler dışında kurduğunuz hakkında hiçbir şey bilmez. İkisini birden tutmak mantıklıdır; pratikte önce genellikle debsums gelir, çünkü ne yapılandırma ne de veritabanı ister.

Ortak bir zayıflıkları da vardır: rapor postayla gelir ve posta kaybolur. Yani önemli olan kontrolün çalışmış olması değil, en son sonucunun görülebildiği bir yerin bulunmasıdır. Bunun nasıl göründüğü aşağıdaki demo sayfasında.