Самый простой способ ввести Linux в домен / Хабр
Всем привет!
Термин Microsoft Active Directory Domain Services включает в себя множество технологий, поэтому сразу уточню, в этой статье речь пойдет про использование контроллера домена только для аутентификации пользователей. То есть в финале, нужна возможность любому сотруднику предприятия сесть за любую рабочую станцию Linux, используя свой доменный логин и пароль.
Начиная с Windows 2000 Server для аутентификации пользователей домена используется протокол Kerberos, разработанный еще в 80-х годах прошлого столетия, алгоритм работы которого, ИМХО, являет собой пример отличного инженерного хака, в хорошем (изначальном:) смысле этого слова. В конце статьи есть ссылка на описание его работы, а сейчас надо сказать, что имеется несколько реализаций этого протокола и решение из этой статьи не привязано только к Microsoft Active Directory
Итак, на предприятии уже развернут контроллер домена, вероятнее всего — Microsoft Active Directory и перед нами — рабочая станция Linux (примеры будут для Debian, но работать будет и в других дистрибутивах и, даже, в моей любимой FreeBSD:).
Да очень просто:
student@debian:~$ sudo apt install krb5-user -y
В Debian даже не понадобится редактировать, но убедитесь, и, при необходимости укажите эти строки в файле конфигурации Kerberos клиента (достаточно только их)
student@debian:~$ sudo nano /etc/krb5.conf
[libdefaults] default_realm = CORP.RU
Вместо CORP.RU должно быть имя домена (Kerberos сферы) Вашего предприятия
И все, можно “входить” в домен:
student@debian:~$ kinit ivanovii Password for [email protected]: student@debian:~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: [email protected] Valid starting Expires Service principal 02/22/2023 00:09:13 02/22/2023 10:09:13 krbtgt/[email protected] renew until 02/23/2023 00:09:09
ivanovii — зарегистрированный в домене логин пользователя, замените его на тот, который есть у Вас, можно, даже, использовать Administrator. В результате работы команды kinit была осуществлена аутентификация пользователя и получен Ticket-Granting Ticket (TGT) “билет на выдачу билетов”, позволяющий, в дальнейшем, получить билеты на доступ к зарегистрированным в домене сервисам, реализуя таким образом технологию единого входа — single sign-on (SSO).
Можно заканчивать статью 🙂
Постойте, но, например, в оснастке “Active Directory Users and Computers” никакой рабочей станции Linux не появилось, как же так? Да, действительно, контроллер домена по прежнему ничего не знает о нашей рабочей станции, фактически, наоборот, это наша рабочая станция, благодаря параметру default_realm = CORP.RU и соответствующим SRV записям в DNS
student@debian:~$ nslookup -q=SRV _kerberos._udp.corp.ru ... kdc.corp.ru internet address = A.B.C.D
знает местоположение контроллера домена, и этого достаточно для работы с его Kerberos подсистемой. Для чего может понадобиться регистрация Linux системы в Active Directory и как это сделать — тема отдельной статьи, а сейчас вернемся к нашей задаче — вход доменной учетной записью в Linux систему
За процесс аутентификации пользователей при входе в Linux отвечает библиотека PAM (Pluggable Authentication Modules) использование которой я упоминал в этой статье. В нашем случае добавим в систему модуль, использующий Kerberos аутентификацию:
student@debian:~$ sudo apt install libpam-krb5 -y
В Debian новый модуль добавится в конфигурацию PAM автоматически, сперва логин/пароль будут проверяться в Kerberos, и, в случае неудачи, в локальной базе пользователей:
student@debian:~$ less /etc/pam. d/common-auth
... auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 auth [success=1 default=ignore] pam_unix.so nullok try_first_pas ...
однако, попытка войти в систему доменным пользователем закончится неудачно:
student@debian:~$ sudo login debian login: ivanovii Password: Authentication failure
а в журнале видна причина:
student@debian:~$ sudo tail /var/log/auth.log ... Feb 22 01:18:43 debian login[1587]: pam_krb5(login:auth): user ivanovii authenticated as [email protected] Feb 22 01:18:43 debian login[1587]: pam_unix(login:account): could not identify user (from getpwnam(ivanovii)) ...
аутентификация прошла успешно, но дальше, система ничего не знает о нашем пользователе (ни UID, ни GID ни прочих атрибутов)
$ id ivanovii id: ‘ivanovii’: no such user
Вот теперь мы подошли к этапу, ради которого писалась статья:)
Если начать искать традиционное решение этой задачи, то, скорее всего, Вы узнаете о библиотеке Name Service Switch (NSS) и модулях LDAP, WinBIND или SSSD для нее.
Оказывается, библиотеку PAM можно расширять своими собственными скриптами, используя модуль pam_script. Давайте добавим его в систему:
student@debian:~$ sudo apt install libpam-script -y
Здесь авторы пакета для Debian не угадали наш замысел, расположив модули в таком порядке:
student@debian:~$ less /etc/pam.d/common-auth ... auth [success=3 default=ignore] pam_krb5.so minimum_uid=1000 auth sufficient pam_script.so auth [success=1 default=ignore] pam_unix.so nullok try_first_pass ...
Если честно, то такая конфигурация не только не подходит для нашей задачи, но и очень не хороша с точки зрения безопасности, легко довести ее до ситуации, когда будет достаточно знать логин локального пользователя, например root, для подключения к системе, пароль подойдет любой (вот за это любил FreeBSD, она за нас никогда ничего не делает:) Поэтому, поправьте конфигурацию расположив модули так:
student@debian:~$ sudo nano /etc/pam. d/common-auth
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass auth requisite pam_deny.so auth sufficient pam_script.so auth required pam_permit.so
В этом случае, после успешной аутентификации учтённой записи в Kerberos, выполнение “перепрыгнет” два следующих шага и запустит модуль pam_script. Остается только написать скрипт, который проверит наличие учетной записи, и, в случае ее отсутствия в системе — создаст:
student@debian:~$ sudo nano /usr/share/libpam-script/pam_script_auth
#!/bin/bash id "$PAM_USER" &>/dev/null || useradd -m -s /bin/bash "$PAM_USER"
student@debian:~$ sudo chmod +x /usr/share/libpam-script/pam_script_auth
Проверяем:
student@debian:~$ sudo login debian login: ivanovii Password: ... ivanovii@debian:~$ id uid=1001(ivanovii) gid=1001(ivanovii) groups=1001(ivanovii) ivanovii@debian:~$ klist Ticket cache: FILE:/tmp/krb5cc_1001_0zzvqR Default principal: ivanovii@CORP. RU Valid starting Expires Service principal 02/22/2023 04:14:30 02/22/2023 14:14:30 krbtgt/[email protected] renew until 02/23/2023 04:14:30
Ну вот и все, мы в системе, и TGT у нас в кармане:)
Очевидным недостатком данного решения является то, что после удаления учётной записи пользователя из домена, она останется на всех рабочих станциях, за которыми он работал. Но, поскольку воспользоваться этими учтёнными записями будет невозможно (в локальной базе пользователей они заблокированы), можно пока оставить все как есть.
Спасибо, что дочитали до конца, надеюсь, было интересно, посмотрите ссылки, буду рад комментариям, до новых встреч!
Ссылки:
Kerberos за 5 минут: знакомство с сетевой аутентификацией
Зачем вводить системы Linux в домен Microsoft?
Перевод действителен до: на Испанский с примерами
Перевод действителен до: на Испанский с примерамиОт профессиональных переводчиков, предприятий, веб-страниц и свободно доступных репозиториев переводов.
Добавить перевод
Английский
Испанский
Информация
Английский
годен до:
Испанский
валида хаста:
Последнее обновление: 2018-03-04
Частота использования: 19
Качество:
Английский
годен до
Испанский
валида хаста эль
Последнее обновление: 2016-11-30
Частота использования: 4
Качество:
Английский
Испанский
и валида хаста включительно
Последнее обновление: 2016-11-18
Частота использования: 2
Качество:
Ссылка: Translated. com
Английский
как действительный до …
Испанский
валидо хаста …
Последнее обновление: 2018-03-04
Частота использования: 2
Качество:
Ссылка: Translated. com
Английский
действует до (дата):
Испанский
валидо хаста эль (феча):
Последнее обновление: 2018-03-04
Частота использования: 4
Качество:
Ссылка: Translated. com
Английский
….. и действует до …..
Испанский
… у валида хаста …
Последнее обновление: 2018-03-04
Частота использования: 2
Качество:
Ссылка: Translated. com
Английский
доверенность действительна до
Испанский
авторизация действительного хаста
Последнее обновление: 2018-03-04
Частота использования: 4
Качество:
Ссылка: Translated. com
Английский
действует до 03/2009
Испанский
cire por trata de seres humanos, валидо хаста марсо де 2009
Последнее обновление: 2016-11-30
Частота использования: 1
Качество:
Ссылка: Translated.com
Английский
дата адрес действителен до:
Испанский
направление действительного хаста-ла-феча:
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
действует с момента действия до
Испанский
валида десде валида хаста
Последнее обновление: 2016-11-29
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
действует до 31 августа.
Испанский
валидо хаста эль 31 де агосто.
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
действует до нояб. 30, 2017
Испанский
валидо хаста эль 30 ноября 2017 года
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
действует до 15.11.2008’
Испанский
валидо хаста эль 15.11.2008»
Последнее обновление: 2018-03-04
Частота использования: 4
Качество:
Ссылка: Translated. com
Английский
этот сертификат действителен до
Испанский
эль Presente certificado es válido hasta el
Последнее обновление: 2018-03-04
Частота использования: 3
Качество:
Ссылка: Translated. com
Английский
действует до 14 декабря 2012 г.
Испанский
валидо хаста 14 декабря 2012 г.
Последнее обновление: 2018-02-13
Частота использования: 3
Качество:
Ссылка: Translated. com
Английский
действует до 26 марта 2018 г.
Испанский
валида хаста эль 26 де марта 2018.
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
тариф (действителен до марта 2015 г.)
Испанский
цена (валидо хаста март 2016)
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
предложение действует до декабря 2013 года.
Испанский
действительное предложение в декабре 2013 года.
Последнее обновление: 2018-02-13
Частота использования: 9
Качество:
Ссылка: Translated. com
Английский
режим молочных квот действует до 2008 г.
Испанский
сектор lácteorégimen de cuotas vigente hasta 2008
Последнее обновление: 2017-04-26
Частота использования: 1
Качество:
Ссылка: Translated. com
Английский
— предложение действительно до декабря 2015 года.
Испанский
— действительное предложение от 31 декабря 2015 года.
Последнее обновление: 2018-02-13
Частота использования: 1
Качество:
Ссылка: Translated. com
Добавить перевод
Получите лучший перевод с
4 401 923 520 человеческий вклад
Мы используем файлы cookie, чтобы улучшить ваш опыт. Продолжая посещать этот сайт, вы соглашаетесь на использование нами файлов cookie. Узнать больше. ОК
Участие в переводах W3C
Участие в переводах W3CОбзор
На этой странице представлена информация для добровольцев, желающих перевести ресурсы W3C на свой родной язык. См. список из завершенных переводов рекомендаций W3C .
Рабочий язык W3C — американский английский. W3C поощряет переводы на другие языки, чтобы результаты могли быть доведены до максимально широкой аудитории.
W3C благодарит всех добровольцев, которые переводят его материалы.
Авторизованные переводы
На этой странице приведены инструкции для переводов, которые не проходят формальную проверку и не одобрены W3C. Когда переводы стандартов предназначены для официальных целей, они могут быть разработаны как авторизованные переводы W3C, следуя другому процессу, описанному в Политике авторизованного перевода W3C.
Что переводить?
W3C поощряет перевод следующих ресурсов:
- Технические отчеты W3C , особенно Рекомендации W3C (т. е. окончательные стандарты) — см. инструкции по переводу технических отчетов W3C ниже.
- Ресурсы Инициативы по доступности Интернета (WAI) — см. Перевод ресурсов WAI.
- Статьи и руководства по интернационализации — см. Инструкции по переводу ресурсов по интернационализации.
- Средство проверки CSS — см. Перевод средства проверки CSS W3C.
Инструкции по переводу технических отчетов W3C 903:30
- Убедитесь, что технический отчет еще не завершен или не находится в процессе перевода на этот язык.
- Подтвердите, что вы готовы внести свой вклад в соответствии с политиками IPR для переводов W3C.
- Ознакомьтесь с критериями проверки добровольного перевода ниже.
- Получите учетную запись W3C, если у вас ее еще нет. Это позволит нам связать ваши переводы с вашим профилем W3C.
- Сообщите другим о своей заинтересованности в переводе технического отчета:
- Если вы начинаете новый перевод , отправьте электронное письмо в список рассылки переводов W3C, используя этот шаблон электронной почты для Intention to Translate. (W3C будет использовать это для обновления базы данных переводов.)
- Если вы хотите обновить существующий устаревший перевод или внести свой вклад в текущую работу по переводу, свяжитесь напрямую с автором перевода.
- После завершения перевода отправьте электронное письмо в список рассылки переводов W3C, используя этот шаблон электронной почты или Завершенный перевод.