User Tools

Site Tools


kerberos_сервера_на_замену_microsoft_ad

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
kerberos_сервера_на_замену_microsoft_ad [2023/04/28 12:01]
val
kerberos_сервера_на_замену_microsoft_ad [2023/04/28 15:28]
val
Line 3: Line 3:
 Всем привет! Всем привет!
  
-Вот такой вопрос прозвучал в комментариях к [[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>​
-# apt install krb5-kdc krb5-admin-server+kdc# apt install krb5-kdc krb5-admin-server
        
-# krb5_newrealm+kdc# krb5_newrealm
 ... ...
  
-# service krb5-kdc restart+kdc# service krb5-kdc restart
 </​code>​ </​code>​
  
Line 41: Line 39:
  
 <​code>​ <​code>​
-kadmin.local -q '​addprinc -pw somepassword ​ivanovii'​+kdc# kadmin.local -q '​addprinc -pw somepassword1 ​ivanovii'​ 
 + 
 +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
  
-# apt install squid+authproxy# apt install squid
 </​code>​ </​code>​
  
-Добавляем principal сервиса HTTP, работающего на authproxy (у нас он будет использоваться браузером для SSO аутентификации ​на squid, но так же может быть использован и для SSO аутентификации на )+Добавляем ​в kdc principal сервиса HTTP, работающего на authproxy (у нас он будет использоваться браузером для SSO аутентификации ​в squid, но так жеможет быть использован и c web сервером,​ например - apache) выгружаем ключи и копируем ​их на authproxy:
  
 <​code>​ <​code>​
-   ​37  ​kadmin.local -q '​addprinc -randkey HTTP/​authproxy.bmstu.ru'+kdc# kadmin.local -q '​addprinc -randkey HTTP/​authproxy.corp.ru'
  
-   ​39  ​kadmin.local -q 'ktadd -k authproxyhttp.keytab HTTP/​authproxy.bmstu.ru'+kdc# kadmin.local -q 'ktadd -k authproxyhttp.keytab HTTP/​authproxy.corp.ru'
        
-   scp authproxyhttp.keytab ​val@authproxy:+kdc# scp authproxyhttp.keytab ​admin@authproxy:
 </​code>​ </​code>​
 +
 +Подключаем прокси сервер к kerberos сфере, копируем ключи в системный файл и предоставляем доступ к нему для сервиса squid:
 +
 +<​code>​
 +authproxy# apt install krb5-user
 +
 +authproxy# nano /​etc/​krb5.conf
 +</​code><​code>​
 +[libdefaults]
 +        default_realm = CORP.RU
 +</​code><​code>​
 +authproxy# ktutil
 +</​code><​code>​
 +ktutil: ​ rkt /​home/​admin/​authproxyhttp.keytab
 +ktutil: ​ wkt /​etc/​krb5.keytab
 +ktutil: ​ exit
 +</​code><​code>​
 +authproxy# chgrp proxy /​etc/​krb5.keytab
 +
 +authproxy# chmod 640 /​etc/​krb5.keytab
 +</​code>​
 +
 +Настраиваем прокси сервис на использование kerberos аутентификации:​
 +
 +<​code>​
 +authproxy# nano /​etc/​squid/​conf.d/​corp.conf
 +</​code><​code>​
 +auth_param negotiate program /​usr/​lib/​squid/​negotiate_kerberos_auth -d
 +
 +acl authuser proxy_auth REQUIRED
 +
 +http_access allow authuser
 +</​code><​code>​
 +authproxy# service squid restart
 +</​code>​
 +
 +Для работы через proxy на рабочих станциях Linux достаточно установить переменные окружения:​
 +<​code>​
 +linuxclientN#​ nano /​etc/​environment
 +</​code><​code>​
 +export http_proxy=http://​authproxy.corp.ru:​3128/​
 +export https_proxy=http://​authproxy.corp.ru:​3128/​
 +export no_proxy=localhost,​127.0.0.1,​corp.ru
 +</​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 68: Line 124:
 В следующей статье планирую рассказать как мы дополнили "​Cамое простое решение для Kerberos"​ реализацией GPO на основе ansible-pull и GitLab В следующей статье планирую рассказать как мы дополнили "​Cамое простое решение для Kerberos"​ реализацией GPO на основе ansible-pull и GitLab
  
-На этом все, спасибо,​ буду рад ответить на вопросы в комментариях+На этом все, спасибо,​ буду рад ответить на вопросы в комментариях.
    
kerberos_сервера_на_замену_microsoft_ad.txt · Last modified: 2023/04/29 06:03 by val