Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SSH Posture Control позволяет выполнять аудит и настройку состояния безопасности сервера SSH в поддерживаемых дистрибутивах Linux, включая Ubuntu, Red Hat, Azure Linux и многое другое. SSH Posture Control легко интегрируется со службами управления Azure (политика, конфигурация компьютера), чтобы вы могли:
- обеспечение соответствия требованиям стандартам sshd в отрасли или организации
- Уменьшение атак на основе удаленного управления на основе SSHD
- убедитесь, что согласованная настройка sshd в вашем флоте для обеспечения безопасности и производительности
Чтобы помочь вам продемонстрировать соответствие аудиторам (и помочь вам принять меры, где это необходимо), каждая проверка соответствия включает доказательства с помощью причин поле, указывающее, как было определено соответствие или несоответствие.
Можно настроить параметры 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
принимает разделенный пробелом список шаблонов имен групп. Дополнительные сведения см. на странице
Заметка
Чтобы сохранить макет таблицы, некоторые значения ячеек были перемещены в сноски под таблицей.
Имя правила | Значение по умолчанию | Имя параметра | Отображаемое имя параметра |
---|---|---|---|
Убедитесь, что настроены разрешения на /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 | <параметр> | <параметр> |
Сноски таблицы:
accessPermissionsForSshdConfig
messageAuthenticationCodeAlgorithms
hmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com
#######################################################################\n\nAuthorized access only!\n\nIf you are not authorized to access or use this system, disconnect now!\n\n#######################################################################\n
- Примечание. Это отображается для конечных пользователей следующим образом:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
В
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 и т. д.
На максимальной высоте суммирования можно получить количество компьютеров на контейнер состояния соответствия. Например:
$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 #>
Чтобы выполнить детализацию, чтобы увидеть общее состояние соответствия по компьютеру, можно использовать следующее:
$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 #>
Для детализации до сведений о параметрах можно использовать следующее:
$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