Linux: система AIDE — отслеживание изменений файлов и директорий

Автор: | 12/08/2014
 

Linux SecureAIDE (Advanced Intrusion Detection Enviornment) — система предотвращения взлома системы.

Домашняя страница проекта — тут>>>.

Суть системы — она создаёт свою базу данных директорий и файлов, и периодически отслеживает изменения в них.

Устанавливаем:

# yum -y install aide

Проверяем:

# aide -v
Aide 0.14

Получения помощи:

# aide --help

Основной файл конфигурации — /etc/aide.conf.

В нём перечислены все файлы и директории, которые необходимо отслеживать.

Например:

/etc/sysconfig LSPP

означает, что AIDE создаст md5 и sha256 хеши директории /etc/sysconfig/.

Создаём базу для хранения состояния файлов конфигураций:

# aide --init

AIDE, version 0.14

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

Проверяем её наличие:

# ls -l /var/lib/aide
total 6148
-rw------- 1 root root 6292188 Dec  6 18:03 aide.db.new.gz

Если вернуться к файлу конфигурации — увидим, что AIDE использует базу:

# The location of the database to be read.
database=file:@@{DBDIR}/aide.db.gz

А после инициализации — она имеет в имени new.

Перемещаем базу:

# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Запускаем проверку:

# aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2014-12-06 18:06:36

Summary:
  Total number of files:        87536
  Added files:                  9
  Removed files:                0
  Changed files:                1


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

added: /etc/.aide.conf.swp
added: /var/log/psad/31.24.91.131
...
added: /var/log/psad/31.24.91.131/email_ctr

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

changed: /var/log/psad

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

Directory: /var/log/psad
  Linkcount: 9                                , 10

Уберём из отслеживания директорию /var/log/psad.

В файле /etc/aide.conf находим:

/var/log   LOG

И под ним добавляем:

# disable psad logs
!/var/log/psad

Попробуем добавить файл в директорию /usr/sbin:

# touch /usr/sbin/mytestfile.txt

И ещё раз запускаем AIDE:

# aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2014-12-06 18:14:47

Summary:
  Total number of files:        87529
  Added files:                  2
  Removed files:                0
  Changed files:                4

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

added: /etc/.aide.conf.swp
added: /usr/sbin/mytestfile.txt

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

changed: /etc/aide.conf
changed: /usr/sbin
changed: /root
changed: /root/.viminfo

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

File: /etc/aide.conf
  Inode    : 527951                           , 527959

Directory: /usr/sbin
  Mtime    : 2014-12-06 17:56:52              , 2014-12-06 18:14:29
  Ctime    : 2014-12-06 17:56:52              , 2014-12-06 18:14:29

Directory: /root
  Mtime    : 2014-12-06 17:59:07              , 2014-12-06 18:11:12
  Ctime    : 2014-12-06 17:59:07              , 2014-12-06 18:11:12

File: /root/.viminfo
  Inode    : 1308400                          , 1308332

Всё работает.

Создаём обновлённую базу, с учетом внесённых изменений:

# aide --update

Теперь у нас два файла базы:

# ls -l /var/lib/aide/
total 12300
-rw------- 1 root root 6292188 Dec  6 18:03 aide.db.gz
-rw------- 1 root root 6291650 Dec  6 18:25 aide.db.new.gz

aide.db.new.gz — был сгенерирован при выполнении --update.

Сохраняем старую базу:

# mv /var/lib/aide/aide.db.gz /var/lib/aide/aide.db.gz-$(date +%Y-%m-%d)

А новую — устанавливаем как текущую:

# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Все результаты так же записываются в файл /var/log/aide/aide.log.

Что бы упростить задачу, и добавить её в cron — можно использовать такой скрипт:

#!/usr/bin/env bash

DATE=$(date +%Y-%m-%d-%H-%M)
TMPFILE="/tmp/aide-$DATE.txt"

DB_DIR="/var/lib/aide"
CUR_DB="/var/lib/aide/aide.db.gz"
BKP_DB="/var/lib/aide/aide.db.gz-$DATE"
NEW_DB="/var/lib/aide/aide.db.new.gz"

if [ -e $CUR_DB ]; then
    echo -e "nAIDE check started." > $TMPFILE
    /usr/sbin/aide --check >> $TMPFILE
    echo -e "AIDE check finished.n" >> $TMPFILE
else
    echo "nERROR! Can't find $CUR_DB.n" >> $TMPFILE
    exit 1
fi

/usr/sbin/aide --update >> $TMPFILE

if [ -e $NEW_DB ]; then
    echo -e "Database update complete.n" >> $TMPFILE
else
    echo -e "nERROR! Can't find $NEW_DB.n" >> $TMPFILE
    exit 2
fi

if mv $CUR_DB $BKP_DB; then
    echo -e "Database $CUR_DB saved as $BKP_DB." >> $TMPFILE
else
    echo -e "nERROR! Can't move $CUR_DB.n" >> $TMPFILE
    exit 3
fi

if mv $NEW_DB $CUR_DB; then
    echo -e "Database $NEW_DB installed as $CUR_DB.n" >> $TMPFILE
else
    echo -e "nERROR! Can't install $NEW_DB as $CUR_DB.n" >> $TMPFILE
    exit 4
fi

cd $DB_DIR

# удаляем бекапы старше 7 дней
if [ $(pwd) == $DB_DIR ]; then
    find $DB_DIR -mtime +7 -exec rm -fv {} ; >> $TMPFILE
    echo -e "nOld backups deleted.n" >> $TMPFILE
else
    echo "nWrong dir: $(pwd) is not $DB_DIR! Exit." >> $TMPFILE
    exit 5
fi

mail -s "AIDE check $(date)" root@domain.com < $TMPFILE

rm $TMPFILE

И добавить его в cron:

0 05 * * * /home/setevoy/opt/aide.sh

Возможные ошибки:

# aide --check
Error reading gzipped file: <fd:5>: buffer error
# gzip -t /var/lib/aide/aide.db.gz

gzip: /var/lib/aide/aide.db.gz: unexpected end of file

Удалите текущую базу:

# rm /var/lib/aide/aide.db.gz

Пересоздайте её:

# aide --init

Переместите new:

# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Ссылки по теме

http://aide.sourceforge.net

https://www.digitalocean.com