Перейти к содержимому
Аладдин Р.Д.
Библиотека

Как FreeIPA защищает SSH от MITM-атак

БиблиотекаБиблиотека

2025

Как FreeIPA защищает SSH от MITM-атак

Статья в блоге Группы Астра на Хабре посвящена механизмам защиты протокола SSH от атак типа “человек посередине” (MITM) с использованием возможностей домена FreeIPA. Автор начинает с описания алгоритма Диффи-Хеллмана, лежащего в основе SSH: он позволяет согласовать общий сессионный ключ по открытому каналу, но уязвим для MITM-атак, так как не проверяет подлинность сторон. В протоколе SSH эта проблема решается с помощью цифровых подписей сервера, которые клиент проверяет по файлу known_hosts. Однако в больших инфраструктурах централизованное управление этими файлами становится серьёзной проблемой, которую и решает FreeIPA.

Централизованная проверка хостов через SSSD

В домене FreeIPA открытые SSH-ключи всех хостов хранятся в LDAP-каталоге как атрибуты учётных записей компьютеров (ipaSshPubKey). При вводе компьютера в домен утилита ipa-client-install автоматически загружает его ключи. На клиентской стороне служба SSSD через директиву ProxyCommand в конфигурации SSH перенаправляет запросы на проверку ключа хоста к утилите sss_ssh_knownhostsproxy. Она извлекает актуальный открытый ключ из кэша SSSD (полученного от LDAP) и сохраняет его в глобальный файл known_hosts (/var/lib/sss/pubconf/known_hosts). Если ключ не найден или не совпадает, соединение отклоняется, что сводит к минимуму возможность MITM-атак без необходимости ручной проверки отпечатков ключей.

Альтернативный механизм: проверка через DNS

Для компьютеров, не являющихся участниками домена, FreeIPA предлагает механизм SSHFP-записей в DNS. На основе открытых ключей из LDAP автоматически генерируются отпечатки (fingerprints) и добавляются в DNS-зону. Если на клиенте включена директива VerifyHostKeyDNS, SSH-клиент автоматически проверяет ключ сервера через DNS при первом подключении. При корректно настроенном DNSSEC добавление ключа в known_hosts происходит полностью автоматически и безопасно.

Аутентификация пользователей по SSH-ключам

Помимо проверки хостов, FreeIPA также централизует управление пользовательскими SSH-ключами. Пользователь может загрузить свой открытый ключ в атрибут ipaSshPubKey своей учётной записи через ipa user-mod. На стороне сервера директива AuthorizedKeysCommand в /etc/ssh/sshd_config указывает на утилиту sss_ssh_authorizedkeys, которая извлекает ключ пользователя из кэша SSSD. Это позволяет реализовать удобный бесключевой доступ (при использовании Kerberos) ко всем хостам домена без необходимости вручную распространять ключи.

Методы аутентификации в SSH

В статье также рассматриваются основные методы аутентификации, доступные в OpenSSH в домене FreeIPA:

gssapi-with-mic (приоритетный): прозрачная аутентификация через Kerberos V5 при наличии действующего TGT-билета. Для получения TGT в удалённой сессии рекомендуется использовать параметр -K.

publickey: аутентификация по централизованно управляемым SSH-ключам (без пароля), работает при отсутствии TGT.

password: наименее безопасный метод, при котором пароль передаётся на сервер (хоть и по зашифрованному каналу). Его использование в домене рекомендуется минимизировать.

Автор резюмирует, что интеграция SSH с FreeIPA через SSSD значительно повышает безопасность и удобство администрирования Linux-инфраструктур. Он постарался раскрыть процессы взаимодействия данных технологий, в том числе с точки зрения информационной безопасности. Их совместные возможности позволяют даже заядлым Windows-администраторам с интересом взглянуть в сторону ОС Linux.

Это краткая аннотация статьи, полную версию читайте в первоисточнике.


Читать полную версию

Первоисточник: Хабр (блог Группа Астра), 2025

Эксперт: Вадим Фещенко, Группа Астра