Домен/Использование Kerberos: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «{{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 со следующим содержимым (например):
<pre>
{
/etc/chromium/default
  "AuthServerAllowlist": "*.etersoft.ru,*.eterhost.ru",
@@ -5,6 +5,8 @@
<!-- "AuthNegotiateDelegateAllowlist": "*.etersoft.ru,*.eterhost.ru" -->
  # Default:
}
CHROMIUM_FLAGS="--enable-seccomp-sandbox"
+CHROMIUM_FLAGS="$CHROMIUM_FLAGS  --auth-server-whitelist=*.etersoft.ru,*.eterhost.ru"
+
</pre>


Должен быть ещё способ задания настроек по умолчанию на уровне пользователя.
Должен быть ещё способ задания настроек по умолчанию на уровне пользователя.
* 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
Открыть about:config в firefox и добавить через запятую нужные узлы:
network.negotiate-auth.delegation-uris .etersoft.ru
<!-- 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 logo.png
Alt Club.png
Alt linux team.png

Навигация

Главная: ALT-review

Все статьи

Предложения и пожелания

Ресурсы

FAQ


На этой странице приводится пример использование билетов 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",
}

Должен быть ещё способ задания настроек по умолчанию на уровне пользователя.

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");

Способ общесистемных настроек пока не найден.

IE

Добавить в доверенные сайты

https://ping.force.com/Support/PingFederate/Integrations/How-to-configure-supported-browsers-for-Kerberos-NTLM

  1. Свойства браузера -> Безопасность -> Надёжные сайты
  2. Нажать на кнопку "Сайты" и добавить адрес нужного сайта
  3. Нажать на кнопку "Другое" и найти раздел " Проверка подлинности пользователя" в окошке "Параметры"
  4. Выбрать пункт "Автоматический вход в сеть с текущим именем пользователя и паролем"

Файловые системы

Монтирование 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

Windows

Список полученных билетов:

> klist

Очистить:

> klist purge

Серверная сторона

nginx

Apache

mod_auth_kerb

Не используйте mod_auth_kerb, он давно устарел и удалён, см. 39063. Перейдите к mod_auth_gssapi.


  1. epmi apache2-mod_auth_kerb
  2. 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

  1. epmi apache2-mod_auth_gssapi
  2. 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