Контроль целостности файлов конфигурации Визион

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

  1. Создание эталонных контрольных сумм указанных файлов и директорий.

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

  3. Реагирование на наличие расхождений в контрольных суммах в соответствии с политикой, определённой системным администратором.

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

Перечень файлов и директорий Визиона для контроля целостности#

  • /etc/nginx/

  • /opt/skala-r/etc/vision/

  • /opt/skala-r/etc/vision/server/grafana/provisioning/datasources/datasources.yml

  • /opt/skala-r/plagent/, за исключением директорий /opt/skala-r/plagent/io/ и /opt/skala-r/plagent/upload/

  • /opt/skala-r/vision/.secrets_vault

  • /opt/skala-r/vision/agent/

  • /opt/skala-r/vision/bin

  • /opt/skala-r/vision/cert/

  • /opt/skala-r/vision/server/plugins/

  • /opt/skala-r/vision/server/repo/

  • /opt/skala-r/vision/server/vision_taskdaemon/var/

  • /opt/skala-r/vision/server/vision_venv/

  • /etc/systemd/system/multi-user.target.wants/nginx.service

    Это символическая ссылка. Фактическое расположение файла зависит от используемого дистрибутива Linux:

    • ALT Linux: /lib/systemd/system/nginx.service.

    • Astra Linux: /lib/systemd/system/nginx.service.

    • РЕД ОС: /usr/lib/systemd/system/nginx.service.

  • /usr/sbin/nginx;

  • Конфигурационные файлы PostgreSQL:

    ALT Linux Server 8 СП р9, ALT Linux Server 8 СП р10, РЕД ОС 7.3, РЕД ОС 8:

    • /var/lib/pgsql/data/pg_hba.conf;

    • /var/lib/pgsql/data/pg_ident.conf;

    • /var/lib/pgsql/data/postgresql.conf.

    Astra Linux Special Edition 1.7.3:

    • /etc/postgresql/11/main/pg_hba.conf;

    • /etc/postgresql/11/main/pg_ident.conf;

    • /etc/postgresql/11/main/postgresql.conf.

  • /usr/bin/postgres

  • /etc/systemd/system/multi-user.target.wants/postgresql.service

    Это символическая ссылка. Фактическое расположение файла зависит от используемого дистрибутива Linux:

    • ALT Linux: /lib/systemd/system/postgresql.service.

    • Astra Linux Special Edition: /lib/systemd/system/postgresql.service.

    • РЕД ОС: /usr/lib/systemd/system/postgresql.service.

  • /etc/systemd/system/vision_core.service

  • /etc/systemd/system/vision_alertcollector.service

  • /etc/systemd/system/vision_taskdaemon.service

  • /etc/systemd/system/grafana.service

  • /etc/systemd/system/victoriametrics_st.service

  • /etc/systemd/system/vmalert_st.service

  • /etc/systemd/system/alertmanager.service

  • /etc/systemd/system/snmp_notifier.service

  • /etc/systemd/system/vision_*.service

  • Службы plagent:

    Эти службы присутствуют только на узлах с установленным plagent:

    • /etc/systemd/system/plagent.service;

    • /etc/systemd/system/vision_vmagent_agent.service;

    • /etc/systemd/system/vision_vmagent_proxy.service.

Настройка утилит#

В состав разных дистрибутивов Linux входят разные утилиты контроля целостности, поэтому порядок их настройки различается.

afick#

Эта инструкция применима к дистрибутивам:

  • Astra Linux Special Edition 1.7;

  • РЕД ОС 7.3;

  • РЕД ОС 8.

Для контроля целостности используется утилита afick. Для получения более подробной информации о ней обратитесь к соответствующим руководствам:

Включение контроля целостности#

Для включения контроля целостности выполните следующие действия:

  1. Установите утилиту контроля целостности:

    • Astra Linux Special Edition:

      apt-get install afick
      
    • РЕД ОС:

      dnf install afick
      
  2. В конфигурационном файле /etc/afick.conf в раздел # files to scan добавьте пути к контролируемым файлам и директориям и необходимые опции.

  3. Для обновления и формирования базы контролируемых файлов запустите утилиту с ключом --update:

    afick --update
    

Регулярная проверка целостности обеспечивается запуском cron-задачи. Задача создаётся при установке утилиты и запускается один раз в сутки. Результатом выполнения является сформированный отчет, который отправляется на электронный адрес, указанный в конфигурационном файле в секции @@define MAILTO root.

Периодичность запуска#

Bash-скрипт, отвечающий за проверку целостности и отправки отчета, находится в /etc/cron.daily/afick_cron.

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

Проверка механизма контроля целостности#

Для проверки, что контроль целостности осуществляется, необходимо произвести следующие действия:

  1. Выполнить команду:

    afick -k
    

    Ожидаемый результат — отсутствие изменений.

  2. Изменить контролируемый файл или создать новый в контролируемой директории.

  3. Повторно выполнить команду:

    afick -k
    

    Ожидаемый результат — сообщение о нарушении целостности.

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

afick --update

osec#

Эта инструкция применима к дистрибутивам:

  • ALT Linux СП 8 р9;

  • ALT Linux СП 8 р19.

Для настройки используется утилита osec. Подробнее в документации ALT Linux .

Включение контроля целостности#

Для включения контроля целостности выполните следующие действия:

  1. Установите утилиту:

    apt-get install osec
    
  2. Убедитесь, что сервис контроля целостности при загрузке активирован (enabled):

    systemctl is-enabled integalert
    
  3. Если автозапуск сервиса выключен, включите его:

    systemctl enable integalert
    
  4. В конфигурационный файл /etc/osec/dirs.conf добавьте директории, содержимое которых нужно контролировать.

    По умолчанию отслеживаются изменения в директориях:

    • /bin/;

    • /sbin/;

    • /usr/bin/;

    • /usr/sbin/.

    Строки, начинающиеся со знака #, считаются комментариями.

  5. Сформируйте эталонные контрольные суммы:

    osec -f /etc/osec/dirs.conf -D /var/lib/osec/
    
  6. Запустите osec:

    integalert fix
    
  7. Для фиксации изменений и проверки конфигурации выполните команду:

    systemctl restart osec
    

Для проверки целостности системы запустите команду integalert от имени привилегированного пользователя.

После внесения изменений в файл /etc/osec/dirs.conf перезапустите службу osec.

Периодичность запуска#

Кроме пакета программного комплекса osec в систему устанавливается пакет osec-timerunit. Он позволяет задать способ и периодичность запуска osec (файлы /lib/systemd/system/osec.service, /lib/systemd/system/osec.timer). В пакете osec-timerunit есть файл с заданием для демона cron и конфигурационные файлы (dirs.conf).

Для проверки статуса периодического контроля целостности выполните команду:

systemctl status osec.timer

Для активации периодического контроля целостности выполните команды команды:

systemctl enable osec.timer
systemctl start osec.timer

По умолчанию в osec.timer задан запуск проверки каждый день в двенадцать часов ночи. Если необходимо задавать другие периоды запуска osec, то необходимо создать файл /etc/systemd/system/osec.timer с измененными периодами и перезапустить демон systemd:

cp /lib/systemd/system/osec.timer /etc/systemd/system/osec.timer
vim /etc/systemd/system/osec.timer
systemctl daemon-reload

Проверка механизма контроля целостности#

Для проведения теста необходимо авторизоваться в системе от имени администратора.

  1. Подготовить директорию для базы данных:

    mkdir /tmp/base
    chown osec:osec /tmp/base
    cp -ar /var/lib/osec/* /tmp/base
    
  2. Сформировать контрольные суммы объектов (список путей к ним хранится в файле /etc/osec/dirs.conf) и занести их в базу данных /tmp/base.

    Результат работы osec выводится в терминал, поэтому для перенаправления вывода результата в текстовый файл /tmp/report1 необходимо использовать команду:

    osec -f /etc/osec/dirs.conf -D /tmp/base/ -r >/tmp/report1
    
  3. Не производя никаких изменений в системе, запустить osec повторно и вывести результат работы в текстовый файл /tmp/report2:

    osec -f /etc/osec/dirs.conf -D /tmp/base/ -r >/tmp/report2
    
  4. Сравнить два результирующих файла /tmp/report1 и /tmp/report2:

    diff -u0 /tmp/report1 /tmp/report2
    

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

  5. Выполнить изменения в контролируемых файлах или директориях (добавить, удалить и т. д.)

  6. Запустить osec в режиме «только чтение» и перенаправить вывод в текстовый файл /tmp/report3:

    osec -f /etc/osec/dirs.conf -D /tmp/base/ -r > /tmp/report3
    

1.Сравнить два результирующих файла /tmp/report2 и /tmp/report3:

```sh
diff -u0 /tmp/report2 /tmp/report3
```

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

Порядок восстановления целостности системы#

В случае выявления нарушения целостности:

  • при проверке целостности системы утилитой integalert;

  • при загрузке ОС — вывод визуального оповещения с обязательным подтверждением дальнейшей загрузки ОС Система загружается в однопользовательском режиме с запросом пароля суперпользователя.

Порядок восстановления:

  1. От имени администратора выполнить просмотр лога аудита и найти нарушение целостности.

  2. Восстановить объект с нарушенной целостностью: заменить на эталон, переустановить или пропустить (если изменение было санкционированным).

  3. Запустить восстановление целостности системы.

    Если система контроля целостности IMA/EVM не инициализирована, выполнить команду:

    integalert fix
    
  4. Сформировать эталонные контрольные суммы для изменённых и новых объектов и занести их в базу данных:

    osec -f /etc/osec/dirs.conf –D /var/lib/osec
    
  5. Перезагрузить систему.