Привет, Хабр! Меня зовут Никита, и я из тех, кого принято называть импортозамещенцами. Я работаю в компании-интеграторе по ИБ «Экстрим безопасность», которая помогает заказчикам как с банальным PaperSec'ом, так и в вопросах результативного кибербеза. В нашем арсенале широкий спектр решений: начиная с SecretNet Studio, Dallas Lock, защищённых сетей, и до NGFW и продуктов из экосистемы Positive Technologies. И тем не менее, не смотря на ИБ-шный профиль компании, нам все-таки не удалось увернуться от тотального импортозамеса, который начался в 2022 году.
С каждым годом проблема санкций становилась все острее: сначала с рынка ушли зарубежные вендоры и патчи безопасности оказались за семью VPN'ами, затем начали протухать купленные ранее лицензии; поэтому отечественные компании, руководствуясь здравым смыслом требованиями регуляторов, стали пытаться внедрять Open Source решения. И тут совершенно неожиданно оказалось, что в стране не так много сильных Linux-админов, которых можно было бы легко переманивать набирать с рынка, просто поднимая зарплаты, что увеличило спрос на аутсорс. К нам стали обращаться за помощью наши постоянные заказчики, и руководство решилось впрягаться в такие проекты; а для инженеров начались темные интересные времена…

Учитывая текущий уровень информатизации, проекты импортозамещения затрагивают практически всех сотрудников предприятий и замещение рабочих станций становится одним из самых больших вызовов. Операционные системы и клиентское ПО — это первое, о чем задумываешься, когда слышишь про импортозамещение. К счастью на удивление, системным администраторам доступен огромный выбор софта: уже сейчас в реестре российского ПО более 50 записей только по классу «02.09 Операционные системы общего назначения», и с каждым годом их становится только больше.

Если посмотреть на отечественные ОС внимательнее, то можно заметить, что все они работают на ядре Linux. И это логично, поскольку ядро GNU Hurd, на которое многие возлагали надежды, не имеет перспектив, т. к. этот долгострой до сих пор не дошел до промышленной эксплуатации; реальной альтернативой могло бы стать, пожалуй, только ядро BSD, которое не получило широкого распространения исключительно из-за того, что долгое время было обременено судебными тяжбами. Определенный интерес создал выход KasperskyOS на рынок тонких клиентов в 2025 году; но его ядро все-таки не предназначено для систем общего назначения, поэтому больше про IoT и Embedded, а не серверы и рабочие станции. Вот и получается, что выбор огромный, но все новинки, как жены футболистов, — на одно лицо, — и по характеристикам недалеко ушли от Open Source, на базе которого они сделаны. Емкость рынка и окупаемость инноваций — не, не слышали!

И тут мы подобрались к самому интересному: когда предприятия начали массово замещать рабочие станции, причем не на бумаге, а в продуктивной среде, возникла необходимость управления всем этим хозяйством. Строгих нормативов по количеству компьютеров на голову сисадмина не существует, но когда их становится больше 100, голова почему-то начинает гудеть и, чтобы не засвистеть флягой столь же хорошо выполнять свою работу, поневоле задумаешься о внедрении средств автоматизации.
В экосистеме Microsoft эту задачу решают в первую очередь службы домена Active Directory, которые дают централизованную базу пользователей, единую точку аутентификации и позволяют через групповые политики автоматически настраивать тысячи компьютеров. А если этого окажется недостаточно, то всегда есть возможность добавить еще System Center Configuration Manager. А какой подорожник предлагают обитателям Linux-джунглей? Тема крайне непростая, но очень интересная, и начнем мы её с того, как обеспечить в Linux централизованную аутентификацию.
Разработчики Linux много чего скопипастили умело позаимствовали у UNIX, в том числе и подходы к аутентификации и авторизации. Еще со времен Sun Microsystems аутентификация пользователей была вынесена в отдельный стек подключаемых модулей (Pluggable Authentication Modules, PAM), что позволило расширять способы входа без изменения прикладных приложений. По аналогии с PAM были реализованы и модули NSS для доступа к базам пользователей, групп, хостов и других объектов. Столь удачным опытом не побрезговали вдохновиться и разработчики Windows: у них этот механизм реализован в локальном центре безопасности (Local Security Authority, LSA). Но как ты технологию не назови, а новый метод аутентификации в современную ОС может добавить любой разработчик.
Копнув поглубже в эту тему, удалось разобраться, что сразу с выходом PAM в 1995 году стал доступен модуль аутентификации, использующий службы сетевой информации (Network Information Service, NIS), которые долго и упорно разрабатывались самой Sun, а теперь уже практически не используются. Чуть позднее, в 1996 году появился модуль для аутентификации по протоколу Kerberos от Frank Cusack, а в 1998 году стал доступен модуль для аутентификации через LDAP от PADL Software. Но всё это были довольно примитивные модули, которые работали только с указанными серверами без возможности кэширования информации, что не соответствовало реальным сценариям использования компьютеров в Enterprise-сегменте.
Первой серьезной попыткой экспансии Linux в корпоративную среду стало создание службы Winbind в рамках проекта Samba. Как файловый сервер продукт был известен еще с 1992 года, но клиентская часть, позволяющая Linux-компьютеру быть полноправным участником домена NT4, стала доступна только к выходу Линолеума Windows ME, и по словам самих разработчиков, нужна была для переосмысления технологий Microsoft в рамках открытого кода.
После Winbind было еще несколько открытых и коммерческих попыток решения данной задачки, среди которых выделяют PBIS (BeyondTrust AD Bridge Open), Vintela (Vintela Authentication Services), Likewise (Likewise Enterprise) и Centrify; но все они успешно загнулись завершили свое развитие в 2009 году с выходом нативной службы SSSD, которая стала спин-оффом проекта FreeIPA. И тут, наверно, важно подчеркнуть принципиальное отличие SSSD: эта служба является собственным проектом разработчиков Linux, на который они делают теперь основную ставку.

Службу SSSD выгодно отличает в первую очередь современная архитектура: это не монолит, как у Winbind, который может зависнуть по любому поводу, а набор отдельных сервисов, за работой которых следит один общий наставник. Для взаимодействия между компонентами используется шина данных, написанная по мотивам передовой системы межпроцессного взаимодействия DBUS. В службе реализована двухуровневая система кэширования: локальный кэш из папки /var/lib/sss/db доступен только для собственных компонентов службы SSSD, а быстрый кэш из папки /var/lib/sss/mc не содержит чувствительных данных, поэтому открыт для всех клиентских библиотек, что обеспечивает многопоточный доступ к этой информации.

Взглянем на несколько функциональных преимуществ службы SSSD в сравнении с Winbind:
Динамическое обновление DNS-записей. Служба SSSD обеспечивает динамическое обновление DNS-записей через интеграцию с утилитой nsupdate. Вы сможете автоматически изменять A-, AAAA- и PTR-записи по инициативе компьютера, постоянно поддерживая информацию DNS в актуальном состоянии. В случае Winbind обновление DNS-записей возможно только средствами DHCP-сервера.
Нативный контроль доступа к хостам. Служба SSSD предоставляет нативный контроль доступа к хостам через тесную интеграцию с PAM-стеком. С помощью HBAC-правил (Host Based Access Control), которые настраиваются в домене FreeIPA, вы можете управлять доступом пользователей к любому приложению, если оно использует PAM-контекст для авторизации. Стоит отметить, что этот контроль доступен (в усеченном виде) даже когда компьютер находится в домене Active Directory, т. к. служба SSSD умеет извлекать объекты групповых политик из AD и транслировать отдельные параметры, такие как «Allow/deny log on locally», в свои HBAC-правила. В службе Winbind нет централизованного управления доступом и вам будут доступны только локальные параметры для PAM-модуля.
Является поставщиком правил для утилиты sudo. Служба SSSD поставляет правила для утилиты sudo, что позволяет делегировать права на выполнение отдельных команд от имени других пользователей, в том числе и root'а. Правила для утилиты sudo централизованно настраиваются в LDAP-каталоге, извлекаются утилитой sudo через NSS-модуль и кэшируются службой SSSD на диске.
Имеет тесную интеграцию с приложениями из проекта OpenSSH При установке SSSD на компьютере появляются утилиты sss_ssh_knownhostsproxy и sss_ssh_authorizedkeys, с помощью которых клиент и сервер OpenSSH в момент удаленного подключения извлекают из домена открытые ключи для проведения взаимной аутентификации, что исключает возможность кибератак методом «человек посередине» (Man in the middle, MITM).
Поддержка autofs. Служба SSSD поддерживает работу с файловой системой autofs и позволяет настроить на рабочих станциях пространство имен для общего доступа к файлам, что в Windows называется DFS Namespace.
Продвинутый оффлайн-режим. У службы SSSD более продвинутый оффлайн-режим, который позволяет не только обеспечить вход пользователей в автономном режиме, но и получение TGT-билета при выходе в онлайн. При этом пароль пользователя хранится в связке ключей Linux, откуда его не сможет выцарапать даже root, если запрещен системный вызов ptrace.
Защита аутентификации по технологии Kerberos Armoring. Kerberos Armoring позволяет устранить угрозу кибератак методом полного перебора (brute force). В мире Linux эту технологию обычно называют FAST (Flexible Authentication Secure Tunneling), и она позволяет дополнительно шифровать данные Kerberos-запросов с помощью сессионных ключей компьютера. При использовании Kerberos Armoring взломать ответ сервера с TGT-билетом будет практически невозможно, даже если пользователь использует очень простой пароль.
Поддержка двухфакторной аутентификации HOTP и TOTP. Еще SSSD поддерживает двухфакторную аутентификацию по одноразовым паролям HOTP и TOTP, если компьютер находится в домене FreeIPA. Собственно, возможность реализации этой функции напрямую связана с поддержкой FAST.
Правильное сопоставление идентификаторов безопасности. Ну и немаловажно, что служба SSSD реализует правильное сопоставление идентификаторов безопасности Windows (SID) с идентификаторами безопасности операционных систем POSIX (UID и GID), что обеспечивает согласованность значений на всех хостах при работе в домене Active Directory. При использовании службы Winbind у одного и того же пользователя на разных хостах могли быть совершенно разные идентификаторы.
Если всё вышеперечисленное перевести на простой язык, то это вам не какой-то ржавый жигуль раритетный Fiat 124, а вполне современный УАЗ-3163.

Благодаря указанным выше причинам служба SSSD из проекта FreeIPA ныне стала мировым лидером в корпоративном сегменте, и ее рекомендуют все отечественные разработчики, будь то ALD Pro на базе FreeIPA или Эллес, у которой под капотом Samba. Даже в случае Avanpost DS, где разработка ведется практически с нуля, в качестве клиентской части предлагается SSSD. Кэширование учетных данных и политик, беспрецедентный уровень безопасности, надежность и отказоустойчивость в крупных инсталляциях, — это именно те качества, которые нужны современным предприятиям для обеспечения работы ИТ-инфраструктуры в режиме постоянной доступности, и служба SSSD успешно справляется с этими вызовами.
Комментарии (14)

Granulex
05.05.2026 07:49Честная история провала коммерческих решений – редко кто её рассказывает без умолчаний. Маленькая ложка дёгтя к "беспрецедентному уровню безопасности": offline_credentials_expiration = 0 по умолчанию означает, что уволенный сотрудник с ноутбуком без VPN аутентифицируется хоть до пенсии. УАЗ-3163 едет хорошо, но ручник надо проверять отдельно.
gotch
Где же ответ на этот вопрос?
Разработчиков RedHat.
Linux-компьютер не является членом домена так, как это понимается в Windows.
nikkitab0 Автор
В рамках первой статьи ответ пока краткий: через службу SSSD. В следующей статье я более подробно рассмотрю доступные бэкенды.
Насколько я знаю, компания RedHat является основным спонсором проекта, но все-таки не владельцем. По крайней мере, они так заявляют.
Как мне кажется, компьютер становится участником домена, когда ему создается отдельная учетная запись. Соглашусь с вами, что Linux-компьютер пользуется не всем доменным инструментарием, который использует Windows, но права доступа в домене у него точно такие же.
gotch
SSSD - часть FreeIPA. FreeIPA = upstream Red Hat Identity Management. The sssd-devel mailing list: sssd-devel@lists.fedorahosted.org
Это очень большое упрощение. Принципиальная разница, например в том, что Windows может быть присоединена к одному домену, а Linux может одновременно иметь учетную запись в нескольких доменах. При этом доверительные отношения доменов корректно обрабатываются в Windows, но не Linux.
Присоединение Windows к домену это не только привязка к учетной записи компьютера, но и применение общих политик безопасности. В Linux это как минимум опционально.
Кроме политик, в Windows так же реализуется общая концепция безопасности, такая как добавление Domain Admins в локальных администраторов.
Локальные пользователи в Linux остаются локальными пользователями, только у них появляется возможность аутентификации из сторонней системы, а в Windows доменные пользователи это другая сущность.
В общем можно долго искать отличия, но наличие keytab (и обвязки adcli, sssd) ещё не делают Linux концептуально членом домена.
nikkitab0 Автор
При использовании службы SSSD доменные пользователи тоже являются отдельной сущностью. Информации о доменных пользователях нет в файлах /etc/passwd и /etc/shadow. Физически доменные пользователи хранятся в службе каталога, а на рабочих станциях информация о доменных пользователях кэшируется в службе SSSD, при необходимости вместе с хешем пароля для возможности автономного входа.
Сопоставление локальных пользователей на доменных происходит только при использовании PAM-модуля для Kerberos. В этом случае аутентификация выполняется через MIT KDC, но в систему пользователь попадает фактически под локальной учетной записью, имя которой сопоставляется с именем Kerberos-принципала.
gotch
Допускаю, что всё так, но
nikkitab0 Автор
Вывод команды grep (sudo grep mgotch /etc/shadow) показывает, что у вас пользователь mgotch действительно является локальным пользователем системы. При правильной настройке результат команды id должен быть, например, таким:
gotch
Не могу назвать мою настройку неправильной, так как просто пользователь был создан до работы скрипта join-to-domain. В итоге я могу аутентифицироваться по ключу, по локальному паролю, по доменному паролю. Поэтому модель безопасности Linux радикально отличается от Windows, и сравнивать их нет смысла.
Для веселых экспериментов можно попробовать сделать "доменную" машину с пользовательской учетной записью вместо компьютерной или с MSA.
MrBotikkk
Зачем? Часть 2. ALD Pro Модуль 5. Работа Linux-компьютера в домене
Это полигон для Red Hat Identity Manager