Контроль целостности Системы
Контроль целостности с помощью AIDE
Общие принципы работы AIDE
AIDE – программа контроля целостности Системы – используется для защиты от вредоносных программ, вирусов и обнаружения несанкционированных действий. AIDE создает базу данных с информацией о файлах и каталогах (контрольная сумма, время изменения) и периодически сравнивает их текущее состояние с этой базой.
Это позволяет выявить нарушения целостности Системы и принять меры для восстановления измененных файлов из резервной копии или с образа восстановления Системы. AIDE помогает сократить время расследования инцидентов, сосредоточившись на файлах, которые были изменены.
Дополнительные возможности AIDE:
- поддержка различных атрибутов файлов, в том числе: тип файла, inode, uid, gid, разрешения, количество ссылок, mtime, ctime и atime;
- поддержка сжатия Gzip, SELinux, XAttrs, Posix ACL и атрибутов файловой системы;
- поддержка различных алгоритмов, включая md5, sha1, sha256, sha512, rmd160, crc32 и т. д.;
- отправка уведомлений по электронной почте.
Установка и создание базы данных
Пользователю необходимо установить пакеты AIDE из репозиториев в Систему с помощью команды:
sudo dnf install aide
Далее необходимо создать базу данных AIDE, которая будет хранить контрольные суммы, права доступа и другие атрибуты файлов и директорий. Сравнивая текущие данные с ранее созданной базой, администратор может легко обнаружить любые отклонения, что позволяет оперативно реагировать на подозрительные изменения.
База данных в AIDE создается с помощью команды:
sudo aideinit
В ходе создания БД будет запрошен пароль от GPG-ключа, которым будет подписываться база AIDE для контроля ее целостности. Затем будет выполнено первичное заполнение базы /var/lib/aide/aide.db, т.е. зафиксировано заведомо корректное состояние Системы. Проверка целостности ОС и обновление базы данных.
Также необходимо своевременно проводить обновление базы данных AIDE после внесения легитимных изменений в Систему (например, при установке обновлений), чтобы актуализировать её состояние. Для этого выполните команду:
sudo aide --update
Затем замените старую базу на новую:
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Настройка конфигурационного файла
Для проведения более корректных проверок AIDE необходимо правильно настроить его конфигурационный файл, который находится по пути /etc/aide.conf. Этот файл определяет, какие файлы и каталоги будут проверяться, какие атрибуты файлов отслеживаются, а также исключения из проверки. Вот основные шаги по настройке конфигурации AIDE:
Чтобы изменить настройки AIDE, нужно открыть конфигурационный файл в текстовом редакторе:
sudo nano /etc/aide.conf
Далее задать необходимые атрибуты для проверки в тексте файла.
Для проверки всех атрибутов файла можно использовать следующую запись:
/etc p+i+n+u+g+s+m+c+md5
Для мониторинга только изменения прав доступа и содержания файлов:
/var/log p+c+md5
Проверка только атрибутов и прав доступа:
NORMAL = p+i+n+u+g+s+m+S+sha256
Проверка всех атрибутов, включая контрольные суммы:
EXTENDED = p+i+n+u+g+s+m+S+sha256+md5+rmd160
где параметры:
p– права доступа;i– inode номер;n– количество ссылок;u– идентификатор пользователя (UID);g– идентификатор группы (GID);s– размер файла;m– время последней модификации;S– время последнего изменения статуса файла;sha256,md5– контрольные суммы файлов.
В отдельном разделе конфигурации также указываются файлы и каталоги, которые будут отслеживаться на предмет изменений. Пример конфигурации:
Проверка корневой файловой системы с полными атрибутами, определёнными в строчке NORMAL:
/ NORMAL
Проверка каталога /etc с расширенными атрибутами, определенными в строчке EXTENDED:
/etc EXTENDED
Чтобы избежать проверки определённых системных файлов или временных данных, вы можете добавлять исключения с помощью символа "!" перед каталогом или файлом.
!/tmp
!/var/tmp
После внесения всех необходимых изменений, нужно сохранить файл и закрыть редактор. После настройки конфигурации можно протестировать её работу, запустив создание новой базы данных AIDE:
sudo aideinit
После этого AIDE создаст базу данных, которую можно будет использовать для последующих проверок. Пример содержимого конфигурационного файла AIDE:
database=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new
NORMAL = p+i+n+u+g+s+m+S+sha256
/etc EXTENDED
/bin NORMAL
/sbin NORMAL
!/proc
!/sys
!/var/tmp
!/var/cache
Этот пример включает основные правила для мониторинга критически важных директорий Системы и исключает временные и кешированные файлы.
Проверка целостности
После создания базы данных и настройки конфигурации можно запустить проверку целостности Системы. Это делается командой:
aide --check
Команда сравнит текущее состояние файлов с данными, сохраненными в базе. Результаты проверки будут выведены в терминал, где можно увидеть, какие файлы были изменены, добавлены или удалены.
Для запуска проверки немедленно можно воспользоваться командой:
sudo systemctl restart aidecheck.service
Результаты проверок также записываются в системный журнал, который можно открыть и просмотреть по команде:
sudo journalctl -u aidecheck.service
При необходимости фиксации корректных изменений конфигурации ОС нужно использовать следующую команду, при этом будет запрошен пароль доступа к ключу GPG:
sudo aideupdate
Чтобы посмотреть статус последней проверки, нужно выполнить команду:
systemctl status aidecheck.service
Автоматизация проверки
Для удобства администрирования Системы проверку целостности ОС можно автоматизировать с помощью использования таймера systemd. Подробная настройка файлов с расширением .timer рассмотрена в разделе 0.
Для настройки таймера через systemd выполняются следующие шаги для настройки задания:
- Создание Unit-файла для автоматизации проверки AIDE, где будет указано, как именно systemd должен запускать проверку. Необходимо создать файл /etc/systemd/system/aide-check.service со следующим содержанием:
[Unit]
Description=AIDE integrity check
Documentation=man:aide(1)
[Service]
Type=oneshot
ExecStart=/usr/sbin/aide --check
- Далее создать таймер-файл, который будет запускать проверку по расписанию. Например, проверка может выполняться ежедневно. Создайте файл /etc/systemd/system/aide-check.timer со следующим содержанием:
[Unit]
Description=Daily AIDE integrity check
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
Таймер можно настроить на любое другое расписание, например, использовать параметр OnCalendar=weekly для еженедельной проверки.
- Далее необходимо активировать таймер-файл командой:
Команда
sudo systemctl enable aide-check.timer sudo systemctl start aide-check.timerenableдобавляет таймер в автозапуск, а команда start запускает таймер сразу после выполнения команды. - Для того, чтобы провести проверку статуса таймера и убедиться, что он работает корректно, используется команда:
sudo systemctl status aide-check.timer
Контроль целостности на основе Afick
Назначение и общие сведения
Afick (Another File Integrity ChecKer) является инструментом проверки целостности, который создаёт базу эталонных значений и сравнивает её с текущим состоянием файловой системы.
В отличие от AIDE, Afick работает быстрее на больших файловых деревьях, использует внутреннюю оптимизацию поиска изменений и обеспечивает более гибкое управление конфигурацией. Принцип работы основан на трёх этапах:
- создание базы контрольных значений;
- сравнение текущего состояния файлов с эталонной базой;
- формирование отчёта с указанием новых, изменённых и удалённых объектов.
Afick применяется для обнаружения подозрительных модификаций, возникающих в результате ошибок конфигурации, действий пользователей или возможной компрометации Системы. Инструмент рекомендуется использовать как дополнение к другим механизмам безопасности ОС.
Начало работы
Установка выполняется администратором из репозитория ОС:
dnf install afick
После установки в систему добавляются служебные файлы, утилита проверки и конфигурационный файл /etc/afick.conf.
Файлы Afick размещаются в следующих каталогах:
- основной конфигурационный файл:
/etc/afick.conf - каталоги служебных данных:
/var/lib/afick/ - файлы журналов Afick (если включено логирование):
/var/log/afick/
Для выполнения операций Afick требуются административные права. Все операции создания или обновления базы выполняются только от имени суперпользователя, так как инструмент должен иметь доступ ко всем контролируемым файлам.
Конфигурационный файл /etc/afick.conf определяет, какие каталоги и файлы подлежат проверке, какие параметры целостности анализируются, а также где хранится база контрольных значений. Файл содержит следующие основные типы директив:
- Общие параметры, которые задают расположение рабочих файлов Afick:
database=/var/lib/afick/afick.db logfile=/var/log/afick/afick.log - Списки контролируемых файлов и каталогов:
По умолчанию включаются основные системные каталоги.
include=/etc include=/usr/bin include=/usr/sbin - Исключения из проверок:
exclude=/var/log exclude=/run exclude=/tmp exclude=/proc
Рекомендуется исключать каталоги, которые меняются регулярно и не имеют отношения к контролю целостности.
- Определение конкретных атрибутов для проверки:
- размер файла (size);
- контрольные суммы (sha1, md5 — в зависимости от выбранного алгоритма);
- права доступа (mode);
- владелец и группа (uid, gid);
- временные метки изменения файла (mtime); Пример использования всех параметров вместе:
check=sha1,size,mtime,uid,gid,mode - Настройка уровней отчётности. Директива имеет вид:
Поддерживаются следующие уровни отчётности:
report=<уровень>short— краткий отчёт; выводится только сводная информация без перечисления конкретных файлов. Используется для минимального контроля в автоматизированных сценариях;changes— отчёт только о фактически изменённых объектах; отображаются новые, изменённые и удалённые файлы. Рекомендуемый режим для регулярных проверок;all— полный отчёт по всем проверяемым объектам; выводится состояние каждого файла независимо от того, произошло изменение или нет. Применяется для первичного аудита либо детального анализа;debug— расширенный отчёт в диагностическом режиме; включает служебную информацию, подробные сообщения о ходе проверки и обработки файлов. Используется для отладки конфигурации.
Создание базы целостности и выполнение проверки
После настройки файла /etc/afick.conf требуется создать эталонную базу контрольных значений. Инициализация базы выполняется командой:
afick --init
В ходе операции Afick анализирует указанные каталоги, вычисляет контрольные суммы, фиксирует атрибуты файлов и сохраняет эталонное состояние в базе данных, расположенной по пути, определённому в конфигурации (по умолчанию /var/lib/afick/afick.db).
Инициализация выполняется один раз — перед началом эксплуатации Системы или после масштабных обновлений.
База Afick содержит следующие сведения о каждом проверяемом файле:
- контрольные суммы;
- права доступа;
- владельца и группу;
- размеры;
- временные метки.
При выполнении последующих проверок Afick сравнивает фактическое состояние системы с данными из базы и фиксирует:
- новые файлы;
- удалённые файлы;
- изменённые файлы;
- изменения атрибутов.
После законного изменения конфигурации (обновление пакетов, изменение системных файлов) база должна быть обновлена с помощью команды:
afick --update
В противном случае Afick будет продолжать считать данные изменения нарушением целостности. Рекомендуется выполнять обновление базы только после проверки, что изменения являются корректными и одобрены администратором.
Полная проверка целостности выполняется командой:
afick --check
По результатам формируется отчёт, в котором изменения классифицируются как:
added— файл добавлен;removed— файл удалён;changed— изменено содержимое;attrs— изменены атрибуты (права, владелец, размер);mtime— изменена временная метка.
Файл отчёта создаётся в соответствии с настройками конфигурации (обычно /var/log/afick/afick.log).
Для обеспечения регулярного контроля целостности рекомендуется автоматизировать выполнение команды проверки с помощью планировщика systemd timers, который заменяет классический cron.
Эталонная база (afick.db) и файл конфигурации должны храниться на носителе с ограниченным доступом. После завершения настройки их можно защитить от модификации, установив неизменяемый атрибут:
chattr +i /etc/afick.conf
chattr +i /var/lib/afick/afick.db
При использовании Afick на серверах с регулярными изменениями следует корректно поддерживать список исключений, чтобы исключить регулярные изменения служебных каталогов из проверки.