Поделиться через


Что такое элемент управления SSH Posture?

SSH Posture Control позволяет выполнять аудит и настройку состояния безопасности сервера SSH в поддерживаемых дистрибутивах Linux, включая Ubuntu, Red Hat, Azure Linux и многое другое. SSH Posture Control легко интегрируется со службами управления Azure (политика, конфигурация компьютера), чтобы вы могли:

  • обеспечение соответствия требованиям стандартам sshd в отрасли или организации
  • Уменьшение атак на основе удаленного управления на основе SSHD
  • убедитесь, что согласованная настройка sshd в вашем флоте для обеспечения безопасности и производительности

снимок экрана со списком соответствующих проверок SSH

Чтобы помочь вам продемонстрировать соответствие аудиторам (и помочь вам принять меры, где это необходимо), каждая проверка соответствия включает доказательства с помощью причин поле, указывающее, как было определено соответствие или несоответствие.

Можно настроить параметры sshd (номер порта, разрешенные группы и т. д.) или использовать значения по умолчанию политики, которые соответствуют базовой конфигурации безопасности Azure для Linux.

Документация по началу работы

  • краткое руководство. Чтобы щелкнуть практические инструкции, см. краткое руководство. Применение SSH Posture Control на тестовом компьютере.
  • Обзор и справочные: для концептуальной информации, справки и часто задаваемых вопросов см. этой статье.

Выбор поведения аудита только для аудита и настройки

При назначении политики управления posture SSH можно выбрать поведение только аудита (ака "Аудит") или поведение аудита и настройки (ака "Настройка").

Определение политики Эффект политики Azure Заметки о том, что ожидать
поведение только для аудита **Audit** SSH Posture Control on Linux machines auditIfNotExists Политика включает более строгие параметры по сравнению с множеством популярных системных образов. Например, отказ в доступе к корневому SSH. Соответственно, ожидается, что несоответствующие штатам сообщили.
поведение аудита и настройки **Configure** SSH Posture Control on Linux machines deployIfNotExists Как описано выше, вы можете увидеть, несоответствующие штатам первоначально сообщили. Впоследствии компьютеры будут перенастроены для соответствия политике, что приведет к состояниям соответствия требованиям.

Для существующих компьютеров администраторы обычно начинают с поведения только аудита, чтобы определить существующее состояние и обнаружить зависимости, такие как учетные записи, разрешенные для автоматизации систем. После сравнения существующего парка с параметрами управления постурами SSH вы решите, какие параметры управления posture SSH необходимо настроить. После этого анализа и планирования вы перейдете к поведению аудита и настройки (с безопасными методами развертывания, такими как кольца).

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

Осторожность

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

Примеры случайной блокировки себя включают:

  • Примененные параметры авторизации (сочетание allowUsers,denyGroups,permitRootLoginи т. д.) не разрешают необходимые имена входа.
  • port, настроенный для SSHD, блокируется другими элементами управления в вашей среде (политики SELinux, правила брандмауэра узла, правила сетевого брандмауэра и т. д.)
    • Обратите внимание, что многие дистрибутивы семейства Red Hat имеют политики SELinux по умолчанию, которые блокируют sshd от использования портов, отличных от 22.
    • Чтобы избежать превышения границ группы предприятия, SSH Posture Control настроен только sshd. В настоящее время он не пытается изменить политики SELinux на компьютере, правила брандмауэра и т. д. для размещения настроенного порта sshd. Если вы хотите обсудить эти сценарии с нами, обратитесь к нам (см. дополнительные ресурсы ниже).

Область управления постуром SSH: правила, значения по умолчанию и настройка

В следующей таблице перечислены элементы, которые можно проверить или настроить с помощью элемента управления posture SSH. Каждое из них называется правилом.

Каждое правило имеет значение конфигурации по умолчанию, выровненное с базовым уровнем безопасности Azure для Linux.

Большинство правил можно задать пользовательские значения с помощью параметров назначения политики для аудита или настройки и аудита. Например, если стандарт в организации использует порт 1111 (а не 22) для SSHD, необходимо задать соответствующий параметр в назначении политики. Эти параметры имеют идентификаторы, включенные в таблицу ниже. Как правило, короткое имя параметра используется программным способом (например, с az policy assignment create --params ...), а более длинное отображаемое имя параметра используется в рабочих процессах портала Azure.

При настройке значений необходимо обеспечить значения, совместимые с sshd. Например, allowGroups принимает разделенный пробелом список шаблонов имен групп. Дополнительные сведения см. на страницеsshd_config человека. Справочник по sshd_config также полезен для понимания других действий sshd, таких как способ разрешить и запретить списков пересекаться.

Заметка

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

Имя правила Значение по умолчанию Имя параметра Отображаемое имя параметра
Убедитесь, что настроены разрешения на /etc/ssh/sshd_config 600 <сноски 1> Разрешения доступа для sshd_config
Убедитесь, что задано значение IgnoreRhosts да ignoreHosts Игнорировать rhosts и shosts
Убедитесь, что logLevel задан ИНФОРМАЦИЯ logLevel Уровень детализации журнала
Убедитесь, что задан параметр MaxAuthTries 6 maxAuthTries Максимальное количество попыток проверки подлинности
Убедитесь, что разрешенные пользователи для доступа по протоколу SSH настроены @ <см. сноску 5> allowUsers Разрешенные пользователи для SSH
Убедитесь, что пользователи, которым запрещен доступ SSH, настроены корень denyUsers Запрещенные пользователи для SSH
Убедитесь, что разрешенные группы для доступа по протоколу SSH настроены * allowGroups Разрешенные группы для SSH
Убедитесь, что для доступа SSH настроены запрещенные группы корень denyGroups Запрещенные группы для SSH
Убедитесь, что задан параметр HostbasedAuthentication Нет hostBasedAuthentication Проверка подлинности на основе узла
Убедитесь, что параметр PermitRootLogin задан Нет permitRootLogin Может ли корневой каталог войти в систему с помощью SSH
Убедитесь, что задано значение PermitEmptyPasswords Нет permitEmptyPasswords Разрешает ли серверу вход в учетные записи с пустыми строками паролей
Убедитесь, что настроен clientAliveCountMax 0 clientAliveCountMax Количество клиентских живых сообщений, которые могут быть отправлены без SSHD, получая сообщения обратно от клиента.
Убедитесь, что задан clientAliveInterval 3600 clientAliveInterval Интервал времени ожидания в секундах, после которого, если данные не были получены от клиента, sshd отправит сообщение для запроса ответа
Убедитесь, что macs настроены <сноски 2> <сноски 3> Список доступных алгоритмов проверки подлинности сообщений (MAC)
Убедитесь, что баннер настроен <сноски 4> banner Содержимое файла баннера, отправляемого удаленному пользователю перед разрешением проверки подлинности
Убедитесь, что задан параметр PermitUserEnvironment Нет permitUserEnvironment Обрабатываются ли параметры ~/.ssh/environment= в ~/.ssh/authorized_keys
Убедитесь, что шифры настроены aes128-ctr,aes192-ctr,aes256-ctr ciphers Список разрешенных шифров
Убедитесь, что порт SSH настроен 22 port Порт SSH
Убедитесь, что используется протокол рекомендаций 2 <параметр> <параметр>

Сноски таблицы:

  1. accessPermissionsForSshdConfig

  2. messageAuthenticationCodeAlgorithms

  3. hmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com

  4. #######################################################################\n\nAuthorized access only!\n\nIf you are not authorized to access or use this system, disconnect now!\n\n#######################################################################\n

    1. Примечание. Это отображается для конечных пользователей следующим образом:
    #######################################################################
    
    Authorized access only!
    
    If you are not authorized to access or use this system, disconnect now!
    
    #######################################################################
    
  5. В allowUsers значение по умолчанию "@" представляет все учетные записи на компьютере

Дополнительные параметры политики (не sshd)

Эти дополнительные параметры политики доступны во время назначения политики. Они влияют на поведение назначения политики Azure, а не параметры sshd на компьютерах.

Имя Описание По умолчанию
Включение подключенных серверов Arc Выбрав этот параметр, вы соглашаетесь взиматься ежемесячно на подключенный компьютер Arc. ЛОЖНЫЙ
Эффект Включение или отключение выполнения этой политики <Зависит от выбора только аудита и настройки поведения>

Определения политик? Назначения политик? Гостевые назначения? Конфигурация компьютера? Как все это вписывается вместе?

Чтобы приступить к работе с SSH Posture Control, основное действие — создать назначение политики. Назначение политики связывает определение политики (например, "Audit SSH Posture Control for Linux") с областью области (например, "my_factory_3_resource_group").

При использовании системы вы столкнетесь с дополнительными типами ресурсов и терминологией, как описано ниже.

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

Описание
определения политики В службе политик абстрактные данные, описывающие кластер доступных действий аудита и /или конфигурации. Например, "Audit SSH Posture Control on Linux machines".
назначения политики Связывает абстрактное определение политики с конкретной областью, например группу ресурсов. Назначение политики может включать параметры и другие свойства, относящиеся к назначению.
конфигурация компьютера Служба Azure и агенты, обрабатывающие аудит и настройку конфигурации на уровне ОС.
назначение гостей Ресурс, который выступает в качестве трехсторонняя связь между назначением политики, компьютером и службой конфигурации компьютера. Политика создает и отслеживает ресурсы гостевого назначения по мере необходимости.
Дополнительные сведения о терминологии "гостевой" и "machine" см. в разделе Почему в местах отображаются термины "Гостевая конфигурация" и "Automanage"?
компьютер Компьютер с поддержкой Arc или виртуальная машина Azure.

Сведения о совместимости (дистрибутивы, реализации SSH-сервера и т. д.)

SSH Posture Control предназначен для основного сценария Linux с общим назначением одного длительного экземпляра SSH Server:

  • жизненный цикл которого управляется системой инициализации как системный
  • поведение которого выполняется с помощьюфайла sshd_config, согласованного с поведением sshd OpenSSH
  • чья эффективная конфигурация или состояние отображается sshd -T выходными данными, согласованными с поведением sshd OpenSSH

Для всех поддерживаемых дистрибутивов (см. ниже), это вариант использования сервера SSH по умолчанию.

В принципе, компьютер может иметь любое количество экземпляров сервера SSH, работающих с различными временем существования, на основе любого количества баз кода и их конфигурации из любого количества мест (файлы конфигурации, аргументы командной строки, параметры времени компиляции и т. д.). В настоящее время такие случаи недоступны для SSH Posture Control. Если вы заинтересованы в таких случаях в будущем, пожалуйста, свяжитесь с нами обсудить.

SSH Posture Control предназначен для использования в этих дистрибутивах Linux, поддерживаемых политикой Azure и конфигурацией компьютера, за исключением тех, которые были в расширенной поддержке во время разработки. В частности, следующие области относятся к 2024-06-05:

  • AlmaLinux 9
  • Amazon Linux 2
  • Ubuntu Server 20.04
  • Ubuntu Server 22.04
  • Debian 10
  • Debian 11
  • Debian 12
  • Azure Linux (CBL Mariner) 2
  • Oracle Linux 7
  • Oracle Linux 8
  • CentOS 7.3
  • CentOS 8
  • RHEL 7.4
  • RHEL 8
  • RHEL 9
  • Роки Linux 9
  • SLES 15

Вполне возможно, SSH Posture Control проверяется с конкретными широко используемыми системными композициями указанных выше дистрибутивов. Например, композиции образов ОС, опубликованные обработчиками дистрибутивов в коллекции Azure. Совместимость с любым определенным компьютером во время выполнения не может быть гарантирована, так как системные администраторы и построители образов могут удалять компоненты из ОС, создавать файловые системы только для чтения, блокировать действия агента с SELinux и т. д.

Совместимость с директивами sshd_config Include

SSH Posture Control пытается разместить и использовать директивы Include в sshd_config следующим образом:

  • Для действий аудита и чтения: следует использовать sshd -T, чтобы отразить чистую конфигурацию с точки зрения sshd, учитывая любые компоненты.
  • Для действий настройки и записи:
    • Если реализация sshd на компьютере поддерживает include, свяжите новый файл элемента управления posture SSH с sshd_config (как включение). Затем поместите все записи в связанный файл элемента управления posture SSH. Это повышает гигиену системы и трассировку изменений системы.
    • Если реализация sshd на компьютере не поддерживает директивы Include, напишите изменения конфигурации непосредственно в sshd_config.

Совместимость с директивами sshd_config Match

SSH Posture Control предназначен для аудита и настройки поведения основного SSHD. Он не пытается взаимодействовать с условными Match блоками (если таковыми), которые могут применять различные конфигурации sshd к определенным группам населения.

Как запросить результаты программным способом?

С помощью запросов Azure Resource Graph (ARG) можно интегрировать данные назначения и состояния в собственные рабочие процессы. В этих примерах используется Search-AzGraph в PowerShell для выполнения запроса ARG, но PowerShell не требуется. Вы можете использовать ARG из многих точек входа, включая портал Azure, Azure CLI, вызовы REST и т. д.

  1. На максимальной высоте суммирования можно получить количество компьютеров на контейнер состояния соответствия. Например:

    $machineCountsQuery = @'
    // SSH machine counts by compliance status
    guestconfigurationresources
    | where name contains "LinuxSshServerSecurityBaseline"
    | extend complianceStatus = tostring(properties.complianceStatus)
    | summarize machineCount = count() by complianceStatus
    '@
    
    Search-AzGraph -Query $machineCountsQuery
    
    <#
    Sample output from an environment with two machines:
    
    complianceStatus machineCount
    ---------------- ------------
    Pending                     1
    Compliant                   1
    #>
    
  2. Чтобы выполнить детализацию, чтобы увидеть общее состояние соответствия по компьютеру, можно использовать следующее:

    $machinePerRowQuery = @'
    // SSH machine level compliance
    guestconfigurationresources
    | where name contains "LinuxSshServerSecurityBaseline"
    | project 
     machine = split(properties.targetResourceId,'/')[-1],
     complianceStatus = properties.complianceStatus,
     lastComplianceStatusChecked = properties.lastComplianceStatusChecked
    '@
    
    Search-AzGraph -Query $machinePerRowQuery
    
    <#
    Sample output:
    
    machine     complianceStatus lastComplianceStatusChecked
    -------     ---------------- ---------------------------
    sshdemovm01 Compliant        2/15/2024 11:07:21 PM
    sshdemovm02 Pending          1/1/0001 12:00:00 AM
    #>
    
  3. Для детализации до сведений о параметрах можно использовать следующее:

    $settingPerRowQuery = @'
    // SSH rule level detail
    GuestConfigurationResources
    | where name contains "LinuxSshServerSecurityBaseline"
    | project report = properties.latestAssignmentReport,
     machine = split(properties.targetResourceId,'/')[-1],
     lastComplianceStatusChecked=properties.lastComplianceStatusChecked
    | mv-expand report.resources
    | project machine,
     rule = report_resources.resourceId,
     ruleComplianceStatus = report_resources.complianceStatus,
     ruleComplianceReason = report_resources.reasons[0].phrase,
     lastComplianceStatusChecked
    '@
    
    Search-AzGraph $settingPerRowQuery
    
    <#
    Sample output:
    
    machine     rule                                                  ruleComplianceStatus     ruleComplianceReason
    -------     ---------------                                                  ------               ------
    sshdemovm01 Ensure permissions on /etc/ssh/sshd_config are configured        true            Access to '/etc/ssh/sshd_config' matches required ...
    sshdemovm01 Ensure SSH is configured to meet best practices (protocol 2)     true            'Protocol 2' is found uncommented in /etc/ssh/sshd_config
    sshdemovm01 Ensure SSH is configured to ignore rhosts                        true            The sshd service reports that 'ignorerhosts' is set to 'yes'
    sshdemovm01 Ensure SSH LogLevel is set to INFO                               true            The sshd service reports that 'loglevel' is set to 'INFO'
    sshdemovm01 Ensure SSH MaxAuthTries is configured                            true            The sshd service reports that 'maxauthtries' is set to '6'
    sshdemovm01 Ensure allowed users for SSH access are configured               true            The sshd service reports that 'allowusers' is set to '*@*'
    sshdemovm01 Ensure denied users for SSH are configured                       true            The sshd service reports that 'denyusers' is set to 'root'
    sshdemovm01 Ensure allowed groups for SSH are configured                     true            The sshd service reports that 'allowgroups' is set to '*'
    sshdemovm01 Ensure denied groups for SSH are configured                      true            The sshd service reports that 'denygroups' is set to 'root'
    sshdemovm01 Ensure SSH host-based authenticationis disabled                  true            The sshd service reports that 'hostbasedauthentication' is ...
    #>
    

Почему в местах отображаются термины "Гостевая конфигурация" и "Автоуправляемость"?

Служба конфигурации компьютера также называется гостевой конфигурацией и как конфигурации компьютера automanage. Эти имена могут возникнуть при взаимодействии со службами и документацией. Например:

  • В примерах запросов Azure Resource Graph в этой статье таблица данных называется guestconfigurationresources.
  • На портале Azure полезное представление для наблюдения результатов называется "Гостевые назначения".
  • На портале Azure при применении соответствующего расширения виртуальной машины для включения конфигурации компьютера заголовок расширения — automanage Machine Configuration.

Для целей SSH Posture Control нет значимых различий между "гостевым" и "компьютером". Доступны компьютеры с поддержкой Arc и виртуальные машины Azure.

Каковы идентификаторы встроенных определений политик?

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

displayName идентификатор
Аудит управления постурой SSH на компьютерах Linux /providers/Microsoft.Authorization/policyDefinitions/a8f3e6a6-dcd2-434c-b0f7-6f309ce913b4
Настройка SSH Posture Control на компьютерах Linux /providers/Microsoft.Authorization/policyDefinitions/e22a2f03-0534-4d10-8ea0-aa25a6113233
  • Чтобы получить поддержку с проблемами и т. д., обратитесь в службу поддержки Майкрософт
  • Чтобы предоставить отзыв, обсудить запросы на функции и т. д., обратитесь к linux_sec_config_mgmt@service.microsoft.com