Домен/Использование Kerberos: различия между версиями
(Новая страница: «{{review |Title = Использование Kerberos |Annotation = Аутентификация в сервисах с использованием…») |
Нет описания правки |
||
(не показано 27 промежуточных версий 3 участников) | |||
Строка 14: | Строка 14: | ||
На этой странице приводится пример использование билетов Kerberos в различных программах для подключения к сервисам. | На этой странице приводится пример использование билетов Kerberos в различных программах для подключения к сервисам. | ||
При правильной настройке пользователю выдаётся билет (TGT) при логине в систему. | |||
== kinit / klist / kdestroy == | |||
Отдельное управление билетами для отладки осуществляется следующими командами: | |||
Получить билет: | |||
$ kinit [USER][@REALM] | |||
В настроенной системе достаточно просто kinit, а указание полной формы типа kinit user@EXAMPLE.COM позволяет получить тикет в системе сразу после установки epmi /usr/bin/kinit. | |||
Удалить полученные билеты из кэша: | |||
$ kdestroy | |||
Просмотреть полученные билеты: | |||
$ klist | |||
Для отладки получения билета удобно использовать | |||
$ export KRB5_TRACE=/dev/stdout | |||
https://web.mit.edu/kerberos/krb5-devel/doc/admin/env_variables.html | |||
Если машина находится в другой сети, то потребуется ручное указание REALM и соответствия его домену в /etc/krb5.conf: | |||
<pre> | |||
default_realm = EXAMPLE.COM | |||
... | |||
[realms] | |||
EXAMPLE.COM = { | |||
default_domain = example.com | |||
} | |||
</pre> | |||
= Браузеры = | |||
== Chromium == | == Chromium == | ||
$ chromium --auth-server-whitelist="*.example.com,*.etersoft.ru" | $ chromium --auth-server-whitelist="*.example.com,*.etersoft.ru" | ||
Для того, чтобы настройки | Для того, чтобы установить настройки для всех пользователей машины, создайте /etc/chromium/policies/recommended/kerberos.json со следующим содержимым (например): | ||
{ | |||
/etc/chromium/ | "AuthServerAllowlist": "*.etersoft.ru,*.eterhost.ru", | ||
<!-- "AuthNegotiateDelegateAllowlist": "*.etersoft.ru,*.eterhost.ru" --> | |||
} | |||
Должен быть ещё способ задания настроек по умолчанию на уровне пользователя. | Должен быть ещё способ задания настроек по умолчанию на уровне пользователя. | ||
* https://dev.chromium.org/administrators/linux-quick-start | |||
* https://dev.chromium.org/administrators/policy-list-3#AuthServerWhitelist | |||
== Brave == | |||
Способ аналогичен chromium, но файл в другом каталоге: | |||
/etc/brave/policies/recommended/kerberos.json | |||
== curl == | == curl == | ||
$ kinit | $ kinit | ||
$ curl --negotiate -u : "http://example.com" | $ curl --negotiate -u : "http://example.com" | ||
(если не работает, проверяйте $ epmqf curl — он может оказаться от CryptoPro, где он старый и не поддерживает GSSAPI) | |||
== wget == | |||
Судя по всему, поддержка GSSAPI [https://bugzilla.redhat.com/show_bug.cgi?id=126477 так и не включена апстримом]. | |||
== Firefox == | == Firefox == | ||
Открыть about:config в firefox и добавить через запятую нужные узлы: | |||
<!-- network.negotiate-auth.delegation-uris .etersoft.ru,.eterhost.ru --> | |||
network.negotiate-auth.trusted-uris .etersoft.ru | network.negotiate-auth.trusted-uris .etersoft.ru,.eterhost.ru | ||
Либо добавить в prefs.js в профиле браузера (в каталоге ~/.mozilla/firefox) при закрытом браузере: | |||
user_pref("network.negotiate-auth.trusted-uris", ".etersoft.ru,.eterhost.ru"); | |||
Способ общесистемных настроек пока не найден. | |||
* https://insinuator.net/2016/02/how-to-test-kerberos-authenticated-web-applications/ | * https://insinuator.net/2016/02/how-to-test-kerberos-authenticated-web-applications/ | ||
* https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/sso-config-firefox.html | * https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/sso-config-firefox.html | ||
* https://forum.altlinux.org/index.php?topic=15876.msg165572#msg165572 | * https://forum.altlinux.org/index.php?topic=15876.msg165572#msg165572 | ||
* https://people.redhat.com/mikeb/negotiate/ | |||
== IE == | |||
Добавить в доверенные сайты | |||
https://ping.force.com/Support/PingFederate/Integrations/How-to-configure-supported-browsers-for-Kerberos-NTLM | |||
# Свойства браузера -> Безопасность -> Надёжные сайты | |||
# Нажать на кнопку "Сайты" и добавить адрес нужного сайта | |||
# Нажать на кнопку "Другое" и найти раздел " Проверка подлинности пользователя" в окошке "Параметры" | |||
# Выбрать пункт "Автоматический вход в сеть с текущим именем пользователя и паролем" | |||
= Файловые системы = | |||
== Монтирование CIFS-ресурса == | == Монтирование CIFS-ресурса == | ||
# kinit | # kinit | ||
# smbclient -k -L //SERVER | |||
# mount -o sec=krb5 //SERVER/share /mnt/share | # mount -o sec=krb5 //SERVER/share /mnt/share | ||
Строка 54: | Строка 114: | ||
$ sudo mount ... | $ sudo mount ... | ||
(тикет перестаёт быть доступен после повышения привилегий) | (тикет перестаёт быть доступен после повышения привилегий) | ||
= Прочее = | |||
== ssh == | |||
Просто подключаемся к ssh-серверу, настроив его (см. ниже настройку sshd) | |||
Чтобы подключаться к пользователю с другим логином (ssh otheruser@host) | |||
нужно на удалённой машине создать файл ~/.k5login и в него вписать разрешённые адреса, например: | |||
guest@ETERSOFT.RU | |||
pv@ETERSOFT.RU | |||
Так как содержимое файла .k5login перекрывает правила по умолчанию, | |||
нужно явно вписывать туда всех пользователей, которым разрешено подключение. | |||
== Подключение к LDAP == | == Подключение к LDAP == | ||
* [[Домен/GSSAPI]] | * [[Домен/GSSAPI]] | ||
* Также можно посмотреть на [https://bugzilla.altlinux.org/show_bug.cgi?id=35357 test на python для подключения к LDAP]. | |||
== Windows == | |||
Список полученных билетов: | |||
> klist | |||
Очистить: | |||
> klist purge | |||
= Серверная сторона = | = Серверная сторона = | ||
Строка 65: | Строка 150: | ||
* [[Создание SPN и Keytab файла]] | * [[Создание SPN и Keytab файла]] | ||
* [[Nginx/AD-auth]] | * [[Nginx/AD-auth]] | ||
== Apache == | |||
=== mod_auth_kerb === | |||
Не используйте mod_auth_kerb, он давно устарел и [https://bugzilla.altlinux.org/show_bug.cgi?id=39063 удалён, см. 39063]. Перейдите к mod_auth_gssapi. | |||
# epmi apache2-mod_auth_kerb | |||
# a2enmod auth_krb5 && serv httpd2 reload | |||
положил тикет с SPN в /etc/krb5.time.office.keytab | |||
добавил такие настройки: | |||
AuthType Kerberos | |||
AuthName "Please enter your login and password for ETERSOFT.RU" | |||
KrbMethodNegotiate on | |||
KrbMethodK5Passwd on | |||
KrbServiceName HTTP/time.office.etersoft.ru@ETERSOFT.RU | |||
KrbAuthRealms ETERSOFT.RU | |||
Krb5Keytab /etc/krb5.time.office.keytab | |||
#KrbLocalUserMapping On | |||
=== mod_auth_gssapi === | |||
# epmi apache2-mod_auth_gssapi | |||
# a2enmod auth_gssapi && serv httpd2 reload | |||
AuthType GSSAPI | |||
AuthName "GSSAPI Login" | |||
GssapiBasicAuth On | |||
GssapiCredStore keytab:/etc/apache2/http.keytab | |||
require valid-user | |||
RequestHeader set REMOTE-USER %{REMOTE_USER}s | |||
См. также полную статью [[Apache2/AD-auth]]. | |||
https://github.com/haiwen/seafdav/issues/8 | |||
== sshd == | |||
Для разрешения подключаться, используя билет Kerberos, нужно раскомментировать в /etc/openssh/sshd_config: | |||
GSSAPIAuthentication yes | |||
== nodejs == | |||
* [https://habrahabr.ru/post/321962/ nodejs: SSO-авторизация через Kerberos] | |||
== RunaWFE == | |||
* http://www.runawfe.org/rus/doc/KerberosAuthentication | |||
Текущая версия от 20:19, 20 января 2023
Журнал ALT-review
Title::Использование Kerberos- Раздел: Section::практика Тег: Tag::kerberos,домен,приложения
|
На этой странице приводится пример использование билетов Kerberos в различных программах для подключения к сервисам. При правильной настройке пользователю выдаётся билет (TGT) при логине в систему.
kinit / klist / kdestroy
Отдельное управление билетами для отладки осуществляется следующими командами:
Получить билет:
$ kinit [USER][@REALM]
В настроенной системе достаточно просто kinit, а указание полной формы типа kinit user@EXAMPLE.COM позволяет получить тикет в системе сразу после установки epmi /usr/bin/kinit.
Удалить полученные билеты из кэша:
$ kdestroy
Просмотреть полученные билеты:
$ klist
Для отладки получения билета удобно использовать
$ export KRB5_TRACE=/dev/stdout
https://web.mit.edu/kerberos/krb5-devel/doc/admin/env_variables.html
Если машина находится в другой сети, то потребуется ручное указание REALM и соответствия его домену в /etc/krb5.conf:
default_realm = EXAMPLE.COM ... [realms] EXAMPLE.COM = { default_domain = example.com }
Браузеры
Chromium
$ chromium --auth-server-whitelist="*.example.com,*.etersoft.ru"
Для того, чтобы установить настройки для всех пользователей машины, создайте /etc/chromium/policies/recommended/kerberos.json со следующим содержимым (например):
{ "AuthServerAllowlist": "*.etersoft.ru,*.eterhost.ru", }
Должен быть ещё способ задания настроек по умолчанию на уровне пользователя.
- https://dev.chromium.org/administrators/linux-quick-start
- https://dev.chromium.org/administrators/policy-list-3#AuthServerWhitelist
Brave
Способ аналогичен chromium, но файл в другом каталоге:
/etc/brave/policies/recommended/kerberos.json
curl
$ kinit $ curl --negotiate -u : "http://example.com"
(если не работает, проверяйте $ epmqf curl — он может оказаться от CryptoPro, где он старый и не поддерживает GSSAPI)
wget
Судя по всему, поддержка GSSAPI так и не включена апстримом.
Firefox
Открыть about:config в firefox и добавить через запятую нужные узлы:
network.negotiate-auth.trusted-uris .etersoft.ru,.eterhost.ru
Либо добавить в prefs.js в профиле браузера (в каталоге ~/.mozilla/firefox) при закрытом браузере:
user_pref("network.negotiate-auth.trusted-uris", ".etersoft.ru,.eterhost.ru");
Способ общесистемных настроек пока не найден.
- https://insinuator.net/2016/02/how-to-test-kerberos-authenticated-web-applications/
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/sso-config-firefox.html
- https://forum.altlinux.org/index.php?topic=15876.msg165572#msg165572
- https://people.redhat.com/mikeb/negotiate/
IE
Добавить в доверенные сайты
- Свойства браузера -> Безопасность -> Надёжные сайты
- Нажать на кнопку "Сайты" и добавить адрес нужного сайта
- Нажать на кнопку "Другое" и найти раздел " Проверка подлинности пользователя" в окошке "Параметры"
- Выбрать пункт "Автоматический вход в сеть с текущим именем пользователя и паролем"
Файловые системы
Монтирование CIFS-ресурса
# kinit # smbclient -k -L //SERVER # mount -o sec=krb5 //SERVER/share /mnt/share
Не ясным остаётся вопрос с
$ kinit $ sudo mount ...
(тикет перестаёт быть доступен после повышения привилегий)
Прочее
ssh
Просто подключаемся к ssh-серверу, настроив его (см. ниже настройку sshd)
Чтобы подключаться к пользователю с другим логином (ssh otheruser@host) нужно на удалённой машине создать файл ~/.k5login и в него вписать разрешённые адреса, например:
guest@ETERSOFT.RU pv@ETERSOFT.RU
Так как содержимое файла .k5login перекрывает правила по умолчанию, нужно явно вписывать туда всех пользователей, которым разрешено подключение.
Подключение к LDAP
- Также можно посмотреть на test на python для подключения к LDAP.
Windows
Список полученных билетов:
> klist
Очистить:
> klist purge
Серверная сторона
nginx
Apache
mod_auth_kerb
Не используйте mod_auth_kerb, он давно устарел и удалён, см. 39063. Перейдите к mod_auth_gssapi.
- epmi apache2-mod_auth_kerb
- a2enmod auth_krb5 && serv httpd2 reload
положил тикет с SPN в /etc/krb5.time.office.keytab
добавил такие настройки:
AuthType Kerberos AuthName "Please enter your login and password for ETERSOFT.RU" KrbMethodNegotiate on KrbMethodK5Passwd on KrbServiceName HTTP/time.office.etersoft.ru@ETERSOFT.RU KrbAuthRealms ETERSOFT.RU Krb5Keytab /etc/krb5.time.office.keytab #KrbLocalUserMapping On
mod_auth_gssapi
- epmi apache2-mod_auth_gssapi
- a2enmod auth_gssapi && serv httpd2 reload
AuthType GSSAPI AuthName "GSSAPI Login" GssapiBasicAuth On GssapiCredStore keytab:/etc/apache2/http.keytab
require valid-user RequestHeader set REMOTE-USER %{REMOTE_USER}s
См. также полную статью Apache2/AD-auth.
https://github.com/haiwen/seafdav/issues/8
sshd
Для разрешения подключаться, используя билет Kerberos, нужно раскомментировать в /etc/openssh/sshd_config:
GSSAPIAuthentication yes
nodejs
RunaWFE