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
kerberos_сервера_на_замену_microsoft_ad [2023/04/28 12:01]
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>​
-# 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 41:
  
 <​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 126:
 В следующей статье планирую рассказать как мы дополнили "​Cамое простое решение для Kerberos"​ реализацией GPO на основе ansible-pull и GitLab В следующей статье планирую рассказать как мы дополнили "​Cамое простое решение для Kerberos"​ реализацией GPO на основе ansible-pull и GitLab
  
-На этом все, спасибо,​ буду рад ответить на вопросы в комментариях+На этом все, спасибо,​ буду рад ответить на вопросы в комментариях.
    
kerberos_сервера_на_замену_microsoft_ad.1682672500.txt.gz · Last modified: 2023/04/28 12:01 by val