Narzędzia użytkownika

Narzędzia witryny


materialy:bezpieczenstwo:aide

Badanie integralności systemu

Jednym z elementów dbania o bezpieczeństwo systemu operacyjnego jest weryfikacja jego integralności czyli tego, co zmienia się w systemie. Ponieważ cały system opiera się na plikach to w dość prosty sposób można badać integralność opierając się na zmianach:

  • zawartości plików,
  • uprawnień do plików,
  • nazw plików,
  • usunięciach plików i katalogów,
  • tworzeniu nowych plików i katalogów.

Do pomocy administratorowi przychodzą gotowe narzędzia, na przykład Aide - Advanced Intrusion Detection Environment.

Głównym zadaniem tego oprogramowania jest utworzenie bazy wzorcowej która zawiera informacje o aktualnym stanie systemu a później weryfikowanie czy nastąpiły zmiany na podstawie porównania z wzorcową bazą.

Zmiany w plikach rozpoznawane są przez weryfikacje ich sum kontrolnych (np. skrótów md5) zatem każda najmniejsza zmiana zostanie odnotowana.

Poniżej prezentujemy przykładowe zastosowanie Aide w dystrybucji Centos 7.

Aide w CentOS 7

Instalacja

yum -y install aide

Konfiguracja Aide

Skonfigurowanie systemu badania integralności plików jest najbardziej czasochłonnym ale kluczowym elementem poprawnego działania tego oprogramowania. Działający system ma wiele plików, które się zmieniają. W konfiguracji należy wskazać te pliki, które nie powinny się zmieniać. Jeśli są pliki, które się zmieniają to trzeba je wykluczyć ze sprawdzania integralności lub oprzeć ich badanie na przykład o zmianę uprawnień (jeśli nie powinny się zmieniać). Administrator nie chciałby otrzymywać codziennie informacji, że plik /var/log/messages zmienia się codziennie, bo taki jest charakter tego pliku. Ma natomiast sens badanie, czy plikowi nie zmieniono uprawnień, właściciela lub czy go skasowano. Umiejętność dobrego skonfigurowania systemu badania integralności jest powiązana z szeroką wiedzą na temat systemu oraz oprogramowania na nim działającego.

Konfiguracja w Aide ogranicza się na edycji jednego pliku - /etc/aide.conf. Same komentarze w pliku jak i jego dokumentacja dobrze opisują szczegóły konfiguracyjne:

man aide.conf

Największym plusem oprogramowania Aide instalowanego z pakietu jest dobrze przygotowany i właściwie gotowy do działania plik konfiguracyjny, który uwzględnia charakter zmian plików w systemie.

Administratorzy mogą w nim dokonywać zmian zgodnie ze swoimi preferencjami. Najczęstszą wprowadzaną zmianą jest ignorowanie pewnych plików lub katalogów. Można tego dokonać poprzedzając ścieżkę do obiektu znakiem wykrzyknika. Przykładowo, aby ominąć skanowanie zmian w katalogu /root/sandbox należy dopisać do pliku konfiguracyjnego linię:

!/root/sandbox

Inicjalizacja bazy

Zaraz po zainstalowaniu oprogramowania lub po ewentualnej modyfikacji pliku konfiguracyjnego należy dokonać pierwszego skanowania i zbudowania bazy danych zawierającej informację o systemie:

[root@lpi-c7 ~]# aide --init

AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

Po zakończeniu prac w systemie tworzony jest plik /var/lib/aide/aide.db.new.gz, który zawiera aktualną bazę inicjacyjną. Aby na jej podstawie było realizowane w przyszłości badanie integralności plików należy zmienić nazwę tego pliku na aide.db.gz:

mv -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Sprawdzanie integralności

Sprawdzanie integralności można wykonać za pomocą:

[root@lpi-c7 ~]# aide --check
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

Jeśli tylko dokonana zostanie zmiana w systemie, na przykład utworzony nowy plik w katalogu /root lub zmiana uprawnień do katalogu /etc/ssh Aide wykryje zmianę:

[root@lpi-c7 ~]# touch /root/nowy-plik
[root@lpi-c7 ~]# chmod g+w /etc/ssh
[root@lpi-c7 ~]# aide --check

AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2014-11-23 20:53:45

Summary:
  Total number of files:        40670
  Added files:                  1
  Removed files:                0
  Changed files:                2


---------------------------------------------------
Added files:
---------------------------------------------------

added: /root/nowy-plik

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /etc/ssh
changed: /root

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------


Directory: /etc/ssh
 Perm     : drwxr-xr-x                       , drwxrwxr-x
 ACL      : old = A:
----
user::rwx
group::r-x
other::r-x
----
                  D: <NONE>
            new = A:
----
user::rwx
group::rwx
other::r-x
----
                  D: <NONE>

Directory: /root
 Mtime    : 2014-11-23 20:43:43              , 2014-11-23 20:53:34
 Ctime    : 2014-11-23 20:43:43              , 2014-11-23 20:53:34

Aktualizowanie bazy

Oczywistym jest, że zmian w systemie, nawet we wrażliwych plikach dokonuje choćby administrator i od czasu do czasu będzie potrzeba zaktualizowania bazy wobec której mają być dokonywane porównania. Aby tego dokonać trzeba wywołać aide z parametrem --update, co wygeneruje plik /var/lib/aide/aide.db.new.gz. Aby był on podstawowym plikiem bazy do dalszego badania integralnośc zmienić mu nazwę na /var/lib/aide/aide.db.gz. Przykład:

[root@lpi-c7 ~]# aide --update
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2014-11-23 20:57:14

Summary:
  Total number of files:        40670
  Added files:                  1
  Removed files:                0
  Changed files:                2


---------------------------------------------------
Added files:
---------------------------------------------------

added: /root/nowy-plik

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /etc/ssh
changed: /root

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------


Directory: /etc/ssh
 Perm     : drwxr-xr-x                       , drwxrwxr-x
 ACL      : old = A:
----
user::rwx
group::r-x
other::r-x
----
                  D: <NONE>
            new = A:
----
user::rwx
group::rwx
other::r-x
----
                  D: <NONE>

Directory: /root
 Mtime    : 2014-11-23 20:43:43              , 2014-11-23 20:53:34
 Ctime    : 2014-11-23 20:43:43              , 2014-11-23 20:53:34



[root@lpi-c7 ~]# mv -f /var/lib/aide/aide.db.gz /var/lib/aide/aide.db.gz.old

[root@lpi-c7 ~]# mv -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

[root@lpi-c7 ~]# aide --check

AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

Zabezpieczenia bazy Aide

Problemem Aide jak i innych systemów badania integralności jest kwestia tego gdzie baza wzorocowa jest przechowywana. Jedynie root ma uprawnienia do katalogu z bazą oraz do pliku konfiguracyjnego Aide:

[root@lpi-c7 ~]# ls -ld /var/lib/aide/
drwx------. 2 root root 44 11-23 20:59 /var/lib/aide/
[root@lpi-c7 ~]# ls -l /etc/aide.conf 
-rw-------. 1 root root 4807 2014-01-29  /etc/aide.conf

Niemniej jednak, jeśli system będzie skompromitowany i włamywacz dostanie się do systemu na poziom roota to oprócz modyfikacji samych plików może również zmodyfikować plik konfiguracyjny czy bazę tak, że zmiany nie będą widoczne dla administratora systemu.

Dlatego zaleca się przechowywanie plików bazy i konfiguracji na osobnym systemie oraz okresowe badanie zmian pomiędzy tymi plikami.

Automatyzacja Aide

Aby zadziałała automatyzacja w systemie powinny być wcześniej zainstalowane i skonfigurowane pakiety crontabs oraz mailx. Ten pierwszy pakiet jest domyślnie dostarczany z systemem. Ten drugi wystarczy doinstalować:

yum -y install mailx

Automatyzacji Aide można dokonać poprzez utworzenie jako root skryptu /etc/cron.daily/itmz-aide-check.sh o przykładowej zawartości:

#! /bin/sh
#Autor: Mariusz Zalewski

#sprawdzenie integralności i zapisanie do pliku tymczasowego
#o nazwie /tmp/nazwapliku-PIDuruchomionejpowloki.txt
/usr/sbin/aide --check > /tmp/$0-$$.txt

#wyslij maila o tytule "Aide check" na adres admin@test.itmz.pl
#w body maila zamiesc wynik komendy aide --check
/bin/mail -s "Aide check" admin@test.itmz.pl < /tmp/$0-$$.txt

#usun plik tymczasowy
/bin/rm /tmp/$0-$$.txt

Do skryptu root powinien mieć uprawnienia uruchamiania:

chmod u+x /etc/cron.daily/itmz-aide-check.sh 

Od tej pory każdego dnia administrator dostanie maila na swój adres o wynikach badania integralności systemu.

materialy/bezpieczenstwo/aide.txt · ostatnio zmienione: 2014/11/25 12:41 przez mzalewski

(C) 2017 ITMZ Mariusz Zalewski