Применение рекомендаций 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
.