Применимо к редакции: АРМ, Сервер

Контроль целостности

Введение

Средства контроля целостности предоставляют возможности контроля целостности обрабатываемых данных и используемого программного обеспечения.

Контроль целостности установленных RPM-пакетов

В процессе установки RPM-пакетов пакетный менеджер сохраняет в свою внутреннюю базу данных различную информацию о файлах и каталогах, которые входят в состав пакета: права доступа, сведения о владельце, размер, контрольную сумму и т.д.

Используя эти данные, команда rpm --verify позволяет проверить целостность установленных RPM-пакетов. Для вызова команды используется следующий синтаксис:

rpm {--verify|-V} <пакет | параметры_выборки> [параметры_проверки]

Где:

  • опция --verify или её краткая форма -V переводит пакетный менеджер rpm в режим проверки целостности;

  • пакет — название RPM-пакета, также можно использовать подробный формат название[-версия[-релиз]][.архитектура] (примеры: bash-5.1.8, bash-5.1.8-9.el9, bash-5.1.8-9.el9.x86_64).

    В качестве альтернативы указанию имени пакета можно использовать большинство опций rpm, предназначенных для поиска/фильтрации пакетов. Полный список поддерживаемых опций доступен в соответствующей документации (man 8 rpm), а в данном руководстве рассмотрим две опции, которые представляют наибольший интерес в контексте верификации пакетов.

    • -a, --all [условие] — выполнить проверку всех установленных RPM-пакетов, либо всех пакетов, соответствующих условию, если оно определено. Условие определяется в формате тег=шаблон, например можно использовать команду rpm -V -a name=krb5* для проверки всех пакетов, имя которых начинается с krb5. Существует возможность задать несколько условий, используя несколько аргументов -a — в таком случае будут обработаны только те пакеты, которые соответствуют всем заданным критериям.

    • -f, --file <файл> — выполнить проверку пакета, которому принадлежит указанный файл.

  • по умолчанию команда rpm --verify выполняет все проверки пакета, но с помощью следующих параметров проверки можно отключить те или иные тесты:

    • --nodeps — не выполнять проверку зависимостей пакетов;

    • --nodigest — не выполнять проверку контрольных сумм пакета и/или его заголовков;

    • --nofiles — отключить проверку атрибутов файлов;

    • --noscripts — не выполнять секцию %verifyscript RPM-пакета если она определена;

    • --nosignature — не проверять подписи пакета и его заголовков;

    • --nolinkto — не проверять атрибуты ссылок;

    • --nofiledigest — не проверять контрольные суммы файлов пакета;

    • --nosize — не проверять размер файла;

    • --nouser — не выполнять проверку на изменение пользователя владельца файла;

    • --nogroup — не выполнять проверку на изменение группы владельца файла;

    • --nomtime — не проверять время последнего изменения файла;

    • --nomode — не проверять права доступа к файлу;

    • --nordev — не проверять атрибут rdev (тип устройства) для файлов устройств;

    • --nocaps — не проверять разрешения (capabilities) файла.

По умолчанию команда rpm --verify выводит на консоль построчный список файлов, для которых как минимум одна из проверок завершилась неудачно. Используется следующий формат вывода:

.........   [тип] путь_к_файлу

Строка начинается с девяти ячеек, каждая из которых отображает статус определённой проверки. Ячейка может принимать значение одного из следующих типов:

  • . — означает, что проверка пройдена успешно;

  • ? — означает, что проверку не удалось выполнить по каким-то причинам (например, отсутствуют права на чтение файла);

  • один из указанных ниже символов, в таком случае это означает, что соответствующая проверка завершилась неудачей:

    • S — размер файла отличается;

    • M — права доступа или тип файла отличаются;

    • 5 — контрольная сумма файла не соответствует эталонной;

    • D — старший (major) или младший (minor) номер устройства отличается;

    • L — путь, на который ссылается ссылка, не соответствует ожидаемому;

    • U — отличается пользователь — владелец файла;

    • G — отличается группа — владелец файла;

    • T — отличается время последнего изменения файла;

    • P — разрешения (capabilities) файла не соответствуют ожидаемым.

В случае если проверяемый файл является специальным с точки зрения пакетного менеджера RPM, после девяти ячеек со статусом будет указан тип файла.

  • c — конфигурационный файл (перечислен в блоке %config spec-файла RPM-пакета);

  • d — файл с документацией (перечислен в блоке %doc spec-файла);

  • g — так называемый «призрачный» файл (перечислен в блоке %ghost spec-файла), это означает что содержимое файла не является частью данного пакета;

  • l — файл с лицензионным соглашением (перечислен в блоке %license spec-файла);

  • r — файл README (перечислен в блоке %readme spec-файла).

Для обычных файлов или каталогов тип не указывается.

В конце строки вывода находится путь к файлу, который не прошёл проверку.

Если все пакеты и включённые в них файлы прошли проверку, команда rpm --verify вернёт код возврата 0, в противном случае код возврата будет ненулевым.

Далее, рассмотрим несколько реальных примеров работы с утилитой.

  • Успешная проверка пакета bash:

    $ sudo rpm -V bash
    
    $ echo $?
    0
    

    Изменений не обнаружено, код возврата — 0.

  • Проверка всех пакетов, имена которых начинаются с krb5, обнаруживает изменения в файле /etc/krb5.conf:

    $ sudo rpm -V -a krb5*
    S.5......  c /etc/krb5.conf
    S.5......  c /etc/krb5.conf
    
    $ echo $?
    1
    

    Статус S в первой ячейке означает, что фактический размер файла отличается от ожидаемого, а статус 5 в третьей ячейке — что контрольная сумма файла отличается от эталонной. Данный файл является конфигурационным (статус c перед именем файла) и обнаруженное несоответствие считается нормальным, если вы изменяли файл в процессе настройки системы. Поскольку один из файлов был изменён, код возврата ненулевой. Проверка выполняется последовательно для каждого отдельного пакета, подходящего под условие. В этом примере файл /etc/krb5.conf принадлежит как 32-битному, так и 64-битному варианту пакета krb5-libs и, соответственно, информация об этом файле выводится два раза:

    $ rpm -qf /etc/krb5.conf
    krb5-libs-1.21.1-4.el9_5.x86_64
    krb5-libs-1.21.1-4.el9_5.i686
    

Программа для контроля целостности AIDE

aide (Advanced Intrusion Detection Environment) — это программа для проверки целостности файлов.

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

Утилита aide обладает следующими возможностями:

  • поддерживает хранение в БД и отслеживание изменения различных атрибутов файлов: тип файла, права доступа, номер индексного дескриптора (inode), владельца и группу файла, размер, время последнего изменения файла (mtime), время последнего изменения его метаданных/содержимого (ctime), время последнего доступа к файлу (atime), количество ссылок на файл и т.п.

  • создаёт и проверяет контрольные суммы с использованием различных хеш-функций: SHA256, SHA512, SHA1, MD5 и т.д.

  • отслеживает изменение расширенных атрибутов файлов: Posix ACL, SELinux, xattr, e2fsattrs.

  • автоматический запуск через systemd таймеры или cron с отправкой уведомлений по электронной почте.

Установка и первичная настройка aide

Для установки aide выполните следующую команду:

$ sudo dnf install -y aide

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

Для инициализации базы данных выполните следующую команду:

$ sudo aide --init
Start timestamp: 2025-01-16 12:54:34 +0300 (AIDE 0.16)
AIDE initialized database at /var/lib/aide/aide.db.new.gz

Number of entries:      204419

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.new.gz
  MD5      : bJRt0P9rQ3lR7Wq4SZJlsw==
  SHA1     : /nM1abzKvpoUSt22HiuKAsx7zE4=
  RMD160   : Fw7M3O5xq55CKfXXuJgeQ9bn8aE=
  TIGER    : cJJxmyGjwuecrEIUNhJgsrRApqQmHNv6
  SHA256   : iUpCg8pVKy6a34FdCNurMUL04BtV65sD
             8k9pgX1mSr0=
  SHA512   : /+DHSwBp2kcMHvO5HXk3FQvLbvZUO1xj
             6+YDcT4kXyUcAekf46zoEKdDVd89AX8S
             H3Xh7CRxF2uQ4wFTrFv8Gg==


End timestamp: 2025-01-16 12:55:16 +0300 (run time: 0m 42s)

При запуске с ключом --init утилита aide создаёт новую базу данных в файле /var/lib/aide/aide.db.new.gz, заданном директивой database_out в конфигурационном файле. Но для проверки целостности системы используется база из файла /var/lib/aide/aide.db.gz, путь к которому задан директивой database. Соответственно, для использования созданной базы данных необходимо переименовать файл:

$ sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Проверка целостности системы с помощью aide

Команда aide --check выполняет проверку целостности системы и генерирует соответствующий отчёт:

$ aide --check
Start timestamp: 2025-01-17 00:16:58 +0300 (AIDE 0.16)
AIDE found differences between database and filesystem!!

Summary:
  Total number of entries:      204420
  Added entries:                1
  Removed entries:              0
  Changed entries:              2

---------------------------------------------------
Added entries:
---------------------------------------------------

d++++++++++++++++: /root/.config/procps

---------------------------------------------------
Changed entries:
---------------------------------------------------

f   ...    .C... : /etc/cups/subscriptions.conf
f   ...    .C... : /etc/cups/subscriptions.conf.O

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

File: /etc/cups/subscriptions.conf
  SHA512   : iY//ZXGfIOCw5w+dsglTJ5uanAu6ycGo | gw0CO7RN6yjIbRHvTVjthdZyfI/igk7K
             SU5HoonBNSbGDb2sNVZLX/olLvPHyPDo | ZGoICuAK4CEZHcoTQTMPo0RSNRUqWXz0
             qGGLZHHx35ce7yFxVxmjdQ==         | el6dW9hvpSltkjJxywX3RQ==

File: /etc/cups/subscriptions.conf.O
  SHA512   : HwYU5Ddhxs+MTd+7h67ToWOc1njts3eu | MZOiOFpYIbRYnZECCA+Dq9UZCoBlTO/n
             Lro+IZrhTR+yVA0W85Ji0cKP/77ZdqFS | 0ELsf8rnHmL/pp6uz2GgJHURnrHclo0h
             7FRt4bCEB1L1T8SNe8Nonw==         | l4JpCwIjfXhWANs3mkkzzg==


---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.gz
  MD5      : bJRt0P9rQ3lR7Wq4SZJlsw==
  SHA1     : /nM1abzKvpoUSt22HiuKAsx7zE4=
  RMD160   : Fw7M3O5xq55CKfXXuJgeQ9bn8aE=
  TIGER    : cJJxmyGjwuecrEIUNhJgsrRApqQmHNv6
  SHA256   : iUpCg8pVKy6a34FdCNurMUL04BtV65sD
             8k9pgX1mSr0=
  SHA512   : /+DHSwBp2kcMHvO5HXk3FQvLbvZUO1xj
             6+YDcT4kXyUcAekf46zoEKdDVd89AX8S
             H3Xh7CRxF2uQ4wFTrFv8Gg==


End timestamp: 2025-01-17 00:17:18 +0300 (run time: 0m 20s)

В данном примере, в системе были обнаружены следующие изменения относительно эталонного состояния из базы данных:

  • был создан каталог /root/.config/procps;

  • был изменён файл /etc/cups/subscriptions.conf;

  • был изменён файл /etc/cups/subscriptions.conf.O.

Обновление базы данных aide

Для обновления базы данных aide после внесения изменений в систему используйте команду aide --update:

$ sudo aide --update
Start timestamp: 2025-01-17 00:27:30 +0300 (AIDE 0.16)
AIDE found differences between database and filesystem!!
New AIDE database written to /var/lib/aide/aide.db.new.gz

Summary:
  Total number of entries:      204420
  Added entries:                1
  Removed entries:              0
  Changed entries:              2

---------------------------------------------------
Added entries:
---------------------------------------------------

d++++++++++++++++: /root/.config/procps

---------------------------------------------------
Changed entries:
---------------------------------------------------

f   ...    .C... : /etc/cups/subscriptions.conf
f   ...    .C... : /etc/cups/subscriptions.conf.O

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

File: /etc/cups/subscriptions.conf
  SHA512   : iY//ZXGfIOCw5w+dsglTJ5uanAu6ycGo | gw0CO7RN6yjIbRHvTVjthdZyfI/igk7K
             SU5HoonBNSbGDb2sNVZLX/olLvPHyPDo | ZGoICuAK4CEZHcoTQTMPo0RSNRUqWXz0
             qGGLZHHx35ce7yFxVxmjdQ==         | el6dW9hvpSltkjJxywX3RQ==

File: /etc/cups/subscriptions.conf.O
  SHA512   : HwYU5Ddhxs+MTd+7h67ToWOc1njts3eu | MZOiOFpYIbRYnZECCA+Dq9UZCoBlTO/n
             Lro+IZrhTR+yVA0W85Ji0cKP/77ZdqFS | 0ELsf8rnHmL/pp6uz2GgJHURnrHclo0h
             7FRt4bCEB1L1T8SNe8Nonw==         | l4JpCwIjfXhWANs3mkkzzg==


---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.gz
  MD5      : bJRt0P9rQ3lR7Wq4SZJlsw==
  SHA1     : /nM1abzKvpoUSt22HiuKAsx7zE4=
  RMD160   : Fw7M3O5xq55CKfXXuJgeQ9bn8aE=
  TIGER    : cJJxmyGjwuecrEIUNhJgsrRApqQmHNv6
  SHA256   : iUpCg8pVKy6a34FdCNurMUL04BtV65sD
             8k9pgX1mSr0=
  SHA512   : /+DHSwBp2kcMHvO5HXk3FQvLbvZUO1xj
             6+YDcT4kXyUcAekf46zoEKdDVd89AX8S
             H3Xh7CRxF2uQ4wFTrFv8Gg==

/var/lib/aide/aide.db.new.gz
  MD5      : 9XQcGyeUGCo4jQFqKNWCSw==
  SHA1     : JT98QJxegb+XsjzCHB5sbaFpsoQ=
  RMD160   : t8pAZIn/4MsB+YiYi7wr1uie4iY=
  TIGER    : oddP+JHtsDFFr+9GeCymlZ7meJV0K5uI
  SHA256   : SB9BYNaOzq8f5QYMbkNzTZ78yMWyp0lF
             UUbNH8Q04Ig=
  SHA512   : WeutFJZKQQydQkBSGvsuyC/ASE54vOcP
             NnrJlj7PjjMXINFpQvIhgQvE+LwtDFjq
             Kj9/MeYhjHQchYHNwhmotw==


End timestamp: 2025-01-17 00:27:53 +0300 (run time: 0m 23s)

Как и в случае с aide --init, данная команда создаст новый файл базы данных /var/lib/aide/aide.db.new.gz, а также сгенерирует отчёт об изменениях в системе относительно предыдущего состояния базы данных.

Поскольку на данном этапе у вас есть и новое, и старое состояние базы данных, вы всё ещё можете запустить aide --check для старой базы данных и провести сравнительный анализ отчётов в случае возникновения такой необходимости.

Также утилита aide поддерживает сравнение новой версии базы данных со старой — за это отвечает аргумент командной строки --compare. Для этого вам необходимо либо добавить в конфигурационный файл /etc/aide.conf директиву database_new, указывающую на путь к файлу с новой базой данных:

database_new=file:@@{DBDIR}/aide.db.new.gz

Либо вы можете определить значение директивы с помощью аргументов командной строки --before или --after при вызове aide --compare:

$ aide --compare --after='database_new=file:@@{DBDIR}/aide.db.new.gz'
Start timestamp: 2025-01-17 11:19:47 +0300 (AIDE 0.16)
AIDE found differences between the two databases!!

Summary:
  Total number of entries:      204420
  Added entries:                1
  Removed entries:              0
  Changed entries:              2

---------------------------------------------------
Added entries:
---------------------------------------------------

d++++++++++++++++: /root/.config/procps

---------------------------------------------------
Changed entries:
---------------------------------------------------

f   ...    .C... : /etc/cups/subscriptions.conf
f   ...    .C... : /etc/cups/subscriptions.conf.O

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

File: /etc/cups/subscriptions.conf
  SHA512   : iY//ZXGfIOCw5w+dsglTJ5uanAu6ycGo | gw0CO7RN6yjIbRHvTVjthdZyfI/igk7K
             SU5HoonBNSbGDb2sNVZLX/olLvPHyPDo | ZGoICuAK4CEZHcoTQTMPo0RSNRUqWXz0
             qGGLZHHx35ce7yFxVxmjdQ==         | el6dW9hvpSltkjJxywX3RQ==

File: /etc/cups/subscriptions.conf.O
  SHA512   : HwYU5Ddhxs+MTd+7h67ToWOc1njts3eu | MZOiOFpYIbRYnZECCA+Dq9UZCoBlTO/n
             Lro+IZrhTR+yVA0W85Ji0cKP/77ZdqFS | 0ELsf8rnHmL/pp6uz2GgJHURnrHclo0h
             7FRt4bCEB1L1T8SNe8Nonw==         | l4JpCwIjfXhWANs3mkkzzg==


---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.gz
  MD5      : bJRt0P9rQ3lR7Wq4SZJlsw==
  SHA1     : /nM1abzKvpoUSt22HiuKAsx7zE4=
  RMD160   : Fw7M3O5xq55CKfXXuJgeQ9bn8aE=
  TIGER    : cJJxmyGjwuecrEIUNhJgsrRApqQmHNv6
  SHA256   : iUpCg8pVKy6a34FdCNurMUL04BtV65sD
             8k9pgX1mSr0=
  SHA512   : /+DHSwBp2kcMHvO5HXk3FQvLbvZUO1xj
             6+YDcT4kXyUcAekf46zoEKdDVd89AX8S
             H3Xh7CRxF2uQ4wFTrFv8Gg==

/var/lib/aide/aide.db.new.gz
  MD5      : 9XQcGyeUGCo4jQFqKNWCSw==
  SHA1     : JT98QJxegb+XsjzCHB5sbaFpsoQ=
  RMD160   : t8pAZIn/4MsB+YiYi7wr1uie4iY=
  TIGER    : oddP+JHtsDFFr+9GeCymlZ7meJV0K5uI
  SHA256   : SB9BYNaOzq8f5QYMbkNzTZ78yMWyp0lF
             UUbNH8Q04Ig=
  SHA512   : WeutFJZKQQydQkBSGvsuyC/ASE54vOcP
             NnrJlj7PjjMXINFpQvIhgQvE+LwtDFjq
             Kj9/MeYhjHQchYHNwhmotw==


End timestamp: 2025-01-17 11:19:57 +0300 (run time: 0m 10s)

После обновления базы данных и завершения работы с отчётами переименуйте файл, чтобы утилита aide начала использовать новую базу для последующих проверок:

$ sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Оповещение о нарушении целостности объектов контроля

Для автоматической проверки целостности системы утилитой aide с заданной периодичностью можно использовать службу cron или таймеры systemd, а для отправки уведомлений — локальный почтовый сервер или любое другое решение, которое можно вызвать из сценария командной строки.

Сценарий для автоматического запуска aide

Ниже приведён пример сценария командной строки, который запускает утилиту aide и отправляет её отчёт электронным письмом, если код возврата был ненулевым. Такой код возврата означает, что во время проверки были обнаружены расхождения с базой данных или возникли ошибки.

#!/bin/bash

# e-mail адрес, на который необходимо отправить отчёт aide
ADMIN_EMAIL='admin@localhost'

# исходящий e-mail адрес
FROM_EMAIL='aide@localhost'

# путь к файлу отчёта утилиты aide, задаётся директивой report_url в
# конфигурационном файле
AIDE_LOG='/var/log/aide/aide.log'

# тема письма
SUBJECT='AIDE: integrity check failed'

# запустить aide и отправить файл отчёта если код возврата не равен 0
/sbin/aide --check &>/dev/null || /sbin/sendmail -i -t <<EOF
To: ${ADMIN_EMAIL}
From: ${FROM_EMAIL}
Subject: ${SUBJECT}

$(cat ${AIDE_LOG})
EOF

Сохраните сценарий в файл /usr/local/bin/aide-report.sh, установите корректные права доступа и сделайте его исполняемым:

$ sudo chown root:root /usr/local/bin/aide-report.sh
$ sudo chmod 755 /usr/local/bin/aide-report.sh

Настройка локального почтового сервера

В данном руководстве в качестве почтовой службы предлагается использовать postfix, для его установки и включения выполните следующие команды:

$ sudo dnf install -y postfix
$ sudo systemctl enable --now postfix

Для целей тестирования дополнительная конфигурация почтового сервиса не требуется — достаточно чтобы он был запущен и пользователь, на имя которого будет отправляться электронная почта, существовал в системе. Полученная почта будет сохраняться в текстовый файл очереди /var/spool/mail/ИМЯ_ПОЛЬЗОВАТЕЛЯ, с которым может работать как почтовый клиент Evolution (тип сервера «Стандартная для Unix очередь типа mbox»), так и любая программа для просмотра текстовых файлов (less, cat и т.п.). Для получения информации о безопасной настройке почтовой службы для реальных условий вам необходимо обратиться к специализированному руководству.

Периодический запуск aide

Периодический запуск aide с помощью cron

Для периодического запуска утилиты aide с помощью службы cron добавьте соответствующую запись в файл crontab пользователя root. Например, для проверки целостности системы каждые три часа, запустите редактор crontab командой crontab -e, добавьте в конец файла следующую запись и сохраните изменения:

0 */3 * * * /usr/local/bin/aide-report.sh
Периодический запуск aide с помощью таймера systemd

В качестве альтернативы службе cron вы также можете использовать таймеры systemd для запуска периодических задач.

В первую очередь создайте сервисный файл /etc/systemd/system/aide-report.service следующего содержания:

[Unit]
Description=AIDE periodic scan

[Service]
Type=simple
# команда для запуска
ExecStart=/usr/local/bin/aide-report.sh
# запускать команду от имени пользователя root
User=root

Затем создайте файл /etc/systemd/system/aide-report.timer с описанием таймера:

[Unit]
Description=Run AIDE scan every 3 hours

[Timer]
# запускать таймер каждые 3 часа
OnUnitActiveSec=3h
# запустить таймер через 5 минут после загрузки системы
OnBootSec=5min

[Install]
WantedBy=timers.target

Установите правильные права доступа и владельца для созданных файлов:

$ sudo chown root:root /etc/systemd/system/aide-report.{service,timer}
$ sudo chmod 644 /etc/systemd/system/aide-report.{service,timer}

Обновите конфигурацию systemd и запустите таймер:

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now aide-report.timer
Created symlink /etc/systemd/system/timers.target.wants/aide-report.timer → \
/etc/systemd/system/aide-report.timer.

После этого таймер активируется и проверка системы будет выполняться каждые три часа.

Статус таймера можно посмотреть с помощью следующей команды:

$ sudo systemctl status aide-report.timer
● aide-report.timer - Run AIDE scan every 3 hours
     Loaded: loaded (/etc/systemd/system/aide-report.timer; \
     enabled; preset: disabled)
     Active: active (waiting) since Tue 2025-01-28 18:52:27 MSK; \
     4min 41s ago
      Until: Tue 2025-01-28 18:52:27 MSK; 4min 41s ago
    Trigger: Tue 2025-01-28 21:52:27 MSK; 2h 55min left
   Triggers: ● aide-report.service

Jan 28 18:52:27 msvsphere.localdomain systemd[1]: \
Started Run AIDE scan every 3 hours.

Опции командной строки утилиты aide

Опции командной строки утилиты aide

Аргумент

Описание

--check, -C

Выполняет проверку системы на предмет нарушения целостности относительно состояния, зафиксированного в базе данных aide. База данных должна быть инициализирована и находиться по пути, определённом директивой database в конфигурационном файле. Этот режим работы используется по умолчанию если утилита запущена без каких-либо аргументов.

--init, -i

Инициализирует базу данных для хранения состояния системы. После инициализации вам потребуется переименовать файл чтобы команда --check могла с ним работать.

--update, -u

Обновляет базу данных aide чтобы она соответствовала текущему состоянию системы. Входная (database в конфигурационном файле) и выходная (database_out в конфигурационном файле) базы данных должны отличаться.

--compare, -E

Сравнивает две базы данных aide. Пути к ним должны быть определены директивами database и database_new в конфигурационном файле.

--config-check, -D

Останавливает работу aide после чтения конфигурационного файла, пользователь будет уведомлён о всех обнаруженных в нём ошибках.

--config=<путь>, -c <путь>

Задаёт путь к конфигурационному файлу aide. Значение по умолчанию — /etc/aide.conf. Используйте - для чтения конфигурационного файла со стандартного ввода (stdin).

--limit=<рег_выр> , -l <рег_выр>

Ограничить проверку и обновление БД только файлами и каталогами, соответствующими заданному регулярному выражению. Обратите внимание, что регулярное выражение совпадает только с началом строки. Пример запуска aide для проверки только объектов, путь которых начинается с /etc: aide --update --limit /etc. Все остальные объекты будут проигнорированы.

--before=<параметры>, -B <параметры>

Позволяет задать конфигурационные параметры, которые будут применены перед чтением конфигурационного файла. С полным списком доступных параметров вы можете ознакомиться на странице документации man aide.conf.

--after=<параметры>, -A <параметры>

Позволяет задать конфигурационные параметры, которые будут применены после чтения конфигурационного файла. С полным списком доступных параметров вы можете ознакомиться на странице документации man aide.conf.

--verbose=<уровень>, -V<уровень>

Определяет степень детальности вывода aide, допустимые значения находятся в пределах от 0 до 255. Значение по умолчанию — 5, при указании аргумента без уровня будет использовано значение 20. Указанное через командную строку значение имеет больший приоритет чем значение, определённое в конфигурационном файле.

--report=<URI>, -r <URI>

Указывает aide куда отправлять отчёты. Список поддерживаемых значений вы можете посмотреть в секции URLS страницы документации man aide.conf.

--version, -v

Вывести версию и параметры сборки aide на экран и завершить работу.

--help, -h

Выдать справочную информацию об аргументах командой строки и завершить работу.

Вычисление и сверка контрольной суммы файла

Утилита sha256sum позволяет вычислять контрольные суммы файлов по алгоритму SHA-256 и осуществлять их сверку с другими контрольными суммами, хранящимися в файле.

Режимы работы утилиты и выполняемые функции задаются набором опций, перечисленных в таблице:

Опции утилиты sha256sum и их значения

Опция

Значение

-b, --binary

Позволяет считывать данные из файлов в двоичном режиме.

-c, --check

Позволяет осуществить сверку рассчитанного значения контрольной суммы с некоторым другим значением контрольной суммы, хранящимся в файле, имя которого должно быть передано утилите в качестве аргумента.

--tag

Выводить рассчитанную контрольную сумму в формате BSD.

-t, --text

Читать в текстовом режиме (по умолчанию).

-z, --zero

Завершать каждую выводимую строку NUL, а не символом новой строки и выключить экранирование имени файла.

--ignore-missing

Не сообщать или прерываться при отсутствии файлов.

--quiet

При сверке контрольных сумм позволяет не выводить сообщение OK для каждого успешного случая сверки контрольных сумм.

--status

При сверке контрольных сумм позволяет в конце работы утилиты не выводить ничего, кроме кода сверки контрольных сумм.

--strict

При сверке контрольных сумм позволяет выводить ненулевое значение для неправильно отформатированных строк контрольной суммы.

-w, warn

При сверке контрольных сумм позволяет выводить предупреждения о неправильно отформатированных строках контрольной суммы.

--version

Показать версию утилиты и выйти.

--help

Показать справку и выйти.

Пример: подсчитаем контрольную сумму файла с журналом аудита по алгоритму SHA-256.

Для этого выполним следующую команду:

$ sudo sha256sum /var/log/audit/audit.log
65sh8467h74j8kf36mf76356r853k25748864ud7k835hr2kwuv9l4q73m74x7a49 /var/log/audit/audit.log

Также ОС МСВСфера предоставляет возможность вычислять контрольные суммы файлов по алгоритму ГОСТ. Для этого необходимо установить пакет gostsum.

Пример: подсчитаем контрольную сумму файла с журналом аудита по алгоритму ГОСТ.

Для этого выполним следующую команду:

$ sudo gostsum /var/log/audit/audit.log
054h7j3a8af6kf2h9lk257r67k2974rfh47a5hg34n3h7s25ak3674wrmc475ls5 /var/log/audit/audit.log