Сервер в кармане, или просто о сложном!

главная - Статьи - Linux, FreeBSD

Aide. Аудит изменений файлов и папок в Linux.

Теги: Система Linux

Порой у всех начинает зашкаливать паранойя. Что-то произошло. Сервер взломали? Кто-то неудачно изменил конфиг и теперь непонятно, какой файл изменялся? На эти вопросы нам поможет ответить aide.

Важно! Подобные программы вспоминают чаще всего когда с системой что-то не то. Но в этот момент уже поздно пить боржоми. Если система скомпрометирвоана или просто неудачно что-то изменено, сравнивать текущее состояние просто не с чем. И бекап вам может не помочь, т.к. если система была в продакшене уже 3 года, то откуда вам знать, что и когда было изменено, в т.ч. в важных файлах (/etc/shadow, например). Поэтому важно настроить aide ДО того момента, когда он реально понадобится.

Все действия я проводил в CentOS, сразу после установки и базовых настроек (сеть, nano, mc и др. по вашему вкусу).

# yum install -y aide
# cp /etc/aide.conf /etc/aide.conf.bak
# less /etc/aide.conf

В базе файл уже готов к эксплуатации. Обратите внимание на то, где будут логи и база данных aide.

Запоминаем текущее состояние системы:

# aide --init

AIDE, version 0.15.1

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

Сохраняем файлы:
/etc/aide.conf
/usr/sbin/aide
/var/lib/aide/aide.db.new.gz

в безопасном месте (т.е. явно не на этом же хосте), например, на флешке, на центральном сервере или в другом месте. На основании этих файлов вы будете в дальнейшем сравнивать, были ли изменения системных и др. файлов. Т.е. этим файлам вы должны полностью доверять. Как самому себе.

Ну, например, так (из Windows, используя Putty):

# pscp -v -P 22 -l srv-user 192.168.1.12:/var/lib/aide/aide.db.new.gz aide.db.new.gz

или как угодно еще.

Еще лучше будет запомнить контрольные суммы файлов:

# md5sum /etc/aide.conf
860337ac195215d3d4041ce3afdbb684 /etc/aide.conf
# md5sum /usr/sbin/aide
2ef0db9111bdc82ab52671d44cee9b5c /usr/sbin/aide
# md5sum /var/lib/aide/aide.db.new.gz
e97951765c48f62f751bb11b7b1fcf3a /var/lib/aide/aide.db.new.gz

Копируем созданный файл в основной рабочий, с которым будет вестись работа:

# cd /var/lib/aide
# cp aide.db.new.gz aide.db.gz

Все, мы готовы к проверке.

Изменим какой-либо файл в системе, например, добавим новую строку в файл /etc/resolv.conf. Достаточно добавить пустую строку и сохранить файл.

Ищем, что поменялось:

# aide --check

В зависимости от производительности системы, количества файлов в ней процесс может занять разное время, но в итоге мы получим нечто вроде:

AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2015-12-08 16:06:06

Summary:
  Total number of files:        29931
  Added files:                  0
  Removed files:                0
  Changed files:                1


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

changed: /etc/resolv.conf

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

File: /etc/resolv.conf
 Size     : 132                              , 133
 SHA256   : xOEHDphj3/oSHCPkBuQeNyhZP3k3t/mV , Zd5keHnFCF6HjVdnPuFelZTb7rkgLXfb

Если мы знаем, что изменения легитимны, то мы можем обновить базу данных:

# aide --update

Попробуйте отправить отчет себе на email:

# aide --check | /usr/bin/mail -s "AIDE check on $HOSTNAME at `date +%d-%m-%Y---%H-%M`" your@email.com

Если отчет пришел, можете добавить команду в крон (например, выполнять каждый день):

# crontab -e
0 0 * * * /usr/sbin/aide --check | /usr/bin/mail -s "AIDE check on $HOSTNAME at `date +%d-%m-%Y---%H-%M`" your@email.com

Не факт, что вам не надоест постоянный отчет по электронной почте, но если вы не входили на сервер, а /etc/passwd изменился, это повод для серьезного расследования.

Важно, чтобы вы были уверены, что файл базы данных /var/lib/aide/aide.db.gz именно тот, который вы создавали своими руками.

Aide неплохо дополняется git, но это другая история.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?