AIDE (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)" [email protected] < $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