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

С каждым годом проблема санкций становилась все острее: сначала с рынка ушли зарубежные вендоры и патчи безопасности оказались за семью VPN'ами, затем начали протухать купленные ранее лицензии; поэтому отечественные компании, руководствуясь здравым смыслом требованиями регуляторов, стали пытаться внедрять Open Source решения. И тут совершенно неожиданно оказалось, что в стране не так много сильных Linux-админов, которых можно было бы легко переманивать набирать с рынка, просто поднимая зарплаты, что увеличило спрос на аутсорс. К нам стали обращаться за помощью наши постоянные заказчики, и руководство решилось впрягаться в такие проекты; а для инженеров начались темные интересные времена…

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

Динамика регистрации новых операционных систем в реестре российского программного обеспечения для ЭВМ и БД за последние 10 лет
Динамика регистрации новых операционных систем в реестре российского программного обеспечения для ЭВМ и БД за последние 10 лет

Если посмотреть на отечественные ОС внимательнее, то можно заметить, что все они работают на ядре 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, на который они делают теперь основную ставку.

Хронология развития PAM- и NSS-модулей
Хронология развития PAM- и NSS-модулей

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

Устройство службы SSSD изнутри
Устройство службы SSSD изнутри

Взглянем на несколько функциональных преимуществ службы 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 успешно справляется с этими вызовами.