Использование host-config для настройки региона

host-config может использоваться для внесения специфических настроек в конфигурацию ОС узлов. Это можно делать как перед развёртыванием региона, так и после. Если вы выполняете конфигурацию перед развёртыванием региона, вы можете не запускать пайплайн после внесения изменений в host-config.yml, они будут применены при последующем запуске основного пайплайна по развёртыванию региона.

Файл host-config находится в репозитории региона по пути host_config/host-config.yml. Если он отсутствует, вы можете создать его самостоятельно.

Настройка NTP в регионе

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки с указанием временной зоны и IP-адреса NTP-сервера:

    ntp_enabled: true
    ntp_timezone: Europe/Moscow
    ntp_servers:
      - <IP_address>
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки настройки NTP:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Выполните команду timedatectl:

    $ timedatectl
                   Local time: Tue 2024-09-17 10:36:10 MSK
               Universal time: Tue 2024-09-17 07:36:10 UTC
                     RTC time: Tue 2024-09-17 07:36:10
                    Time zone: Europe/Moscow (MSK, +0300)
    System clock synchronized: yes
                  NTP service: active
              RTC in local TZ: no
    

    Убедитесь, что включен параметр System clock synchronized, отображаются правильные время и зона.

Настройка DNS в регионе

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации DNS:

    dns_enabled: true
    dns_servers:
    - <IP_address2>
    - <IP_address3>
    dns_dnssec: false
    dns_domains: ["cloud.itkey.com"]
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки настройки DNS:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Проверьте конфигурацию DNS на узле, выполнив команду cat /etc/resolv.conf:

    $ cat /etc/resolv.conf
    nameserver <IP_address2>
    nameserver <IP_address3>
    search cloud.itkey.com
    

Отключение истории команд

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    security_hardening: true
    disable_history: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки отключения истории команд:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Введите команду history и убедитесь, что вывод отсутствует.

Отключение внешних накопителей

Отключение поддержки внешних накопителей позволяет запретить использование внешних USB-накопителей. Для настройки выполните следующие действия:

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    security_hardening: true
    disable_usb_storage: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки отключения внешних накопителей:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Введите команду lsmod | grep usb_storage, чтобы убедиться, что в выводе отсутствует значение usb_storage.

Удаление группы wheel из файла /etc/sudoers

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    security_hardening: true
    remove_wheel_from_sudoers: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Введите команду cat /etc/sudoers и убедитесь, что строка # %wheel ALL=(ALL) ALL закомментирована (начинается с #).

Установка привилегий доступа к файлам

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

Примечание

Настройка поддерживается только для Sberlinux.

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    security_hardening: true
    setting_file_permissions: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Настройка безопасного текстового редактора

Данная настройка ограничивает выполнение потенциально опасных операций через текстовый редактор (например, запуск внешних команд). Используемый редактор унаследует переменные окружения PAM (Pluggable Authentication Modules), которые задаются в файле /etc/security/pam_env.conf.

Для настройки безопасного текстового редактора для пользователя, получившего дополнительные привилегии через команду sudo, выполните следующие действия:

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    security_hardening: true
    copy_pam_env: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Настройка соответствующих модулей ядра

Данная настройка включает применение набора параметров безопасности для ядра Linux через утилиту sysctl.

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строку конфигурации:

    sysctl_hardening_enabled: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Настройка параметров ядра для высоконагруженных систем

Для настройки работы платформы в режиме высокой нагрузки используется набор оптимизированных настроек ядра Linux, которые включают параметры сетевого стека, управления памятью и файловой системы, и системных лимитов на узлах региона. Данные настройки задаются с помощью параметра sysctl_enabled.

При включении функции на всех узлах региона создаются два конфигурационных файла:

  • /etc/sysctl.d/60-keystack.conf — параметры ядра (sysctl), включающие оптимизации сетевых соединений, управления памятью и лимитов conntrack.

  • /etc/security/limits.d/10-keystack.conf — лимиты на количество открытых файловых дескрипторов для пользователей системы.

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строку конфигурации:

    sysctl_enabled: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Для проверки применения настроек:

  1. Зайдите на любой узел региона по протоколу SSH.

  2. Убедитесь, что файлы конфигурации созданы:

    $ ls -la /etc/sysctl.d/60-keystack.conf
    -rw-r--r-- 1 root root 2048 Dec 24 10:00 /etc/sysctl.d/60-keystack.conf
    
    $ ls -la /etc/security/limits.d/10-keystack.conf
    -rw-r--r-- 1 root root 140 Dec 24 10:00 /etc/security/limits.d/10-keystack.conf
    
  3. Проверьте, что параметры sysctl применены, выполнив команду:

    $ sysctl net.core.somaxconn
    net.core.somaxconn = 16384
    

Настройка GRUB

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строки конфигурации:

    grub_config_enabled: true
    grub_cmdline_options:
      - "processor.max_cstate=1" # cpu performance option
      - "intel_idle.max_cstate=1" # cpu performance option
      - "idle=poll" # cpu performance option
      - "hugepagesz=1G" # hugepages option
      - "audit=1" # paranoic security option
      - "ipv6.disable=1" # paranoic security option
      - "tsx=auto" # paranoic security option
      - "slab_nomerge" # paranoic security option
      - "randomize_kstack_offset=1" # paranoic security option
      # - "custom_option"
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Настройка аудита на серверах Linux/UNIX-подобных систем

В качестве службы аудита для безопасности в Linux/UNIX-подобных системах используется auditd (Audit Daemon). Auditd отслеживает системные события, связанные с безопасностью, а также логирует действия пользователей и системных процессов.

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строку конфигурации:

    auditd_enabled: true
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.

Настройка завершения сеансов подключения к серверам

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

  1. В файл host_config/host-config.yml в репозитории региона добавьте строку конфигурации:

    sshd_enabled: true
    client_alive_interval: 15
    client_alive_count_max: 20 #5 min
    channel_timeout: 60 #1 min
    
  2. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  3. Запустите пайплайн, нажав кнопку New pipeline.

  4. Дождитесь завершения выполнения задач на шаге setup.

  5. Запустите задачу bootstrap-servers. Дождитесь завершения задачи host-config.