Настройка AIDE в CentOs
В отличие от других дистрибутивов в CentOs идет голый AIDE без всяких дополнительных скриптов, по этому его нужно допиливать.
Ссылки:
The AIDE manual
Использование AIDE в Ubuntu
Сразу после установки:
Отредактировать /etc/aide.conf
я обычно сразу отключаю /var/log (поставить ! перед всеми упоминаниями /avr/log в конфиге):
!/var/log LOG !/var/log/sa !/var/log/aide.log !/var/log/audit/ LSPP !/var/log/faillog LSPP !/var/log/lastlog LSPP # Ditto /var/log/sa reason... !/var/log/and-httpd
так же отключить /var/spool/at
:
!/var/spool/at LSPP
Для ускорения работы aide подключить sha1 вместо всех остальных методов хэширования:
#NORMAL = R+rmd160+sha256 NORMAL = R-md5+sha1 #LSPP = R+sha256 LSPP = R-md5+sha1
Если у вас установлен httpd, то в конфиг можно добавить
/var/www/html NORMAL
После предварительной настройки нужно инициализировать базу:
aide -i; mv -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Скрипт для ручного запуска AIDE
После каждого изменения системных файлов нужно переинициализировать базу. Напишем скрипт для автоматизации, он будет писать лог в /root/aide и сохранять архив базы.
Скрипт /root/aide/aide
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/bin/bash # Скрипт для обновления базы AIDE в ручном режиме # Имя каталога для логов logdir=/root/aide # Параметры базы данных такие как в /etc/aide.conf databasedir=/var/lib/aide database=aide.db.gz database_out=aide.db.new.gz # Проверяем не защен ли уже один из экземляров скипта runfile=/var/run/aide_run [ -e $runfile ] && { echo "Lock file /var/run/aide_run exist! AIDE process already running?"; exit 0; } touch $runfile if [ ! -e $databasedir/$database ]; then # Если файла базы для чтения не существует запускаем инциализацию /usr/sbin/aide --init --report=file://$logdir/aide.log > /dev/null else # Запускаем обновление /usr/sbin/aide --update --report=file://$logdir/aide.log >/dev/null 2>&1 # Если лог не пустой то копируем в одельный файл для истории if [ -s $logdir/aide.log ]; then cp $logdir/aide.log $logdir/aide`date +%d.%m.%Y-%H:%M`.log fi fi # У AIDE есть очень полезная функция - сравнивать между собой две базы # поэтому на всякий случай сохраняем историю баз по дате cp $databasedir/$database_out $databasedir/aide.db.`date +%d.%m.%Y-%H:%M`.gz # Переименовываем новую базу в базу для чтения mv $databasedir/$database_out $databasedir/$database rm -f $runfile |
сделаем напоминалку, при входе:
echo ' AIDE installed!!! Run /root/aide/aide after changing files ' >> /etc/motd
Cron скрипт для автоматического запуска aide
Нижеприведенный скрипт запускает aide --update
, сохраняет лог в /var/log/aide.log
Если лог не пустой (найдены изменения) - отсылается уведомление по почте.
/root/bin/aide:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #!/bin/bash # Скрипт для запуска AIDE и отправки отчетов по почте # Имя каталога для логов logdir=/var/log/aide # Почта для отчетов admin_mail=admins@property.com # Параметры базы данных такие как в /etc/aide.conf databasedir=/var/lib/aide database=aide.db.gz database_out=aide.db.new.gz # Проверяем не запущен ли уже один из экземпляров скрипта runfile=/var/run/aide_run [ -e $runfile ] && { echo "Lock file /var/run/aide_run exist! AIDE process already running?"; exit 0; } touch $runfile if [ ! -e $databasedir/$database ]; then # Если файла базы для чтения не существует запускаем инициализацию /usr/sbin/aide --init --report=file://$logdir/aide.log > /dev/null # Отправляем сообщение на почту mail -s "AIDE database initialized on `hostname`" "$admin_mail" < $logdir/aide.log else # Запускаем обновление /usr/sbin/aide --update --report=file://$logdir/aide.log >/dev/null 2>&1 # Если лог не пустой то отправляем его на почту и копируем в отдельный файл для истории if [ -s $logdir/aide.log ]; then cp $logdir/aide.log $logdir/aide`date +%d.%m.%Y-%H:%M`.log mail -s "AIDE working result from `hostname`" "$admin_mail" < $logdir/aide.log > /dev/null fi fi # У AIDE есть очень полезная функция - сравнивать между собой две базы # поэтому на всякий случай сохраняем историю баз по дате cp $databasedir/$database_out $databasedir/aide.db.`date +%d.%m.%Y-%H:%M`.gz # Переименовываем новую базу в базу для чтения mv $databasedir/$database_out $databasedir/$database rm -f $runfile |
Добавляем скрипт в cron. Запускать будем еженедельно:
echo "/root/bin/aide" > /etc/cron.weekly/aide chmod +x /etc/cron.weekly/aide
AIDE создает приличную нагрузку, по этому, если устанавливаем на виртуалки, то нужно размазать запуск по времени. Для этого будем использовать команду at
(установив случайную задержку от 0 до 1140 минут).
echo 'min=0; max=1140; v=$(( min + ($RANDOM*(max-min))>>15 )); at now + $v min < /root/bin/aide' > /etc/cron.weekly/aide chmod +x /etc/cron.weekly/aide
Настраиваем zabbix
Zabbix будет проверять файл /var/log/aide/aide.log.
Настроим два триггера:
1. Если размер файла не равен 0
2. Если файл не изменялся более 8 дней
Элементы данных:
Триггеры:
Готовый шаблон для zabbix: Template-App-AIDE.xml
ENJOY!