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

Использование роли astra.hardening.cis из реестра Astra Automation Hub позволяет автоматизировать процесс настройки систем защиты ОС Astra Linux Special Edition в соответствии с рекомендациями, изложенными в руководстве «CIS Debian Family Linux Benchmark».

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

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

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

    • requirements.yml – зависимости;

    • playbook.yml – сценарий настройки управляемых узлов.

  2. Настройка контроллера на выполнение заданий:

    1. Создание полномочий.

    2. Создание проекта.

    3. Создание инвентаря и записей об управляемых узлах.

    4. Создание шаблона задания.

  3. Запуск задания.

С помощью переменных роли к ОС управляемых узлов применяются настройки, описанные в следующих разделах «CID Debian Family Linux Benchmark»:

  • 1.8.5 Ensure remote login warning banner is configured properly

    Содержимое файла /etc/issue.net отображается при попытке удаленного подключения к узлу. Эта информация может быть полезна для разработчиков ПО, но также она может быть использована злоумышленником для выбора инструментальных средств, эксплуатирующих уязвимости ОС определенной версии.

    Рекомендуется отключить вывод информации о версии ОС при попытках удаленного подключения к узлу.

  • 1.8.6 Ensure local login warning banner is configured properly

    Содержимое файла /etc/issue отображается при попытке локального входа в систему. Эта информация может быть полезна для разработчиков ПО, но также может быть использована злоумышленником для выбора инструментальных средств, эксплуатирующих уязвимости ОС определенной версии.

    Рекомендуется отключить вывод информации о версии ОС на экране локального входа в систему.

  • 3.2.1 Ensure packet redirect sending is disabled

    Перенаправление ICMP (ICMP Redirects) используется для передачи информации о маршрутизации на другие узлы. Если узел не используется в качестве маршрутизатора, он не должен пересылать пакеты на другие узлы.

Для настройки управляемых узлов используется подключение с применением ключей SSH.

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

Подготовьте управляемые узлы к настройке с помощью Ansible:

  • Обеспечьте доступ к управляемым узлам по SSH.

  • Разрешите использование sudo без ввода пароля.

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

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

  1. Подключитесь к любому управляемому узлу по SSH.

  2. Выполните команды, соответствующие выбранным правилам «CIS Debian Family Linux Benchmark»:

    • 1.8.5 Ensure remote login warning banner is configured properly

      grep -E -i "(\\\v|\\\r|\\\m|\\\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))" /etc/issue.net
      

      Эта команда выполняет в файле /etc/issue.net поиск строки, позволяющей определить версию ОС. При настройках ОС по умолчанию эта команда возвращает строку:

      Astra Linux 1.7.5
      
    • 1.8.6 Ensure local login warning banner is configured properly

      grep -E -i "(\\\v|\\\r|\\\m|\\\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))" /etc/issue
      

      Эта команда выполняет в файле /etc/issue поиск строки, позволяющей определить версию ОС. При настройках ОС по умолчанию эта команда возвращает строку:

      Astra Linux 1.7.5 \n \l
      
    • 3.2.1 Ensure packet redirect sending is disabled

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

      sudo sysctl net.ipv4.conf.all.send_redirects
      sudo sysctl net.ipv4.conf.default.send_redirects
      

      При настройках ОС по умолчанию они возвращают следующий набор строк:

      net.ipv4.conf.all.send_redirects = 1
      net.ipv4.conf.default.send_redirects = 1
      

      Значение 1 означает, что соответствующая функциональность ядра включена.

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

      grep "net\.ipv4\.conf\.all\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
      grep "net\.ipv4\.conf\.default\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
      

      При настройках ОС по умолчанию они возвращают следующий набор строк:

      /etc/sysctl.conf:#net.ipv4.conf.all.send_redirects = 0
      /etc/sysctl.d/99-sysctl.conf:#net.ipv4.conf.all.send_redirects = 0
      

      В конфигурационных файлах /etc/sysctl.conf и /etc/systctl.d/99-sysctl.conf присутствуют строки, отвечающие за отключение перенаправления пакетов, но они закомментированы.

  3. Для отключения от управляемого узла выполните команду:

    exit
    

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

Подготовьте файлы проекта Ansible:

  1. Создайте файл зависимостей Ansible requirements.yml:

    ---
    collections:
      - name: astra.hardening
        type: git
        version: 0.2.0
        source: ssh://git@hub.astra-automation.ru:2222/aa-gca/ARFA/hardening.git
    

    В этом файле указаны параметры подключаемой коллекции:

    • name – название коллекции из реестра Astra Automation Hub, в данном случае – astra.hardening.

    • type – способ установки. Для установки коллекций из реестра Astra Automation Hub используется Git.

    • version – версия используемой коллекции, 0.2.0.

    • source – ссылка на репозиторий Git, в котором хранится коллекция.

  2. Создайте файл playbook playbook.yml:

    ---
    - name: Apply CIS requirements
      hosts: all
      become: true
    
      roles:
        - role: astra.hardening.cis
          vars:
            cis_alse_rule_1_8_5: true
            cis_alse_rule_1_8_6: true
            cis_alse_rule_3_2_1: true
    

    Здесь выбор правил «CID Debian Family Linux Benchmark» выполняется через присваивание переменным роли astra.hardening.cis значения true.

  3. Сделайте код проекта доступным для загрузки в Astra Automation Controller, например, путем публикации проекта на GitFlic или GitHub.

Настройка контроллера#

Авторизуйтесь в Astra Automation Controller и выполните следующие действия:

  1. Создайте полномочия:

    Тип

    Цель

    Система управления версиями

    Astra Automation Hub

    Система управления версиями

    Репозиторий с кодом проекта

    Машина

    Управляемые узлы

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

    • Название (Name) – CIS Demo Project.

    • Тип системы управления исходными данными (Source Control Type) – Git.

    • URL системы управления исходными данными (Source Control URL) – укажите ссылку на репозиторий, например:

      git@gitflic.ru:example-project/astra-hardening-cis-using.git
      
    • Полномочия на систему управления исходными данными (Source Control Credential) – выберите созданное ранее полномочие для доступа к Astra Automation Hub.

  3. Создайте обычный инвентарный список с названием CIS Demo Inventory. Добавьте в него сведения об управляемых узлах.

  4. Создайте шаблон задания со следующими характеристиками:

    • Название (Name) – CIS Demo Job Template.

    • Тип заданияВыполнение (Run).

    • Инвентарь (Inventory) – CIS Demo Inventory.

    • Проект (Project) – CIS Demo Project.

    • Playbookplaybook.yml.

    • Полномочия – полномочие типа «Машина», используемое для доступа к управляемым узлам.

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

    Дождитесь выполнения playbook, это может занять некоторое время.

    Важно

    По окончании настройки управляемые узлы перезагружаются автоматически.

    Убедитесь, что выполнение playbook прошло успешно. Об этом свидетельствуют нулевые значения параметров unreachable и failed в конце вывода:

    PLAY RECAP *********************************************************************
    node1   : ok=32   changed=4   unreachable=0   failed=0   skipped=667   rescued=0   ignored=0
    node2   : ok=32   changed=4   unreachable=0   failed=0   skipped=667   rescued=0   ignored=0
    node3   : ok=32   changed=4   unreachable=0   failed=0   skipped=667   rescued=0   ignored=0
    

    Параметры changed и skipped показывают количество выполненных и пропущенных задач Ansible соответственно.

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

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

  1. Подключитесь к любому из настроенных узлов по SSH.

  2. Выполните команды, соответствующие выбранным правилам «CIS Debian Family Linux Benchmark»:

    • 1.8.5 Ensure remote login warning banner is configured properly

      grep -E -i "(\\\v|\\\r|\\\m|\\\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))" /etc/issue.net
      

      После настройки эта команда возвращает пустую строку.

    • 1.8.6 Ensure local login warning banner is configured properly

      grep -E -i "(\\\v|\\\r|\\\m|\\\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))" /etc/issue
      

      После настройки эта команда возвращает пустую строку.

    • 3.2.1 Ensure packet redirect sending is disabled

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

      sudo sysctl net.ipv4.conf.all.send_redirects
      sudo sysctl net.ipv4.conf.default.send_redirects
      

      После настройки эти команды возвращают следующий набор строк:

      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      

      Значение параметров, равное 0, свидетельствует о том, что пересылка пакетов выключена путем изменения параметров ядра.

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

      grep "net\.ipv4\.conf\.all\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
      grep "net\.ipv4\.conf\.default\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
      

      После настройки эти команды возвращают следующий набор строк:

      /etc/sysctl.conf:#net.ipv4.conf.all.send_redirects = 0
      /etc/sysctl.d/999-astra.conf:net.ipv4.conf.all.send_redirects=0
      /etc/sysctl.d/99-sysctl.conf:#net.ipv4.conf.all.send_redirects = 0
      /etc/sysctl.d/999-astra.conf:net.ipv4.conf.default.send_redirects=0
      

      Отсюда следует, что для хранения необходимых параметров в каталоге /etc/sysctl.d/ создан конфигурационный файл 999-astra.conf, в который добавлены следующие строки:

      net.ipv4.conf.all.send_redirects=0
      net.ipv4.conf.default.send_redirects=0
      

      Содержимое файлов /etc/sysctl.conf и /etc/sysctl.d/99-sysctl.conf при этом не изменилось.

  3. Для отключения выполните команду:

    exit
    

Особенности проекта#

Обратите внимание на следующие особенности проекта:

  • Порядок подключения коллекции.

  • Настройка параметров роли astra.hardening.cis.

  • Способы получения информации о параметрах систем безопасности ОС до и после настройки.

Заключение#

В этом сценарии вы познакомились с основными шагами по настройке систем безопасности ОС Astra Linux Special Edition в соответствии с рекомендациями, изложенными в «CIS Debian Family Linux Benchmark». Из всей последовательности шагов важно выделить следующие действия:

  • Проверка состояния систем защиты ОС до и после настройки.

  • Настройка систем безопасности путем присваивания соответствующих значений переменным роли astra.hardening.cis.