Как 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
Эксперт: Вадим Фещенко, Группа Астра
