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 13:34]
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>​
Line 45: Line 43:
 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, но так жеможет быть использован и 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 87:
 </​code>​ </​code>​
  
-Настраиваем прокси сервис на использование kerberos аутентификации+Настраиваем прокси сервис на использование kerberos аутентификации:
  
 <​code>​ <​code>​
Line 106: Line 104:
 <​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 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