Формула remote-access-groups-ssh-formula

Формула используется для установки и настройки ограничений доступа к удаленному устройству через SSH в зависимости от версии Astra Linux.

Формула устанавливает и настраивает специализированный пакет osmax-ira-openssh, адаптированный под конкретную версию ОС (Astra Linux 1.7 или 1.8), обеспечивая совместимость с системными библиотеками, политиками безопасности и требованиями к аутентификации.

Особенности обработки формулы с учетом версии ОС

Начиная с версии 1.19.0, пакеты SSH разделены по версиям Astra Linux:

  • Astra Linux 1.7 → osmax-ira-openssh-astra1.7;

  • Astra Linux 1.8 → osmax-ira-openssh-astra1.8.

Формула автоматически выбирает нужный пакет на основе версии ОС (через grains.osmajorrelease).

В формуле указывается базовое имя пакета (name: osmax-ira-openssh), без указания версии ОС. Параметр pkg.name в pillar не обязателен: по умолчанию формула использует name: osmax-ira-openssh и автоматически дополняет его суффиксом -astra<версия>.

В пользовательском интерфейсе «Кабинет администратора» при заполнении содержимого pillar указывать имя пакета не требуется. Пример:

{
  "lookup": {
    "pkg": {
      "version": "1.4.5"
    },
    "sshd_config": {
      "Port": "222"
    },
    "remote_access_groups": [
      "Domain Users"
    ],
    "passwordauthentication_ips": [
      "*"
    ]
  }
}

Доступные состояния

Состояние remote-access-groups-ssh

Мета-состояние, которое включает в себя все необходимые действия для настройки SSH-доступа с ограничениями.

Автоматически:

  • устанавливает пакет osmax-ira-openssh (с указанием версии, если задана);

  • создает файлы /opt/osmax/sshd/etc/ssh/sshd_config, /opt/osmax/sshd/etc/ssh/sshd_config.d/match, /opt/osmax/sshd/etc/ssh/sshd_config.d/custom, /etc/pam.d/osmax-ira-sshd-access-groups, /etc/access-groups-ssh;

  • включает и запускает сервис osmax-ira-sshd.

Зависит от remote-access-groups-ssh.package через include.

Состояние remote-access-groups-ssh.package

Устанавливает пакет osmax-ira-openssh, создает файлы конфигурации (sshd_config, match, custom, osmax-ira-sshd-access-groups, access-groups-ssh) и запускает сервис.

Состояние remote-access-groups-ssh.clean

Мета-состояние, отменяющее все действия remote-access-groups-ssh в обратном порядке:

  • останавливает сервис osmax-ira-sshd;

  • удаляет файлы конфигурации /opt/osmax/sshd/etc/ssh/sshd_config, /opt/osmax/sshd/etc/ssh/sshd_config.d/match,/opt/osmax/sshd/etc/ssh/sshd_config.d/custom, /etc/pam.d/osmax-ira-sshd-access-groups, /etc/access-groups-ssh;

  • удаляет установленный пакет osmax-ira-openssh.

Зависит от remote-access-groups-ssh.package.clean через include.

Состояние remote-access-groups-ssh.package.clean

Удаляет пакет osmax-ira-openssh и файлы конфигурации /opt/osmax/sshd/etc/ssh/sshd_config, /opt/osmax/sshd/etc/ssh/sshd_config.d/match, /opt/osmax/sshd/etc/ssh/sshd_config.d/custom, /etc/pam.d/osmax-ira-sshd-access-groups, /etc/access-groups-ssh.

Пример файла pillar.example

remote-access-groups-ssh:
  # Переопределите значение map.jinja
  lookup:
    # Задайте параметры пакета
    pkg:
      # Формула использует значение по умолчанию: osmax-ira-openssh
      # На Astra Linux автоматически заменяется на osmax-ira-openssh-astra1.7 или -astra1.8
      name: osmax-ira-openssh
      # Укажите конкретную версию пакета. Если значение представляет собой пустую строку, используется последняя версия
      version: '1.3.0'
    # Задайте параметры ssh:
    # Игнорировать/не игнорировать группы доступа при аутентификации. Значение true указывает на то, что группы
    # доступа не будут учитываться при определении прав доступа
    access_groups_ignore: false
    # IP-адреса или диапазоны IP-адресов, для которых будет использоваться аутентификация Kerberos при подключении по SSH
    kerberosauthentication_ips: ['*']
    # IP-адреса, для которых разрешена аутентификация по паролю при подключении по SSH
    passwordauthentication_ips: ['*']
    # IP-адреса, для которых будет использоваться аутентификация GSSAPI при подключении по SSH
    gssapiauthentication_ips: ['*']
    # IP-адреса, для которых разрешена аутентификация с использованием открытых ключей при подключении по SSH
    pubkeyauthentication_ips: ['*']
    # IP-адреса, для которых разрешена интерактивная аутентификация при подключении по SSH
    kbdinteractiveauthentication_ips: ['*']
    # Задайте группы доступа к ssh
    remote_access_groups: []
    # Дополнительные настройки, связанные с пользовательской настройкой SSH
    config_customize:
      # Время ожидания (таймаут) для неактивного канала связи
      ChannelTimeout: '*=5m'
      # Время ожидания (таймаут) для неиспользуемых соединений
      UnusedConnectionTimeout: '5m'
    # Настройки конфигурации SSH-сервера
    sshd_config:
      # Порт, на котором будет работать SSH-сервер
      Port: 22

По умолчанию все подключения заблокированы — пустой файл правил блокирует все подключения. Для каждого из правил аутентификации по IP-адресу можно задать следующие директивы:

  • * — разрешение для всех адресов;

Также для IP-адреса можно добавить подсеть. Для этого необходимо дополнительно указать символ /. Например, */16 — разрешение для всех адресов в подсети 16.

  • !<IP-адрес> — запрет доступа для конкретного адреса;

  • <IP-адрес> — разрешение для конкретного адреса.

Также можно задать несколько директив, но в таком случае при подключении правила будут проверяться по очереди до первого подходящего, например:

!199.35.209.1
*

Данный набор директив разрешит определённый вид аутентификации для всех адресов кроме 199.35.209.1

В параметре remote_access_groups рекомендуется указывать доменные группы пользователей в формате, поддерживаемом Samba: DOMAIN\username. Например, для группы пользователей Local Users в домене localdomain указание группы должно выглядеть следующим образом: LOCALDOMAIN\Local Users.

Также если параметры конфигурации задаются в файле со специальным форматированием, необходимо экранировать спецсимволы. Например, для формата JSON экранируется символ \: LOCALDOMAIN\\Local Users.