Применение рекомендаций DevSec#
Использование роли astra.hardening.devsec из реестра Automation Hub позволяет автоматизировать процесс настройки систем защиты ОС Astra Linux Special Edition и входящих в ее состав клиента и сервера OpenSSH в соответствии с рекомендациями, изложенными в следующих руководствах:
Описание сценария#
Процесс аудита и настройки систем безопасности ОС Astra Linux Special Edition и сервера OpenSSH с помощью роли astra.hardening.devsec состоит из следующих этапов:
Изучение поведения ОС и сервера OpenSSH с настройками по умолчанию.
Подготовка проекта Ansible.
Проект включает в себя следующие файлы:
ansible.cfg– настройки Ansible.inventory.yml– описание инвентаря.playbooks/devsec-audit.yml– сценарий проверки параметров безопасности в соответствии с указанными выше руководствами DevSec. Этот сценарий выводит информацию об обнаруженных проблемах, но не устраняет их.playbooks/devsec-remediation.yml– сценарий настройки параметров безопасности в соответствии с указанными выше руководствами DevSec. Этот сценарий изменяет настройки ОС и сервера OpenSSH в соответствии с указанными правилами.
Запуск набора сценариев.
Проверка поведения ОС и сервера OpenSSH после изменения настроек.
Подготовка к работе#
Подготовьте окружение к управлению задачами автоматизации:
Разверните несколько управляемых узлов под управлением ОС Astra Linux Special Edition, работающей в базовом режиме защищенности («Орел»).
Настройте управляемые узлы согласно инструкции.
Изучите описание коллекции
astra.hardening.На своей рабочей станции подготовьте каталог для хранения файлов проекта, например:
mkdir ~/astra-devsec/
Проверка настроек систем защиты по умолчанию#
Полная проверка поведения ОС Astra Linux Special Edition 1.8 и сервера OpenSSH с настройками систем безопасности по умолчанию занимает длительное время. В демонстрационных целях в этом руководстве проверяется только часть из них.
На любом управляемом узле авторизуйтесь с привилегиями администратора.
Установите пакеты
telnetdиtftpd-hpa.Обновите список доступных пакетов:
sudo apt update
Установите пакеты:
sudo apt install telnetd tftpd-hpa --yes
Это ПО не удовлетворяет актуальным требованиям к безопасности, и его установка выполняется только в демонстрационных целях.
В рекомендациях DevSec это правила
package-02 | Do not install Telnet serverиpackage-06 | Do not install tftp server. Они требуют отсутствия серверов Telnet и TFTP на узле.Проверьте поддержку протокола IPv6 на уровне ядра ОС:
sudo sysctl --all | grep net.ipv6.conf.all.disable_ipv6
Значение
0указывает на то, что поддержка IPv6 включена.В рекомендациях DevSec это правило
sysctl-18 | Disable IPv6 if it is not needed. Оно требует отключения протокола IPv6, если он не используется.Получите список алгоритмов шифрования, с которыми работает сервер OpenSSH:
sudo sshd -T | grep ciphers
В Astra Linux Special Edition 1.8.2.UU1 эта настройка по умолчанию имеет следующее значение:
В рекомендациях DevSec это правило
sshd-01 | Server: Check for secure SSH ciphers. Оно требует отключения в настройках сервера OpenSSH использования алгоритмов, считающихся небезопасными.Проверьте состояние перенаправления X-сервера в настройках сервера OpenSSH:
sudo sshd -T | grep x11forwarding
Значение
yesуказывает на то, что перенаправление включено.В рекомендациях DevSec это правило
sshd-42 | Server: Disable X11Forwarding. Оно требует отключения перенаправления X-сервера в настройках сервера OpenSSH.
Подготовка проекта Ansible#
На управляющем узле подготовьте ресурсы, необходимые для использования Ansible.
Создайте файл
ansible.cfgсо следующим содержимым:ansible.cfg#[defaults] host_key_checking = False inventory = inventory.yml
Создайте файл инвентаря
inventory.yml, например:inventory.yml#--- all: hosts: node1.example.com: node2.example.com: node3.example.com: # ... vars: ansible_user: astra
Создайте каталог
playbooks/.Создайте в каталоге
playbooks/файл сценарияdevsec-audit.yml:playbooks/devsec-audit.yml#--- - name: Audit system with astra.hardening.devsec role hosts: all become: true collections: - astra.hardening roles: - role: devsec vars: devsec_action: audit devsec_selected_rules: - package-02 - package-06 - sysctl-18 - sshd-01 - sshd-42
Сценарий автоматизации содержит задачу, которая проверяет действующие настройки ОС и сервера OpenSSH на соответствие перечисленным выше правилам DevSec.
Создайте в каталоге
playbooksфайл сценарияdevsec-remediation.yml:playbooks/devsec-remediation.yml#--- - name: Fix security issues with astra.hardening.devsec role hosts: all become: true collections: - astra.hardening roles: - role: devsec vars: devsec_action: remediation devsec_selected_rules: - package-02 - package-06 - sysctl-18 - sshd-01 - sshd-42
Сценарий автоматизации содержит задачу, которая приводит настройки ОС и сервера OpenSSH в соответствие требованиям перечисленных выше правил DevSec.
Если для запуска заданий автоматизации используется Automation Controller, зафиксируйте сделанные в проекте изменения и опубликуйте их в репозитории Git.
Запуск сценариев#
Способ запуска сценариев зависит от инструмента, используемого для управления задачами автоматизации.
Для доступа к управляемым узлам создайте полномочие типа Machine.
Если для доступа к репозиторию с кодом проекта требуется авторизация, создайте полномочие типа Source Control.
Создайте проект со следующими свойствами:
Название: DevSec.
Среда исполнения: выберите среду исполнения, использующую образ
aa-full-ee.Примечание
Среда исполнения на основе образа
aa-full-eeиспользуется в Automation Controller по умолчанию. Среду исполнения можно добавить самостоятельно, следуя инструкции.Тип системы управления исходным кодом: Git.
URL системы управления исходным кодом: укажите ссылку на репозиторий с кодом проекта.
Полномочие на систему управления исходным кодом: если для доступа к репозиторию с кодом проекта требуется авторизация, выберите созданное ранее полномочие типа Source Control.
Опишите инвентарь, состоящий из развернутых ранее управляемых узлов.
Совет
В качестве источника сведений об управляемых узлах можно использовать файл
inventory.yml.Создайте шаблон задания со следующими свойствами:
Тип задания: Выполнение.
Инвентарь: выберите созданный ранее инвентарь.
Проект: DevSec.
Playbook:
playbooks/devsec-audit.yml.
Запустите задание на основе созданного шаблона.
Проверьте вывод задания. Обратите внимание на найденные проблемы безопасности.
Для устранения обнаруженных проблем безопасности создайте шаблон задания со следующими свойствами:
Тип задания: Выполнение.
Инвентарь: выберите созданный ранее инвентарь.
Проект: DevSec.
Playbook:
playbooks/devsec-remediation.yml.
Запустите задание на основе созданного шаблона.
При использовании Ansible Navigator для запуска сценария аудита безопасности выполните команду:
ansible-navigator run playbooks/devsec-audit.yml \
--eei private-hub.example.com/aa-2.0/aa-full-ee
При этом открывается псевдографический интерфейс, в котором показывается ход выполнения задания, например:
Статус задания выводится в правом нижнем углу.
Дождитесь перехода задания в статус Successful.
Для просмотра результатов аудита перейдите к результатам выполнения задания:
Введите
:0и нажмите Enter, чтобы перейти в данные задания «Audit system with astra.hardening.devsec role».Введите двоеточие и номер строки с задачей «Show DevSec compliance report» и нажмите Enter.
Ansible Navigator отображает сведения о задаче в формате YAML (часть вывода опущена с целью сокращения):
Из этого вывода следует, что все указанные выше правила не выполняются, а значит, безопасность системы находится под угрозой.
Для устранения обнаруженных проблем безопасности запустите сценарий playbooks/devsec-remediation.yml:
ansible-navigator run playbooks/devsec-remediation.yml \
--eei private-hub.example.com/aa-2.0/aa-full-ee
Проверка состояния систем защиты#
Для проверки состояния систем защиты после настройки выполните следующие действия на любом из настроенных узлов:
Проверьте наличие
telnetdиtftpd-hpaв списке установленных пакетов:dpkg -l | grep -e "telnet\|tftpd-hpa"
Если вывод пустой, значит, пакеты удалены из системы.
Проверьте разрешение на использование протокола IPv6:
sudo sysctl --all | grep net.ipv6.conf.all.disable_ipv6
Значение
1указывает на то, что поддержка IPv6 выключена.Получите список алгоритмов шифрования, с которыми работает сервер OpenSSH:
sudo sshd -T | grep ciphers
Текущая настройка отличается от того, что было первоначально:
Проверьте состояние перенаправления X-сервера в настройках сервера OpenSSH:
sudo sshd -T | grep x11forwarding
Значение
noуказывает на то, что перенаправление выключено.Если команда возвращает значение
yes, проверьте порядок директив в файле/etc/ssh/sshd_config.Примечание
Роль дописывает строку
X11Forwarding noв конец файла/etc/ssh/sshd_config, однако сервер OpenSSH применяет первое вхождение директивы. Если выше в файле уже присутствует раскомментированная строкаX11Forwarding yes(в ОС Astra Linux Special Edition она может присутствовать по умолчанию), действующим остается значениеyes, при этом аудит сообщает о выполнении правилаsshd-42. В этом случае удалите существующую строкуX11Forwarding yesвручную, перезапустите службуsshи повторите проверку.
Особенности проекта#
Обратите внимание на следующие особенности выполненного проекта:
настройка параметров роли
astra.hardening.devsec;способы получения информации о параметрах систем безопасности ОС и сервера OpenSSH до и после настройки;
использование роли
astra.hardening.devsecв двух режимах: аудит и устранение проблем безопасности.
Заключение#
В этом сценарии вы познакомились с основными шагами по настройке систем безопасности ОС Astra Linux Special Edition в соответствии с требованиями, изложенными в руководствах DevSec Linux Security Baseline и DevSec SSH Baseline.
Из всей последовательности шагов важно выделить следующие действия:
проверка состояния систем защиты ОС и сервера OpenSSH до и после настройки;
создание и запуск набора сценариев Ansible, использующих роль
astra.hardening.devsec.