Использование host-config для настройки региона¶
host-config может использоваться для внесения специфических настроек в конфигурацию ОС узлов. Это можно делать как перед развёртыванием региона, так и после. Если вы выполняете конфигурацию перед развёртыванием региона, вы можете не запускать пайплайн после внесения изменений в host-config.yml, они будут применены при последующем запуске основного пайплайна по развёртыванию региона.
Файл host-config находится в репозитории региона по пути host_config/host-config.yml. Если он отсутствует, вы можете создать его самостоятельно.
Предупреждение
Задача host-config взаимодействует с системной утилитой sysctl. Конфликты между параметрами разрешаются с учётом приоритета конфигурационных файлов. Чтобы избежать нештатного поведения, перед запуском задачи host-config проверьте актуальные конфигурационные файлы sysctl на наличие параметров, которые пересекаются с настройками, вносимыми этой задачей.
Настройка NTP в регионе¶
Для выполнения настройки протокола синхронизации времени NTP на узлах региона выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки с указанием временной зоны и IP-адреса NTP-сервера:ntp_enabled: true ntp_timezone: Europe/Moscow ntp_servers: - <IP_address>
Либо вместо списка отдельных NTP-серверов (
ntp_servers) можете указать пулы NTP-серверов с помощью параметраntp_pools:ntp_enabled: true ntp_timezone: Europe/Moscow ntp_pools: - 0.pool.ntp.org - 1.pool.ntp.org
Если заданы оба параметра, приоритет имеет
ntp_servers.Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки настройки NTP:
Зайдите на любой узел региона по протоколу SSH.
Выполните команду
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 на узлах региона выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации DNS:dns_enabled: true dns_servers: - <IP_address2> - <IP_address3> dns_dnssec: false dns_domains: ["cloud.itkey.com"]
Назначение параметров:
dns_enabled— включает настройку DNS на узлах региона.dns_servers— список IP-адресов DNS-серверов.dns_dnssec— включает (true) или отключает (false) проверку подлинности DNS-ответов по технологии DNSSEC. Значение по умолчанию —false.dns_domains— список доменов поиска, добавляемых в конфигурацию распознавателя имён (параметрsearchв файле/etc/resolv.conf).
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки настройки DNS:
Зайдите на любой узел региона по протоколу SSH.
Проверьте конфигурацию DNS на узле, выполнив команду
cat /etc/resolv.conf:$ cat /etc/resolv.conf nameserver <IP_address2> nameserver <IP_address3> search cloud.itkey.com
Отключение истории команд¶
Отключение истории команд позволяет исключить хранение учетных записей и паролей в истории команд пользователей в открытом виде. Для отключения истории команд выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true disable_history: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки отключения истории команд:
Зайдите на любой узел региона по протоколу SSH.
Введите команду
historyи убедитесь, что вывод отсутствует.
Отключение внешних накопителей¶
Отключение поддержки внешних накопителей позволяет запретить использование внешних USB-накопителей. Для настройки выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true disable_usb_storage: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки отключения внешних накопителей:
Зайдите на любой узел региона по протоколу SSH.
Введите команду
lsmod | grep usb_storage, чтобы убедиться, что в выводе отсутствует значениеusb_storage.
Удаление группы wheel из файла /etc/sudoers¶
Для удаления группы wheel из списка привилегированных пользователей выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true remove_wheel_from_sudoers: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки:
Зайдите на любой узел региона по протоколу SSH.
Введите команду
cat /etc/sudoersи убедитесь, что строка# %wheel ALL=(ALL) ALLзакомментирована (начинается с#).
Установка привилегий доступа к файлам¶
Данная настройка устанавливает соответствующие привилегии доступа к системным каталогам, конфигурационным файлам, которые используются для функционирования сервисов удаленного доступа, и пользовательским директориям.
Примечание
Настройка поддерживается только для Sberlinux.
Для установки привилегий доступа к файлам выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true setting_file_permissions: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка безопасного текстового редактора¶
Данная настройка ограничивает выполнение потенциально опасных операций через текстовый редактор (например, запуск внешних команд). Используемый редактор унаследует переменные окружения PAM (Pluggable Authentication Modules), которые задаются в файле /etc/security/pam_env.conf.
Для настройки безопасного текстового редактора для пользователя, получившего дополнительные привилегии через команду sudo, выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true copy_pam_env: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка политики паролей и учётных записей (PAM)¶
Данная настройка применяет усиленную политику управления паролями и учётными записями через PAM. Настройка задаёт требования к сложности и сроку действия паролей, блокировку учётной записи после серии неудачных попыток входа, а также параметры файла /etc/login.defs.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true enable_pam_hardening: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка формата истории команд и автоматического завершения сеанса¶
Данная настройка размещает на узлах региона скрипты в каталоге /etc/profile.d/, которые задают расширенный формат записи истории команд (с отметками времени и сведениями о пользователе) и автоматически завершают неактивные сеансы командной оболочки.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true enable_shell_profile_hardening: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Исключение записей PROCTITLE из журнала аудита¶
Данная настройка добавляет правило аудита /etc/audit/rules.d/20-proctitle-exclude.rules, которое исключает записи типа PROCTITLE из журнала службы аудита auditd. Это уменьшает объём журнала и количество избыточных событий.
Примечание
Настройка имеет смысл при включённой службе аудита (параметр auditd_enabled, см. раздел Настройка аудита на серверах Linux/UNIX-подобных систем).
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true enable_audit_proctitle_exclude_rule: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка фильтрации системного журнала (rsyslog)¶
Данная настройка изменяет правило записи в файл /var/log/messages в конфигурации службы rsyslog, исключая из него сообщения почтовой подсистемы, аутентификации (authpriv), планировщика cron и локальных категорий (local0–local7). Правило задаётся параметром rsyslog_messages_rule и при необходимости может быть переопределено.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true enable_rsyslog_hardening: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Усиление конфигурации SSH-сервера¶
Данная настройка применяет усиленную конфигурацию SSH-сервера в файле /etc/ssh/sshd_config: запрет входа под пользователем root, ограничение переадресации портов и туннелирования, современные алгоритмы шифрования, обмена ключами и контроля целостности (MAC). Базовый набор параметров можно дополнить или переопределить с помощью параметра sshd_custom_parameters.
Примечание
Эта настройка отличается от раздела Настройка завершения сеансов подключения к серверам: тот управляет только таймаутами сеанса (параметр sshd_enabled), тогда как enable_sshd_hardening формирует конфигурацию SSH-сервера целиком.
Предупреждение
Настройка полностью перезаписывает файл /etc/ssh/sshd_config. Перед применением убедитесь, что используемый способ доступа (например, вход по ключу) не будет заблокирован новой конфигурацией.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строки конфигурации:security_hardening: true enable_sshd_hardening: true sshd_custom_parameters: PermitRootLogin: "no" X11Forwarding: "no" ClientAliveInterval: "300"
Параметры из
sshd_custom_parametersобъединяются с набором параметров по умолчанию; при совпадении имён приоритет имеют значения изsshd_custom_parameters. Если переопределять параметры не требуется, оставьтеsshd_custom_parametersпустым.Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка параметров безопасности ядра¶
Данная настройка применяет на узлах региона набор параметров безопасности ядра Linux через утилиту sysctl. При включении функции создаётся конфигурационный файл /etc/sysctl.d/99-keystack.conf со следующими группами параметров:
Защита сетевого стека — включение TCP SYN cookies, запрет маршрутизации от источника (
accept_source_route) и ICMP-перенаправлений (accept_redirects,send_redirects,secure_redirects), включение обратной фильтрации пути (rp_filter), игнорирование широковещательных и некорректных ICMP-ответов.Ограничение доступа к данным ядра — ограничение чтения буфера ядра (
kernel.dmesg_restrict) и вывода адресов ядра (kernel.kptr_restrict), усиление JIT-компиляции BPF и запрет непривилегированного BPF, рандомизация адресного пространства (kernel.randomize_va_space), ограничение подсистемы perf.Защита файловой системы — защита символьных и жёстких ссылок, именованных каналов и обычных файлов (
fs.protected_*), запрет создания дампов памяти для процессов с SUID (fs.suid_dumpable).
Для применения параметров безопасности ядра выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строку конфигурации:sysctl_hardening_enabled: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка параметров ядра для высоконагруженных систем¶
Для настройки работы платформы в режиме высокой нагрузки используется набор оптимизированных настроек ядра Linux, которые включают параметры сетевого стека, управления памятью и файловой системы, и системных лимитов на узлах региона. Данные настройки задаются с помощью параметра sysctl_enabled.
При включении функции на всех узлах региона создаются два конфигурационных файла:
/etc/sysctl.d/60-keystack.conf— параметры ядра (sysctl), включающие оптимизации сетевых соединений, управления памятью и лимитов conntrack./etc/security/limits.d/10-keystack.conf— лимиты на количество открытых файловых дескрипторов для пользователей системы.
Для включения настройки параметров ядра выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строку конфигурации:sysctl_enabled: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Для проверки применения настроек:
Зайдите на любой узел региона по протоколу SSH.
Убедитесь, что файлы конфигурации созданы:
$ 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
Проверьте, что параметры sysctl применены, выполнив команду:
$ sysctl net.core.somaxconn net.core.somaxconn = 16384
Настройка GRUB¶
Для настройки GRUB выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
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"
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка аудита на серверах Linux/UNIX-подобных систем¶
В качестве службы аудита для безопасности в Linux/UNIX-подобных системах используется auditd (Audit Daemon). Auditd отслеживает системные события, связанные с безопасностью, а также регистрирует действия пользователей и системных процессов.
Для настройки аудита выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строку конфигурации:auditd_enabled: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Настройка завершения сеансов подключения к серверам¶
Для настройки завершения сеансов подключения к серверам выполните следующие действия:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строку конфигурации:sshd_enabled: true client_alive_interval: 15 client_alive_count_max: 20 #5 min channel_timeout: 60 #1 min
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Ограничение прав sudo для служебного пользователя kolla¶
Данная настройка ограничивает права sudo служебного пользователя kolla минимально необходимым набором команд в файлах каталога /etc/sudoers.d. Это реализует принцип наименьших привилегий для учётной записи, используемой при развёртывании и обслуживании платформы.
Примечание
Настройка не требует включения параметра security_hardening.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
host_config/host-config.ymlи добавьте в него строку конфигурации:kolla_sudo_rule_enabled: true
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите вручную задачу host-config и дождитесь её завершения.
Также вы можете настроить регулярное выполнение применения конфигурации узлов с помощью Pipeline Schedules. Подробнее см. в разделе Применение конфигурации узлов.