Используя продукты ведущих вендоров, мы не всегда задумываемся о том, что в них реализованы лучшие практики, позволяющие экономить на администрировании, повышать безопасность инфраструктуры и обеспечивать удобство для работы пользователей. Но эти детали, как шило в... мешке, не дают покоя, и при попытке заменить проверенное ПО свободным оказывается, что ни одно из альтернативных решений неспособно без существенных доработок обеспечить сопоставимые показатели по безопасности, удобству и эффективности.
Сегодня нужно заменить большое количество программных продуктов, а времени совсем мало, поэтому приходится расставлять приоритеты и начинать с самого важного. Так, одним из стратегических направлений «Группы Астра» стала разработка службы каталога, которая должна заменить Microsoft Active Directory и стать сердцем обновленной ИТ-инфраструктуры российских предприятий. В нашем продукте мы объединили службу каталога FreeIPA с системой конфигурирования SaltStack и дополнили решение набором наиболее востребованных сервисов, таких как репозиторий программного обеспечения Reprepro, файловый сервер Samba, общий доступ к принтерам CUPS, динамическая настройка хостов ISC DHCP, установка ОС по сети TFTP HPA, мониторинг Zabbix и Grafana, журналирование syslog-ng.
Продукт ALD Pro (Astra Linux Directory Pro) быстро развивается, и с даты первого релиза было опубликовано уже несколько сотен улучшений, что позволило стать лидером на рынке доменных решений. У нас уже сотни инсталляций по всей стране, и с каждым днем их становится все больше. Но некоторых пользователей очень интересует вопрос, почему в качестве основы для службы каталога мы выбрали все-таки FreeIPA, а не Samba AD, и в этой статье поделимся нашими соображениями. Уверены, что информация окажется полезной не только нашим заказчикам, но и пользователям ванильных FreeIPA и Samba AD.
Samba AD
Когда речь заходит о Samba (https://www.samba.org), в первую очередь нужно определиться, в каком контексте обсуждается продукт, т. к. этот швейцарский нож может предоставить и общий доступ к файлам, и совместное использование принтеров, и доменные сервисы, причем как в формате Active Directory, так и в устаревшей реализации NT4.
Работу над созданием службы совместного доступа к файлам Эндрю Триджелл (Andrew Tridgell) начал еще в конце 1991 года, когда обучался в аспирантуре Австралийского национального университета и по совместительству отвечал за сетевое администрирование. Образовательное учреждение закупило программное обеспечение PC X server eXcursion от компании DEC (Digital Equipment Corporation), и Триджеллу захотелось понадобилось организовать доступ с eXcursion к файлам, размещаемым на других серверах под управлением операционной системы Sun. Программного продукта, который бы решал эту задачу, не было, и Триджелл как настоящий «тыжпрограммист» путем реверс-инжиниринга сетевого протокола, просто анализируя трафик, повторил реализацию одного из наиболее успешных продуктов компании DEC, что принесло автору заслуженное признание. Впоследствии, конечно, оказалось, что у протокола все-таки есть открытая спецификация и этот reveng не имел большого практического смысла, но, как говорится, бешеной собаке семь верст не крюк.
Я немного покопался, немного поспрашивал и обнаружил, что нужная мне спецификация предназначена для протокола SMB и что она доступна через ftp. Тогда скачал ее и начал удалять все эти ужасные константы из кода, когда они стали понятны. Я был шокирован, увидев реальную спецификацию SMB, и понял, как мне повезло, что мой первоначальный код вообще работал.
Эндрю Триджелл
Samba-Unix Talking with PCs, Linux Journal выпуск #7, ноябрь 1994
Изначально проект так и назывался — SMB Server, по названию протокола Server Message Block. Но это имя оказалось уже занято, и, по легенде, Триджелл выбрал новое название из слов, начинающихся с буквы «S» и содержащих «M» и «B» в том же порядке, получив их командой grep по системному словарю:
grep -i '^s.*m.*b' /usr/share/dict/words
samba
В дальнейшем танцевать в ритме Samba стало для Триджелла, по большому счету, его основной деятельностью. С 1994 года он возглавляет в университете проект, в рамках которого создавалась распределенная файловая система HiDIOS для компьютеров Fujitsu, и за это время выходит несколько релизов Samba, в том числе вторая версия, где впервые появилась поддержка службы каталога в стиле NT4. С 2001 года Триджелл работает в VA Linux Systems над устройствами сетевого хранения данных и развивает Samba в части оптимизации под ядро Linux. Работая в Quantum с октября 2001 года над корпоративными системами хранения, Триджелл добавляет в Samba возможность работы Linux-компьютера в составе домена Active Directory. С января 2003 года Триджелл работал над развитием систем хранения в исследовательском центре IBM, и в том же году выходит Samba 3, в которой была реализована поддержка протоколов SMB2.2 и SMB3.
В части функций Active Directory переломным моментом для проекта Samba стал 2004 год, когда комиссия Европейского союза признала Microsoft виновной в злоупотреблении монопольным положением и наложила штраф в 500 млн евро с требованием предоставить полную информацию о протоколах для обеспечения совместимости. Триджелл работал в исследовательском центре IBM, там решили воспользоваться ситуацией и запросить необходимые спецификации, но теперь этот запрос уже соответствовал интересам корпорации Microsoft. Для усиления своих позиций в судах несколько лет спустя Microsoft даже наняла разработчика Samba Криса Хартела (Chris Hertel) для написания документации.
Открывшиеся возможности определили дальнейший вектор развития продукта, и с 2005 года Триджелл полностью переключился на разработку Samba 4 как участник OSDL (Open Source Development Laboratory). Эту некоммерческую организацию IBM учредила вместе с другими технологическими гигантами — Intel, Hitachi, Hewlett-Packard, Fujitsu, NEC, Computer Associates — для ускорения проникновения Linux в корпоративную среду. Через нее финансировались ключевые проекты, именно там работал сам Линус Торвальдс и несколько других разработчиков ядра операционной системы.
При этом важно понимать, что директора этих ИТ-компаний не были какими-то наивными альтруистами, коммунистами или сторонниками культуры хиппи. Просто к тому моменту общество уже пришло к осознанию, что, закрывая исходные коды, коммерческие организации создают точно такие же барьеры для развития индустрии, как это делала AT&T несколькими десятилетиями ранее, ограничивая доступ к использованию своих патентов. Поэтому совместная работа над системными решениями может значительно способствовать развитию и выгодна всем.
Благодаря беспрецедентной открытости компании Microsoft (по известным причинам) через семь лет удалось выпустить релиз Samba 4, в котором появилась возможность работы в роли контроллера Active Directory с Heimdal Kerberos и анонсировалась возможность промышленной эксплуатации, см. рисунок 1. На тот момент было реализовано только 40% от необходимого функционала, но этого хватило, чтобы ряд компаний стал делать на этом бизнес.
![Рисунок 1.История развития проекта Samba Рисунок 1.История развития проекта Samba](https://habrastorage.org/getpro/habr/upload_files/e73/291/e83/e73291e83cc90d6a0553a669e0b24b1a.png)
В вопросах внедрения Samba AD дальше всех продвинулась французская компания Tranquil IT (https://www.tranquil.it), которой на данный момент удалось реализовать более 300 проектов, в самом крупном из которых было порядка 140 контроллеров домена. Начинали они с развертывания доменов NT4 на Samba 3, поэтому часть клиентов им нужно было просто обновить. Выступая на конференции SambaXP в 2017 году, основатели компании Денис и Винсент Кардон (Denis Cardon, Vincent Cardon) отметили, что для миграции небольших инфраструктур на Samba AD препятствий практически нет, а проблемы в основном связаны с недостаточной квалификацией сотрудников – незнанием компьютерных сетей, устройства Active Directory, отсутствием навыков администрирования Linux.
Опытные инженеры в основном хвалят продукт, но предостерегают, что потребуется проштудировать большой объем плохо написанной документации, перечитать сотни тематических подписок, выполнить бессчетное количество экспериментов, и все равно что-то будет работать не так, как нужно, или не работать вовсе, а претензии можно будет предъявить только самому себе.
Берите продукт, используйте его. А если он не решит ваших задач, то вспомните, сколько вы за него заплатили. И не забудьте отправить мне отчет об ошибке.
Эндрю Триджелл
Samba-Unix Talking with PCs, Linux Journal выпуск #7, ноябрь 1994
Кстати, в части документации обязательно обратите внимание на сайт Tranqil IT, на который ссылаются даже на официальном сайте wiki.samba.org
Если с маленькими инфраструктурами понятно, то крупные проекты внедрения возможны только при значительных доработках продукта, которые Tranquil IT воплощала через коммерческие заказы в Catalyst, например:
При внедрении продукта в центральных банках западноафриканских государств была реализована поддержка последнего входа (4.4.0).
На проекте министерства окружающей среды Франции потребовалось реализовать поддержку дополнительных протоколов шифрования (4.7.0), журналов в формате JSON (4.9.0), функций экспорта/импорта объектов групповой политики (4.9.0).
Внедрение в министерстве культуры и коммуникаций Франции не обошлось без реализации Read Only Domain Controller (4.7.0).
Внедрение в министерстве государственных финансов Франции стало возможным благодаря устранению ограничения в 4 ГБ на размер базы данных (4.9.0), разработке графических инструментов анализа топологии (4.9.0), улучшению управления DNS (4.9.0) и работы pre‑fork (4.10.0).
Для национального агентства по безопасности информационных систем значительно доработана документация в части функций безопасности.
Проект развивается не быстро, но за последние годы в направлении Enterpise было сделано уже достаточно много, чтобы даже крупные проекты стали принципиально возможны. Конечно, еще нет поддержки лесов, штатной репликации SYSVOL, не стоит рассчитывать на поддержку таких приложений, как Exchange, которые имеют сильную привязку к расширенным функциям Active Directory, но при необходимости без всего этого можно обойтись. Основные причины, по которым мы не сделали выбор в пользу Samba, заключаются в другом.
Если проанализировать последние коммиты, то можно увидеть, что большинство улучшений в Samba вносят сотрудники Catalyst, Red Hat (IBM), SerNet, SUSE, имеющие прямой коммерческий интерес, а иногда даже конкурирующие между собой. Но интересы Microsoft никуда не делись, и этот держатель фишек продолжит препятствовать развитию проекта в той мере, насколько это будет уместно в рамках установленных правил. Ну, и самое главное, что проект Samba AD изначально был направлен на создание совместимости с Windows, а не разработку нативного доменного решения для Linux, поэтому участникам Samba Team навсегда уготована роль догоняющих.
FreeIPA
Возможность вводить Linux-компьютеры в домен Active Directory впервые появилась в службе Winbind из состава компонентов Samba, что позволило сократить разрыв между двумя мирами и начать проникновение Linux в корпоративную среду, где в то время безгранично доминировала компания Microsoft со своей активной директорией. Но если Samba искала простые способы интеграции с Windows, то команда FreeIPA направила свои усилия на то, чтобы создать новое решение с оглядкой на лучшие практики Microsoft, которое бы в полной мере соответствовало потребностям Linux, как сделала сама Microsoft в конце 90-х, когда создала свою Active Directory, используя передовые технологии UNIX, такие как LDAP, Kerberos и DNS.
Проект IPA (https://www.freeipa.org) официально стартовал в 2007 году, но готовиться к этому компания Red Hat начала сильно раньше, когда в 2004 году приобрела у компании AOL (America Online) права на код Netscape Directory Server, а заодно и команду разработчиков, которые развивали этот продукт последнее десятилетие. Если внимательно приглядеться к истории LDAP, то за сухими формулировками из пресс-релизов откроется настоящая детективная история, полная экшена, конфликтов интересов, провалов и свержений, по которой можно снять настоящий блокбастер, см. рисунок 2.
![Рисунок 2. История развития FreeIPA Рисунок 2. История развития FreeIPA](https://habrastorage.org/getpro/habr/upload_files/194/7e1/400/1947e1400192d181e0a3a8e90879f93b.png)
Изначально стандарт электронных каталогов X.500 был разработан международным союзом электросвязи (International Telecommunication Union, ITU) и драйвером развития технологии были телекоммуникационные компании, которым нужно было предоставлять авторизованные услуги связи миллионам абонентов. К слову, в инфраструктуре российских операторов из большой тройки LDAP тоже использовался. Основную роль в разработке технологии сыграли исследователи из Мичиганского университета (University of Michigan), Университетского колледжа Лондона (University College London), компаний PSI, Critical Angle, Netscape, Sun, America Online, HP и др. Компания Microsoft тоже участвовала в обсуждении стандарта, но ее роль заключалась в большей степени в том, что она показала альтернативный способ применения технологии для построения корпоративных доменов, и далее эстафетную палочку у телекоммуникационных компаний перехватили уже ИТ-гиганты.
На момент покупки Netscape их программный код вобрал в себя последние разработки ведущих игроков рынка, поэтому в LDAP-сервере Red Hat до сих пор таится большой потенциал, который пока еще не задействован в их IdM-решении. Например, 389 Directory Server позволяет выстраивать трехуровневую топологию, состоящую из Мастеров, Хабов и Потребителей, в которой практически нет ограничений по горизонтальному масштабированию для построения систем, испытывающих колоссальные нагрузки по операциям чтения.
В фокусе внимания FreeIPA находится разработка функций централизованной идентификации, политик и аудита (от англ. identity, policy, audit). Для этого разработчики интегрировали с LDAP-сервером эталонную реализацию Kerberos SSO (MIT Kerberos) и одну из лучших реализаций DNS-службы (ISC Bind9). А для взаимодействия с Active Directory команда Red Hat воспользовалась наработками проекта Samba AD, в создании которых принимала и продолжает принимать участие.
Еще большее значение имеют усилия команды FreeIPA в развитии клиентской части. Переосмысление потребностей Linux в части аутентификации привело к созданию новой службы SSSD, работа над которой в 2009 году была выделена в отдельный проект. Данная аббревиатура официально расшифровывается как System Security Services Daemon, но, как рассказывает один из разработчиков продукта в кулуарах, это на самом деле первые буквы имен четырех основателей: Simo Sorce, Sumit Bose, Stephen Gallagher и Dmitri Pal.
Для становления проекта SSSD потребовалось некоторое время, но на сегодняшний день эта служба практически полностью вытеснила Winbind и является самым правильным ответом на вопрос о том, как обеспечить работу компьютера под управлением операционной системы из семейства Linux в составе домена. С помощью этой службы компьютер Linux можно ввести в домен Microsoft Active Directory, Samba AD и даже использовать в качестве бэкенда простой LDAP v3 - сервер. Но в полном объеме продукт раскрывается, конечно же, если в роли бэкенда выступает FreeIPA, в этом случае становятся доступны такие функции, как правила HBAC и SUDO, политики монтирования AutoFS, сопоставление пользователей SELinux. А на компьютерах под управлением Astra Linux, оснащенных подсистемой безопасности PARSEC, через FreeIPA можно централизованно управлять мандатным доступом для защиты конфиденциальной информации, и мы обязательно расскажем об этой технологии в одной из следующих статей.
Для того чтобы окончательно развеять сомнения, сравним продукты через анализ программного кода. Разработка Samba AD выполнялась в условиях нехватки ресурсов, поэтому исходные коды предыдущей версии, отвечающие за работу SMB-протокола, были добавлены на скорую руку практически без изменений, и эти проблемы остаются в проекте до сих пор: достаточно открыть репозиторий с исходными кодами, и вы увидите папку с названием «Samba 3». И так было всегда. Например, еще в начале 2000-х Люк Лейтон (Luke Leighton) предлагал переписать продукт на микросервисную архитектуру, но привлечь финансирование ему не удалось, поэтому форк Samba TNG (The Next Generation) в 2005 году окончательно умер. И только 20 лет спустя в версии 4.16 его идеи наконец-то были реализованы и службы MS-RPC были разнесены по отдельным приложениям с взаимодействием через сокеты unix. В проекте FreeIPA дела обстоят совсем иначе: разработчики вкладывают значительные ресурсы в рефакторинг программного кода. Например, с выходом Python 3 весь программный код был переписан под новый язык, чтобы задействовать его новые возможности.
Если посмотреть на объем кода командой wc -l $(git ls-files), то окажется, что в Samba сейчас почти 5.5 млн строк, в то время как в проектах FreeIPA суммарно только 3 млн, но, как известно, больше не значит лучше, и следует учесть еще два обстоятельства:
Проект Samba 4 вобрал в себя порядка 2,5 млн строк Samba 3, где была реализована поддержка протоколов SMB, что не относится напрямую к функциям службы каталога, и с учетом этой поправки объем кода будет уже сопоставим.
Продукт FreeIPA использует программный код Samba AD для интеграции с Active Directory, и более того, именно сотрудники Red Hat помогают проекту Samba в развитии этой функциональности.
![Рисунок 3. Сравнение объема кода по количеству строк Рисунок 3. Сравнение объема кода по количеству строк](https://habrastorage.org/getpro/habr/upload_files/d51/1ca/c91/d511cac91d929564ac549715198ea2ae.png)
Еще более показательным окажется сравнение динамики изменений, которую можно получить командой shortstat.
cd samba/
git log --shortstat --pretty='^ "%h", "%as", "%an", ' | tr "\n" " " | tr "^" "\n"
"4c291514a9e", "2023-10-17", "Joseph Sutton", 2 files changed, 2 insertions(+), 12 deletions(-)
"d209cdf4f0c", "2023-10-17", "Joseph Sutton", 2 files changed, 3 insertions(+), 2 deletions(-)
"37594035547", "2023-10-17", "Joseph Sutton", 1 file changed, 1 insertion(+), 1 deletion(-)
Если сравнить показатели по добавлению/удалению строк, то станет очевидным, что в последние годы компания Red Hat инвестировала в проект значительно больше усилий, чем Samba Team. И это не считая того, что часть изменений Samba внесена теми же сотрудниками Red Hat.
![Рисунок 4. Динамика изменений по проектам Рисунок 4. Динамика изменений по проектам](https://habrastorage.org/getpro/habr/upload_files/b9a/a21/a5f/b9aa21a5f83ce216409d0b8f7fc5e05b.png)
Вместо заключения хотим еще раз обозначить, что службу каталога, конечно, можно построить на Samba AD, но стратегически это будет не самым правильным решением.
Если вы отвечаете только за серверную группировку и надеетесь реализовать импортозамещение БЕЗ замещения, просто заменив одни контроллеры на другие, не затрагивая сервисы и рабочие станции, то у вас действительно нет альтернатив, кроме как Samba AD, т. к. только эта служба каталога пытается мимикрировать под Active Directory. Но даже в этом случае не стоит рассчитывать, что получится обойтись малой кровью, и верить консультантам, которые будут убеждать вас в обратном. Обязательно закладывайте значительные временные и финансовые ресурсы на проверку совместимости с другими компонентами инфраструктуры и решение сопутствующих проблем, чтобы не оказаться у разбитого корыта. И уж тем более не стоит рассчитывать на надежную работу домена, в составе которого будут одновременно контроллеры Samba AD и Microsoft Active Directory: эксплуатация такой инфраструктуры потребует от сотрудников запредельных компетенций по устройству активной директории вообще и каждой реализации в частности, если такие вообще есть на рынке труда. Как говорится, кто считает, что трудно найти настоящую любовь, тот не искал разработчиков на Scala.
Если же вы делаете стратегический выбор в развитии ИТ-инфраструктуры предприятия на десятилетия и планируете полностью перейти на отечественные операционные системы, использующие в подавляющем большинстве ядро Linux, то правильнее будет сразу внедрять службу каталога, основанную на FreeIPA, и выгоды от принятия такого решения с каждым годом будут только расти.
Надеемся, что этой статьей мы ответили на большую часть вопросов, а с теми, что остались, приглашаем вас в комментарии.