AIDE – контроль целостности системных файлов
AIDE — это система обнаружения атак, основанная на узле (Host-Based Intrusion Detection System, HIDS).
HIDS используется для обнаружения изменений в важных системных файлах настроек и двоичных файлах с помощью сверки уникальных криптографических контрольных сумм, созданных каждого из файлов и сохранённых в надёжном месте.
Принцип действия таков: заранее сохранённый и достоверный хеш сравнивается с сгенерированным с текущей копии каждого файла, чтобы определить какой из файлов был изменен.
HIDS является великолепным решением для регистрации подозрительных изменений в системе.
Установка
Установка
emerge app-forensics/aide -av
app-forensics/aide-0.14.2
Права на логи
chmod 750 /var/lib/aide/ chmod 750 /var/log/aide/
Настройки
Конфигурационный файл
/etc/aide/aide.conf
# База данных (текущая) database=file:/var/lib/aide/aide.db # База данных создаваемая при новой проверке database_out=file:/var/lib/aide/aide.db.new #+ База данных используемая для команды --compare database_new=file:/var/lib/aide/aide.db.new # Использовать сжатие (zlib) gzip_dbout=yes ...
Скрип запуска по крону: /etc/cron.daily/aide.cron
Критерии проверки
Задаются списки критериев и определяются файлы к которым они применимы, например:
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1 # Сканировать весь каталог /bin /bin Binlib # '=' Сканировать каталог НЕ рекурсивно (сам каталог) # '=/boot$' это жесткое сочетание, по сути двух эквивалентов =/boot и /boot$ =/boot$ Binlib # '!' НЕ сканировать файл или каталог !/var/log/nginx
#Так же поддерживаются регулярные выражения #'$' '*' '(.[0-9])?(.gz)?' и т.п.
Ключ | Описание |
---|---|
p | права доступа |
i | inodes |
n | количество ссылок |
u | владелец |
g | группа |
s | размер |
S | проверка увеличение размера |
b | число блоков |
m | mtime - время последней модификации |
a | atime - время последнего доступа |
c | ctime - время изменения дескриптора файла (например изменение прав и т.п.) |
md5 | контрольная сумма MD5 |
sha1 | контрольная сумма SHA1 |
rmd160 | контрольная сумма RMD160 |
tiger | контрольная сумма Tiger |
R | p+i+n+u+g+s+m+c+md5 |
L | p+i+n+u+g |
E | Empty - пусто |
> | растущий лог-файл p+u+g+i+n+S |
Если aide собран с флагом mhash, то доступны
haval | контрольная сумма Haval |
gost | контрольная сумма Gost |
crc32 | контрольная сумма CRC32 |
Использование
Инициализация базы (создается /aide.db.new):
aide -i
Обновление БД (необходимо ручное обновление БД):
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Создадим команду aide-update для удобства
nano /usr/bin/aide-update
aide-update
#!/bin/bash UID_ROOT=0 if [ "$UID" -ne "$UID_ROOT" ]; then echo "Requires root privileges" exit 1 fi mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db exit 0
chmod 755 /usr/bin/aide-update
Проверка системы, сравнении aide.db и текущего состояния системы (без обновления aide.db.new)
aide -C
Проверка системы, сравнении aide.db и текущего состояния системы (с обновлением aide.db.new)
aide -u
Сравнение БД (без сканирование файлов)
aide --compare
Чтобы работало сравнение БД в конфиге нужно определитель БД для сравнения:
database_new=file:/var/lib/aide/aide.db.new
Пример
/etc/aide/aide.conf
... ########## my rules ########## LogsMy = p+u+g ########## logs files ########## =/var/log$ StaticDir /var/log LogsMy # не учитывать архивы вида log.0.gz !/var/log/(.*)(\.gz)?$ !/var/log/(.*)(\.bz2)?$ ########## etc files ########## /etc/ ConfFiles !/etc/mtab !/etc/udev/rules.d !/etc/adjtime !/etc/cron.d/vz ########## ssh files ########## /root/.ssh ConfFiles !/root/.ssh/known_hosts /home/user/.ssh ConfFiles !/home/user/.ssh/known_hosts
Обсуждение