Применение рекомендаций 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 с настройками систем безопасности по умолчанию занимает длительное время. В демонстрационных целях в этом руководстве проверяется только часть из них.
На любом управляемом узле авторизуйтесь с привилегиями администратора.
Установите пакеты
telnetиtftpd-hpa.Обновите список доступных пакетов:
sudo apt update
Установите пакеты:
sudo apt install telnet 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 needed. Оно требует отключения протокола IPv6, если он не используется.Получите список алгоритмов шифрования, с которыми работает сервер OpenSSH:
sudo sshd -T | grep ciphers
В Astra Linux Special Edition 1.8.2.UU1 эта настройка по умолчанию имеет следующее значение:
В рекомендациях DevSec это правило
sshd-01 | Check for secure ssh ciphers. Оно требует отключения в настройках сервера OpenSSH использования алгоритмов, считающихся небезопасными.Проверьте состояние перенаправления X-сервера в настройках сервера OpenSSH:
sudo sshd -T | grep x11forwarding
Значение
yesуказывает на то, что перенаправление включено.В рекомендациях DevSec это правило
sshd-42 | 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: ansible_host: 192.168.0.101 node2.example.com: ansible_host: 192.168.0.102 node3.example.com: ansible_host: 192.168.0.103 # ... 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-1.2/aa-full-ee
При этом открывается псевдографический интерфейс, в котором показывается ход выполнения задания, например:
Статус задания выводится в правом нижнем углу.
Дождитесь перехода задания в статус Successful.
Для просмотра результатов аудита перейдите к результатам выполнения задания:
Введите
:1и нажмите 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-1.2/aa-full-ee
Проверка состояния систем защиты#
Чтобы проверить состояние систем защиты после настройки, выполните следующие действия на любом из настроенных узлов:
Проверьте наличие
telnetи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
Текущая настройка отличается от того, что было первоначально:
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
Проверьте состояние перенаправления X-сервера в настройках сервера OpenSSH:
sudo sshd -T | grep x11forwarding
Значение
noуказывает на то, что перенаправление выключено.
Особенности проекта#
Обратите внимание на следующие особенности выполненного проекта:
настройка параметров роли
astra.hardening.devsec;правила, исключенные из руководств DevSec, но возвращенные в роль
astra.hardening.devsec;способы получения информации о параметрах систем безопасности ОС и сервера OpenSSH до и после настройки;
использование роли
astra.hardening.devsecв двух режимах: аудит и устранение проблем безопасности.
Заключение#
В этом сценарии вы познакомились с основными шагами по настройке систем безопасности ОС Astra Linux Special Edition в соответствии с требованиями, изложенными в руководствах DevSec Linux Security Baseline и DevSec SSH Baseline.
Из всей последовательности шагов важно выделить следующие действия:
проверка состояния систем защиты ОС и сервера OpenSSH до и после настройки;
создание и запуск набора сценариев Ansible, использующих роль
astra.hardening.devsec.