This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
простой_способ_ввести_linux_в_домен [2023/02/22 16:07] val |
простой_способ_ввести_linux_в_домен [2023/02/23 15:52] (current) val |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Самый простой способ ввести Linux в домен ====== | ====== Самый простой способ ввести Linux в домен ====== | ||
+ | |||
+ | * [[https://habr.com/ru/post/718632/]] | ||
Всем привет! | Всем привет! | ||
Line 5: | Line 7: | ||
Термин Microsoft Active Directory Domain Services включает в себя множество технологий, поэтому сразу уточню, в этой статье речь пойдет про использование контроллера домена только для аутентификации пользователей. То есть в финале, нужна возможность любому сотруднику предприятия сесть за любую рабочую станцию Linux, используя свой доменный логин и пароль. | Термин Microsoft Active Directory Domain Services включает в себя множество технологий, поэтому сразу уточню, в этой статье речь пойдет про использование контроллера домена только для аутентификации пользователей. То есть в финале, нужна возможность любому сотруднику предприятия сесть за любую рабочую станцию Linux, используя свой доменный логин и пароль. | ||
- | Начиная с Windows 2000 Server для аутентификации пользователей домена используется протокол Kerberos, разработанный еще в 80-х годах прошлого столетия, работа которого ИМХО являет собой пример отличного программистского [[https://royallib.com/book/levi_stiven/hakeri_geroi_kompyuternoy_revolyutsii.html|хака, в хорошем (изначальном:) смысле этого слова]]. В конце статьи есть ссылка на описание его работы, а сейчас надо сказать, что имеется несколько реализаций этого протокола и решение из этой статьи не привязано только к Microsoft Active Directory | + | Начиная с Windows 2000 Server для аутентификации пользователей домена используется протокол Kerberos, разработанный еще в 80-х годах прошлого столетия, алгоритм работы которого, ИМХО, являет собой пример отличного инженерного [[https://royallib.com/book/levi_stiven/hakeri_geroi_kompyuternoy_revolyutsii.html|хака, в хорошем (изначальном:) смысле этого слова]]. В конце статьи есть ссылка на описание его работы, а сейчас надо сказать, что имеется несколько реализаций этого протокола и решение из этой статьи не привязано только к Microsoft Active Directory |
IMG_1 | IMG_1 | ||
Line 23: | Line 25: | ||
</code><code> | </code><code> | ||
[libdefaults] | [libdefaults] | ||
- | default_realm = BMSTU.RU | + | default_realm = CORP.RU |
</code> | </code> | ||
- | Вместо BMSTU.RU должно быть имя домена (Kerberos сферы) Вашего предприятия | + | Вместо CORP.RU должно быть имя домена (Kerberos сферы) Вашего предприятия |
И все, можно "входить" в домен: | И все, можно "входить" в домен: | ||
Line 32: | Line 34: | ||
<code> | <code> | ||
student@debian:~$ kinit ivanovii | student@debian:~$ kinit ivanovii | ||
- | Password for ivanovii@BMSTU.RU: | + | Password for ivanovii@CORP.RU: |
student@debian:~$ klist | student@debian:~$ klist | ||
Ticket cache: FILE:/tmp/krb5cc_1000 | Ticket cache: FILE:/tmp/krb5cc_1000 | ||
- | Default principal: ivanovii@BMSTU.RU | + | Default principal: ivanovii@CORP.RU |
Valid starting Expires Service principal | Valid starting Expires Service principal | ||
- | 02/22/2023 00:09:13 02/22/2023 10:09:13 krbtgt/BMSTU.RU@BMSTU.RU | + | 02/22/2023 00:09:13 02/22/2023 10:09:13 krbtgt/CORP.RU@CORP.RU |
renew until 02/23/2023 00:09:09 | renew until 02/23/2023 00:09:09 | ||
</code> | </code> | ||
Line 47: | Line 49: | ||
Можно заканчивать статью :) | Можно заканчивать статью :) | ||
- | Постойте, но, например, в оснастке "Active Directory Users and Computers" никакой рабочей станции Linux не появилось, как же так? Да, действительно, контроллер домена по прежнему ничего не знает о нашей рабочей станции, фактически, наоборот, это наша рабочая станция, благодаря параметру default_realm = BMSTU.RU и соответствующим SRV записям в DNS | + | Постойте, но, например, в оснастке "Active Directory Users and Computers" никакой рабочей станции Linux не появилось, как же так? Да, действительно, контроллер домена по прежнему ничего не знает о нашей рабочей станции, фактически, наоборот, это наша рабочая станция, благодаря параметру default_realm = CORP.RU и соответствующим SRV записям в DNS |
<code> | <code> | ||
- | student@debian:~$ nslookup -q=SRV _kerberos._udp.bmstu.ru | + | student@debian:~$ nslookup -q=SRV _kerberos._udp.corp.ru |
... | ... | ||
- | kdc.bmstu.ru internet address = 195.19.32.47 | + | kdc.corp.ru internet address = A.B.C.D |
</code> | </code> | ||
Line 89: | Line 91: | ||
student@debian:~$ sudo tail /var/log/auth.log | student@debian:~$ sudo tail /var/log/auth.log | ||
... | ... | ||
- | Feb 22 01:18:43 debian login[1587]: pam_krb5(login:auth): user ivanovii authenticated as ivanovii@BMSTU.RU | + | Feb 22 01:18:43 debian login[1587]: pam_krb5(login:auth): user ivanovii authenticated as ivanovii@CORP.RU |
Feb 22 01:18:43 debian login[1587]: pam_unix(login:account): could not identify user (from getpwnam(ivanovii)) | Feb 22 01:18:43 debian login[1587]: pam_unix(login:account): could not identify user (from getpwnam(ivanovii)) | ||
... | ... | ||
Line 103: | Line 105: | ||
Вот теперь мы подошли к этапу, ради которого писалась статья:) | Вот теперь мы подошли к этапу, ради которого писалась статья:) | ||
- | Если начать искать решение этой задачи, то, скорее всего, Вы узнаете о библиотеке Name Service Switch (NSS) и модулях LDAP, WinBIND или SSSD для нее. Но что если ... просто создать учетную запись после успешной аутентификации? | + | Если начать искать традиционное решение этой задачи, то, скорее всего, Вы узнаете о библиотеке Name Service Switch (NSS) и модулях LDAP, WinBIND или SSSD для нее. Но что если ... просто создать учетную запись после успешной аутентификации? |
Оказывается, библиотеку PAM можно расширять своими собственными скриптами, используя модуль pam_script. Давайте добавим его в систему: | Оказывается, библиотеку PAM можно расширять своими собственными скриптами, используя модуль pam_script. Давайте добавим его в систему: | ||
Line 122: | Line 124: | ||
</code> | </code> | ||
- | Если честно, то такая конфигурация не только не подходит для нашей задачи, но и очень не хорошая с точки зрения безопасности, легко довести ее до ситуации, когда будет достаточно знать логин локального пользователя, например root, для подключения к системе, пароль подойдет любой (вот за это любил FreeBSD, она за нас ничего не делает:) Поэтому, поправьте конфигурацию расположив модули так: | + | Если честно, то такая конфигурация не только не подходит для нашей задачи, но и очень не хорошая с точки зрения безопасности, легко довести ее до ситуации, когда будет достаточно знать логин локального пользователя, например root, для подключения к системе, пароль подойдет любой (вот за это любил FreeBSD, она за нас никогда ничего не делает:) Поэтому, поправьте конфигурацию расположив модули так: |
<code> | <code> | ||
student@debian:~$ sudo nano /etc/pam.d/common-auth | student@debian:~$ sudo nano /etc/pam.d/common-auth | ||
</code><code> | </code><code> | ||
- | ... | ||
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 | 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 [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass | ||
Line 161: | Line 162: | ||
ivanovii@debian:~$ klist | ivanovii@debian:~$ klist | ||
Ticket cache: FILE:/tmp/krb5cc_1001_0zzvqR | Ticket cache: FILE:/tmp/krb5cc_1001_0zzvqR | ||
- | Default principal: ivanovii@BMSTU.RU | + | Default principal: ivanovii@CORP.RU |
Valid starting Expires Service principal | Valid starting Expires Service principal | ||
- | 02/22/2023 04:14:30 02/22/2023 14:14:30 krbtgt/BMSTU.RU@BMSTU.RU | + | 02/22/2023 04:14:30 02/22/2023 14:14:30 krbtgt/CORP.RU@CORP.RU |
renew until 02/23/2023 04:14:30 | renew until 02/23/2023 04:14:30 | ||
Line 171: | Line 172: | ||
Ну вот и все, мы в системе, и TGT у нас в кармане:) | Ну вот и все, мы в системе, и TGT у нас в кармане:) | ||
- | Очевидным недостатком данного решения является то, что после удаления учётной записи пользователя из домена, она останется на всех рабочих станциях, за которыми он работал. Но, поскольку воспользоваться этими учтёнными записями будет невозможно, можно пока оставить все как есть. | + | Очевидным недостатком данного решения является то, что после удаления учётной записи пользователя из домена, она останется на всех рабочих станциях, за которыми он работал. Но, поскольку воспользоваться этими учтёнными записями будет невозможно (в локальной базе пользователей они заблокированы), можно пока оставить все как есть. |
- | Спасибо, что дочитали до конца, посмотрите ссылки, буду рад комментариям, до новых встреч! | + | Спасибо, что дочитали до конца, надеюсь, было интересно, посмотрите ссылки, буду рад комментариям, до новых встреч! |
Ссылки: | Ссылки: |