AIDE – система контроля за безопасностью системы. » IT FOundation – Поваренная книга системного администратора.
Только нужная и полезная документация. Регистрируйтесь, пишите, комментируйте!
28 мая 2009

AIDE – система контроля за безопасностью системы.

опубликовано в Безопасность |

Программа существует  в FreeBSD, Solaris, во всех дистрибутивах Linux, и прочиx Unix системах.
Принцип работы программы заключается в следующем:  для файловой системы (каталогов или файлов описанных в конфигурационном файле)  создется снимок системы (путем вычисления контрольных сумм), на момент когда вы считаете что система находится в нетронутом состоянии и эти данные сохраняются в эталонный файл. После чего с регулярными интервалами (желательно ежедневно, через расписание Cron) программа запускается снова, и состояние файловой системы сравнивается с исходным снимком, после чего найденные расхождения либо сохраняются а файл, либо отправляются вам по электронной почте.
Для её установки в систему Gentoo достаточно выполнить
# emerge -av aide
Рекомендую использовать флаг zlib для возможности компрессии данных.

После установки программы вы можете отредактировать её конфигурационный файл располагающийся в /etc/aide/aide.conf
В этом конфигурационном файле указаны директории и файлы, которые необходимо контролировать, а также свойства файлов, нуждающихся в контроле.

# AIDE conf
# база данных, для чтения, – желательно скопировать в недоступное место (по умолчанию ./aide.db)
database=file:/var/lib/aide/aide.db
# местоположение вновь создаваемой базы данных (./aide.db.new)
database_out=file:/var/lib/aide/aide.db.new

# если программа собрана с поддержкой zlib, то таким образом включается сжатие данных для экономии места
gzip_dbout=yes

# Далее  для справки описаны все возможные/предустановленные параметры, изменение которых может контролировать AIDE
#

#p:   permissions – изменение прав
#i:   inode – изменение inode
#n:   number of links – изменение количества ссылок
#u:   user – изменился пользователь
#g:   group – группа
#s:   size – размер
#b:   block count – индекс блока
#m:   mtime – время модификации
#a:   atime – время доступа
#c:   ctime – время создания
#S:   check for growing size – проверка на изменение/возрастание размера
# контрольные суммы по соответствующим алгоритмам
#md5:  md5 checksum -
#sha1:  sha1 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum
#haval:     haval checksum
#gost:     gost checksum
#crc32:     crc32 checksum
# предустановки, сгруппированные под определенные задачи
#R:   p+i+n+u+g+s+m+c+md5
#L:   p+i+n+u+g
#E:   Empty group (пустая группа т.е. ничего не контролируется)
#>:   Growing logfile p+u+g+i+n+S (это для постоянно увеличивающихся файлов)
# и самостоятельно созданные пользователем
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
ConfFiles = p+i+n+u+g+s+b+m+c+md5+sha1
Logs = p+i+n+u+g+S
Devices = p+i+n+u+g+s+b+c+md5+sha1
Databases = p+n+u+g
StaticDir = p+i+n+u+g
ManPages = p+i+n+u+g+s+b+m+c+md5+sha1

# в строках ниже задаются каталоги и правила, которые будут контролироваться, хотя для проверки всей системы можно использовать просто / R; отметьте также, что применяются регулярные выражения
# такая конструкция добавляет только каталог /boot без подкаталогов
=/boot$ Binlib
# все, что ниже, будет обойдено рекурсивно
/bin Binlib
/sbin Binlib
/usr/bin Binlib
/usr/sbin Binlib
/usr/local/bin Binlib
/usr/local/sbin Binlib
/usr/games Binlib
/lib Binlib
/usr/lib Binlib
/usr/local/lib Binlib
# ниже, как видите, применяются уже другие правила
/var/log$ StaticDir
/var/log/aide/aide.log(.[0-9])?(.gz)? Databases
/var/log/aide/error.log(.[0-9])?(.gz)? Databases
/var/log/setuid.changes(.[0-9])?(.gz)? Databases
/var/log Logs
# каталоги /dev и /proc будут исключены из списка проверяемых
!/dev
!/proc

Изначально ститема сконфигурированно достаточно правильно, и можно ничего не трогать.
Если вы хотите добавить  другие каталоги – достаточно  указать к ним путь,  и выбрать одну из существующих предустановок.
Рассмотрим к примеру анализ каталога /bin, в конфигурационном файле он описывается строчкой
/bin Binlib
где BinLib  это набор параметров, состоящий из:
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
Т.е. все файлы в директории /bin будут контролироваться по следующим параметрам: права доступа, количество ссылок, номер inode, владец, группа, размер, количество блоков, время последнего изменения, время последнего изменения статуса, а так же по дайджестам md5 и sha1.
Для того чтобы сооьщить програме каталоги или файлы которые необходимо исключить из проверки, необходимо добавить  префикс ! к началу. Например, правило !/.*/TMP исключит все директории TMP, независимо от их расположения в файловой системе. Необходимо учесть что в данном случае .* это регулярное выражение, а не маска имени файла.

Теперь необходимо запустить программу чтобы она создала первоначальный “эталонный” снимок системы. Для этого запускаем программу aide с параметром –i:
# aide -i

В результате программа создаст файл /var/lib/aide/aide.db.new. В этом файле  содержится информация о каждом  файле, в  которой записаны сведения об имени файла, правах доступа, принадлежности к пользователю и группе, размере, времени последнего изменения, времени последнего изменения статуса, номере inode, числе связей, а также один или больше дайджестов (криптографических хэшей) его содержания. По этим дайджестам программа Aide отслеживаеи  изменения в содержимом файлов. Далее снимок нужно переименовать в aide.db, поскольку с этим  файлом Aide будет сравнивать вновь созданные снимки:
# mv /var/lib/aide.db.new /var/lib/aide.db

Предположим что злоумышленник каким то образом умудрился подменить программу сp.  Мы можем просто сделать touch /bin/cp – в результате изменится время создания файла.

Теперь запустим программу в проверочном режиме:
# aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2009-06-05 14:27:24

Summary:
Total number of files: 36407
Added files: 0
Removed files: 0

Changed files: 2
—————————————————
Changed files:
—————————————————

changed: /bin
changed: /bin/cp

————————————————–
Detailed information about changes:

—————————————————
Directory: /bin
Mtime : 2009-06-04 10:35:46 , 2009-06-05 14:16:09
Ctime : 2009-06-04 10:35:46 , 2009-06-05 14:16:09

File: /bin/cp
Mtime : 2009-05-26 15:04:55 , 2009-06-05 14:16:30
Ctime : 2009-05-26 15:04:59 , 2009-06-05 14:16:30

В результате мы увидели что в системе  с последнего раза произошло изменение утилиты cp, а также в какое время, так что если в это время вы не производили обновление системы, стоит задуматься, почему изменился файл.
Ежедневно в файловой системе происходят изменение , но все изменения происходят как правилр в домашней директории пользователей, а  системные утилиты вроде cp никогда  не должны изменяться (только если при обновлении всей системы).  Если же вы проводите крупное изменение в система – рекомендуем  обновить после это и базу aide, чтобы она не смущала вас лишними  предупреждениями.
# aide -u

Вывести названия из-под проверки можно, добавив префикс !. Например, правило !/.*/BACKUP исключит все директории BACKUP, независимо от расположения в файловой системе. Особо отмечу, что .* в этом примере – регулярное выражение, а не маска имени файла.
Работа удобно производить по ежедневному заданию крона, для этого нужно распаковать  файл /usr/share/doc/aide-0.13.1-r3/aide.cron.bz2  в /etc/cron.daily/ и сделать его запускаемым.
В этом фале нас интересует переменная MAILTO=  в которой ва можете указать почтовый адрес на который будут присылаться  отчеты.

На последок хотелось бы заметить, что если злоумышленник получит полный доступ к системе, он без  проблем сможет обновить после себя снимок системы, так что вы не увидите никаких изменений, так что можно порекомендовать держать базу на носителе доступном только для чтения (к примеру сd-r болванка).



Написать комментарий


2 − два =