This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
kerberos_сервера_на_замену_microsoft_ad [2023/04/28 13:34] val |
kerberos_сервера_на_замену_microsoft_ad [2023/04/29 06:03] (current) val |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Cамое простое решение для Kerberos сервера на замену Microsoft AD? ====== | ====== Cамое простое решение для Kerberos сервера на замену Microsoft AD? ====== | ||
+ | |||
+ | * [[https://habr.com/ru/articles/732290/]] | ||
Всем привет! | Всем привет! | ||
- | Вот такой вопрос прозвучал в комментариях к [[https://habr.com/ru/post/718632/|этой статье]], спасибо автору, а еще нам на предприятие пришло вот такое распоряжение: | + | Вот такой вопрос прозвучал в комментариях к [[https://habr.com/ru/post/718632/|этой статье]], спасибо автору, а еще, нам на предприятие пришло вот такое распоряжение: |
IMG_1.png | IMG_1.png | ||
- | Если бы мы уже использовали инфраструктуру Microsoft AD, мы бы подумали о [[https://youtu.be/Y4RzavhVwxY|миграции на Samba 4]], но задача касалась только вводимых в эксплуатацию рабочих станций Linux и мы выбрали "ванильный" [[https://web.mit.edu/kerberos/krb5-devel/doc/admin/install.html|MIT Kerberos]]. | + | Если бы мы уже использовали инфраструктуру Microsoft AD, то выбрали бы [[https://youtu.be/Y4RzavhVwxY|миграцию на Samba 4]], но задача касалась только вводимых в эксплуатацию рабочих станций Linux и мы выбрали "ванильный" [[https://web.mit.edu/kerberos/krb5-devel/doc/admin/install.html|MIT Kerberos]]. |
- | В двух словах про [[https://bestprogrammer.ru/izuchenie/kerberos-za-5-minut-znakomstvo-s-setevoj-autentifikatsiej|Kerberos]], это протокол аутентификации, позволяющий использовать свой логин и пароль на любом компьютере, подключенном к kerberos сфере (входящем в домен, в терминах Microsoft). А кроме того, он реализует [[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0|Технологию единого входа (Single Sign-On)]], что позволяет, например, предоставить "прозрачный" авторизованный доступ в Интернет через прокси сервер. | + | В двух словах про [[https://bestprogrammer.ru/izuchenie/kerberos-za-5-minut-znakomstvo-s-setevoj-autentifikatsiej|Kerberos]], это протокол аутентификации, позволяющий использовать свой логин и пароль на любом компьютере, подключенном к kerberos сфере (входящем в домен, в терминах Microsoft). Кроме того, он реализует [[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0|технологию единого входа (Single Sign-On)]] что позволяет, например, предоставить "прозрачный" доступ в Интернет через прокси сервер с аутентификацией пользователей. |
Итак, реализация: | Итак, реализация: | ||
- | Разворачиваем в сети kerberos сервер (Центр распределения ключей - Key distribution center - KDC). Очень важно правильно указать hostname системы и сделать соответствующие A и SRV записи в DNS | + | Разворачиваем в сети kerberos сервер (Центр распределения ключей - Key distribution center - KDC). Очень важно правильно указать hostname системы и сделать соответствующие A и SRV записи в DNS: |
<code> | <code> | ||
- | # hostnamectl set-hostname kdc.bmstu.ru | + | # hostnamectl set-hostname kdc.corp.ru |
- | # nslookup -q=SRV _kerberos._udp.bmstu.ru | + | $ nslookup -q=SRV _kerberos._udp.corp.ru |
... | ... | ||
- | _kerberos._udp.bmstu.ru service = 1 0 88 kdc.bmstu.ru. | + | _kerberos._udp.corp.ru service = 1 0 88 kdc.corp.ru. |
... | ... | ||
- | kdc.bmstu.ru internet address = A.B.C.D | + | kdc.corp.ru internet address = A.B.C.D |
</code> | </code> | ||
- | Так же, работа протокола kerberos требует синхронизации времени, с расхождением не более 5 минут | + | Устанавливаем программное обеспечение и инициализируем kerberos сферу - realm или домен, в терминах Microsoft (далее все инструкции приведены для Debian/Ubuntu) |
- | + | ||
- | Устанавливаем программное обеспечение и инициализируем kerberos сферу (realm или домен, в терминах Microsoft) | + | |
<code> | <code> | ||
Line 45: | Line 45: | ||
kdc# kadmin.local -q 'addprinc -pw somepassword2 petrovpp' | kdc# kadmin.local -q 'addprinc -pw somepassword2 petrovpp' | ||
- | ... | + | ... |
</code> | </code> | ||
- | Теперь можно подключать к kerberos сфере (вводить в домен) рабочие станции, [[https://habr.com/ru/articles/718632/|например, таким способом]] и пользователи смогут работать на них используя свои логины и пароли. | + | Теперь можно подключать к kerberos сфере (вводить в домен) рабочие станции, [[https://habr.com/ru/articles/718632/|например, таким способом]], и пользователи смогут работать на них, используя свои логины и пароли. |
- | Далее, разворачиваем прокси сервер для авторизованного доступа пользователей в Интернет (тоже, очень важно, указать корректный hostname и, соответствующую, A запись в DNS) | + | Далее, разворачиваем прокси сервер для аутентификации и учета доступа пользователей в Интернет (тоже, очень важно, указать корректный hostname и соответствующую A запись в DNS) |
<code> | <code> | ||
- | # hostnamectl set-hostname authproxy.bmstu.ru | + | # hostnamectl set-hostname authproxy.corp.ru |
authproxy# apt install squid | authproxy# apt install squid | ||
</code> | </code> | ||
- | Добавляем в kdc principal сервиса HTTP, работающего на authproxy (у нас он будет использоваться браузером для SSO аутентификации в squid, но так же может быть использован и для SSO аутентификации в web сервере, например, apache), выгружаем ключи, копируем их на authproxy | + | Добавляем в kdc principal сервиса HTTP, работающего на authproxy (у нас он будет использоваться браузером для SSO аутентификации в squid, но так же, может быть использован и c web сервером, например - apache) выгружаем ключи и копируем их на authproxy: |
<code> | <code> | ||
- | kdc# kadmin.local -q 'addprinc -randkey HTTP/authproxy.bmstu.ru' | + | kdc# kadmin.local -q 'addprinc -randkey HTTP/authproxy.corp.ru' |
- | kdc# kadmin.local -q 'ktadd -k authproxyhttp.keytab HTTP/authproxy.bmstu.ru' | + | kdc# kadmin.local -q 'ktadd -k authproxyhttp.keytab HTTP/authproxy.corp.ru' |
kdc# scp authproxyhttp.keytab admin@authproxy: | kdc# scp authproxyhttp.keytab admin@authproxy: | ||
</code> | </code> | ||
- | Подключаем прокси сервер к kerberos сфере, копируем ключи в системный файл и предоставляем доступ к нему для сервиса squid | + | Подключаем прокси сервер к kerberos сфере, копируем ключи в системный файл и предоставляем доступ к нему для сервиса squid: |
<code> | <code> | ||
Line 89: | Line 89: | ||
</code> | </code> | ||
- | Настраиваем прокси сервис на использование kerberos аутентификации | + | Настраиваем прокси сервис на использование kerberos аутентификации: |
<code> | <code> | ||
Line 106: | Line 106: | ||
<code> | <code> | ||
linuxclientN# nano /etc/environment | linuxclientN# nano /etc/environment | ||
- | </code><code | + | </code><code> |
export http_proxy=http://authproxy.corp.ru:3128/ | export http_proxy=http://authproxy.corp.ru:3128/ | ||
export https_proxy=http://authproxy.corp.ru:3128/ | export https_proxy=http://authproxy.corp.ru:3128/ | ||
export no_proxy=localhost,127.0.0.1,corp.ru | export no_proxy=localhost,127.0.0.1,corp.ru | ||
</code> | </code> | ||
+ | |||
+ | Происходящие процессы аутентификации можно наблюдать в этих журнальных файлах (частой причиной проблем в работе протокола kerberos, кроме DNS, может быть расхождение времени в системах более чем на 5 минут) | ||
+ | |||
+ | <code> | ||
+ | kdc# tail -f /var/log/auth.log | ||
+ | |||
+ | authproxy# tail -f /var/log/squid/access.log | ||
+ | </code> | ||
+ | |||
+ | |||
Аналогично можно настроить "прозрачный" доступ соответствующих программ к сервисам SMTP, IMAP, LDAP, XMPP, CIFS и, даже, SSH:) | Аналогично можно настроить "прозрачный" доступ соответствующих программ к сервисам SMTP, IMAP, LDAP, XMPP, CIFS и, даже, SSH:) | ||
Line 116: | Line 126: | ||
В следующей статье планирую рассказать как мы дополнили "Cамое простое решение для Kerberos" реализацией GPO на основе ansible-pull и GitLab | В следующей статье планирую рассказать как мы дополнили "Cамое простое решение для Kerberos" реализацией GPO на основе ansible-pull и GitLab | ||
- | На этом все, спасибо, буду рад ответить на вопросы в комментариях | + | На этом все, спасибо, буду рад ответить на вопросы в комментариях. |