Применение рекомендаций DevSec#

Использование роли astra.hardening.devsec из реестра Automation Hub позволяет автоматизировать процесс настройки систем защиты ОС Astra Linux Special Edition и входящих в ее состав клиента и сервера OpenSSH в соответствии с рекомендациями, изложенными в следующих руководствах:

Описание сценария#

Процесс аудита и настройки систем безопасности ОС Astra Linux Special Edition и сервера OpenSSH с помощью роли astra.hardening.devsec состоит из следующих этапов:

  1. Изучение поведения ОС и сервера OpenSSH с настройками по умолчанию.

  2. Подготовка проекта Ansible.

    Проект включает в себя следующие файлы:

    • ansible.cfg – настройки Ansible.

    • inventory.yml – описание инвентаря.

    • playbooks/devsec-audit.yml – сценарий проверки параметров безопасности в соответствии с указанными выше руководствами DevSec. Этот сценарий выводит информацию об обнаруженных проблемах, но не устраняет их.

    • playbooks/devsec-remediation.yml – сценарий настройки параметров безопасности в соответствии с указанными выше руководствами DevSec. Этот сценарий изменяет настройки ОС и сервера OpenSSH в соответствии с указанными правилами.

  3. Запуск набора сценариев.

  4. Проверка поведения ОС и сервера OpenSSH после изменения настроек.

Подготовка к работе#

Подготовьте окружение к управлению задачами автоматизации:

  1. Разверните несколько управляемых узлов под управлением ОС Astra Linux Special Edition, работающей в базовом режиме защищенности («Орел»).

  2. Настройте управляемые узлы согласно инструкции.

  3. Изучите описание коллекции astra.hardening.

  4. На своей рабочей станции подготовьте каталог для хранения файлов проекта, например:

    mkdir ~/astra-devsec/
    

Проверка настроек систем защиты по умолчанию#

Полная проверка поведения ОС Astra Linux Special Edition 1.8 и сервера OpenSSH с настройками систем безопасности по умолчанию занимает длительное время. В демонстрационных целях в этом руководстве проверяется только часть из них.

  1. На любом управляемом узле авторизуйтесь с привилегиями администратора.

  2. Установите пакеты telnet и tftpd-hpa.

    1. Обновите список доступных пакетов:

      sudo apt update
      
    2. Установите пакеты:

      sudo apt install telnet tftpd-hpa --yes
      

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

    В рекомендациях DevSec это правила package-02 | Do not install Telnet server и package-06 | Do not install tftp server. Они требуют отсутствия ПО Telnet и TFTP на узле.

  3. Проверьте поддержку протокола IPv6 на уровне ядра ОС:

    sudo sysctl --all | grep net.ipv6.conf.all.disable_ipv6
    

    Значение 0 указывает на то, что поддержка IPv6 включена.

    В рекомендациях DevSec это правило sysctl-18 | Disable IPv6 if it is needed. Оно требует отключения протокола IPv6, если он не используется.

  4. Получите список алгоритмов шифрования, с которыми работает сервер OpenSSH:

    sudo sshd -T | grep ciphers
    

    В Astra Linux Special Edition 1.8.2.UU1 эта настройка по умолчанию имеет следующее значение:

    ciphers grasshopper-ctr128,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,grasshopper-cbc
    

    В рекомендациях DevSec это правило sshd-01 | Check for secure ssh ciphers. Оно требует отключения в настройках сервера OpenSSH использования алгоритмов, считающихся небезопасными.

  5. Проверьте состояние перенаправления X-сервера в настройках сервера OpenSSH:

    sudo sshd -T | grep x11forwarding
    

    Значение yes указывает на то, что перенаправление включено.

    В рекомендациях DevSec это правило sshd-42 | Disable X11Forwarding. Оно требует отключения перенаправления X-сервера в настройках сервера OpenSSH.

Подготовка проекта Ansible#

На управляющем узле подготовьте ресурсы, необходимые для использования Ansible.

  1. Создайте файл ansible.cfg со следующим содержимым:

    ansible.cfg#
    [defaults]
    host_key_checking = False
    inventory = inventory.yml
    
  2. Создайте файл инвентаря 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
    
  3. Создайте каталог playbooks/.

  4. Создайте в каталоге 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.

  5. Создайте в каталоге 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.

  6. Если для запуска заданий автоматизации используется Automation Controller, зафиксируйте сделанные в проекте изменения и опубликуйте их в репозитории Git.

Запуск сценариев#

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

  1. Для доступа к управляемым узлам создайте полномочие типа Машина (Machine).

  2. Если для доступа к репозиторию с кодом проекта требуется авторизация, создайте полномочие типа Система управления версиями (Source Control).

  3. Создайте проект со следующими свойствами:

    • Название: DevSec.

    • Среда исполнения: выберите среду исполнения, использующую образ aa-full-ee.

      Примечание

      Среда исполнения на основе образа aa-full-ee используется в Automation Controller по умолчанию. Вы можете добавить среду исполнения самостоятельно, следуя инструкции.

    • Тип системы управления исходными данными: Git.

    • URL системы управления исходными данными: укажите ссылку на репозиторий с кодом проекта.

    • Полномочия на систему управления исходными данными: если для доступа к репозиторию с кодом проекта требуется авторизация, выберите созданное ранее полномочие типа Система управления версиями (Source Control).

  4. Опишите инвентарь, состоящий из развернутых ранее управляемых узлов.

    Совет

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

  5. Создайте шаблон задания со следующими свойствами:

    • Тип задания: Выполнение.

    • Инвентарь: выберите созданный ранее инвентарь.

    • Проект: DevSec.

    • Playbook: playbooks/devsec-audit.yml.

  6. Запустите задание на основе созданного шаблона.

  7. Проверьте вывод задания. Обратите внимание на найденные проблемы безопасности.

  8. Для устранения обнаруженных проблем безопасности создайте шаблон задания со следующими свойствами:

    • Тип задания: Выполнение.

    • Инвентарь: выберите созданный ранее инвентарь.

    • Проект: DevSec.

    • Playbook: playbooks/devsec-remediation.yml.

  9. Запустите задание на основе созданного шаблона.

При использовании Ansible Navigator для запуска сценария аудита безопасности выполните команду:

ansible-navigator run playbooks/devsec-audit.yml \
   --eei private-hub.example.com/aa-1.2/aa-full-ee

При этом открывается псевдографический интерфейс, в котором показывается ход выполнения задания, например:

  Play name                                Ok Changed Unreachable Failed Skipped Ignored In progress Task count  Progress
0│Prepare system to astra.hardening.devsec  2       0           0      0       0       0           0          2  Complete
1│Audit system with astra.hardening.devsec 40       0           0      0       8       0           0         48  Complete

Статус задания выводится в правом нижнем углу. Дождитесь перехода задания в статус Successful.

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

  1. Введите :1 и нажмите Enter, чтобы перейти в данные задания «Audit system with astra.hardening.devsec role».

  2. Введите двоеточие и номер строки с задачей «Show DevSec compliance report» и нажмите Enter.

    Ansible Navigator отображает сведения о задаче в формате YAML (часть вывода опущена с целью сокращения):

    ---
    duration: 0.024929
    end: "2025-07-30T11:50:47.073370+00:00"
    event_loop: null
    host: node1.example.com
    play: Audit system with astra.hardening.devsec role
    play_pattern: all
    playbook: /home/***/project/playbooks/devsec-audit.yml
    remote_addr: node1.example.com
    res:
      _ansible_no_log: false
      _ansible_verbose_always: true
      changed: false
      msg:
        package-02:
          compliant: true
          rationale: ""
        package-06:
          compliant: false
          rationale:
            "The following TFTP server packages are installed in the target system:
            tftpd-hpa."
        sshd-01:
          compliant: false
          rationale: |-
            In the selected SSH server configuration file /etc/ssh/sshd_config
            the following parameters are absent or different from the values specified: Ciphers.
        sshd-42:
          compliant: false
          rationale: |-
            In the selected SSH server configuration file /etc/ssh/sshd_config
            the following parameters are absent or different from the values specified: X11Forwarding.
        sysctl-18:
          compliant: false
          rationale:
            "The following Linux kernel parameters are different from the values
            specified: net.ipv6.conf.all.disable_ipv6."
    

    Из этого вывода следует, что указанные выше правила не выполняются, а значит, безопасность системы находится под угрозой.

Для устранения обнаруженных проблем безопасности запустите сценарий playbooks/devsec-remediation.yml:

ansible-navigator run playbooks/devsec-remediation.yml \
   --eei private-hub.example.com/aa-1.2/aa-full-ee

Проверка состояния систем защиты#

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

  1. Проверьте наличие telnet и tftpd-hpa в списке установленных пакетов:

    dpkg -l | grep -e "telnet\|tftpd-hpa"
    

    Если вывод пустой, значит, пакеты удалены из системы.

  2. Проверьте разрешение на использование протокола IPv6:

    sudo sysctl --all | grep net.ipv6.conf.all.disable_ipv6
    

    Значение 1 указывает на то, что поддержка IPv6 выключена.

  3. Получите список алгоритмов шифрования, с которыми работает сервер 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
    
  4. Проверьте состояние перенаправления 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.