Go to content Go to menu Go to search

Настройка 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 дней

Элементы данных:

enlarge enlarge

Триггеры:

enlarge enlarge

Готовый шаблон для zabbix: Template-App-AIDE.xml

ENJOY!


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved