Zimbra

Материал из Xgu.ru

Перейти к: навигация, поиск

[править] Настройка прозрачной авторизации в Zimbra (SPNEGO)

Дано: Zimbra 8.7.0, домен Windows 2012R2

Создаем учетную запись в домене, через которую будет происходить Kerberos-авторизация. Пускай сервер Зимбры называется zimbra, домен mail.local, а доменный (kerberos) пользователь — zmk.

Создаём пользователя zmk с хорошим, годным паролем который запретим менять, а учетную запись защитим от удаления. Теперь создаём имя входа для службы http. С контроллера домена выполняем команду: C:\Windows\System32> setspn -a HTTP/zmk zmk

Свяжем наш сервер Зимбры с учетной записью zmk:

    setspn -A HTTP/zimbra.mail.local zmk

Теперь создадим keytab-файл.

    ktpass.exe -out c:\jetty.keytab -princ HTTP/zimbra.mail.local@mail.local -mapUser mail\zmk -mapOp set -pass
    Zimbra123 -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL

Если кейтаб создался, то вы увидите вывод: Targeting domain controller: dc.mail.local Using legacy password setting method Successfully mapped HTTP/zimbra.mail.local to zmk. Key created. Теперь переносим полученный кейтаб на сервер Зимбры, кладём сюда: /opt/zimbra/data/mailboxd/spnego/jetty.keytab Не меняйте название файла. По умолчанию Zimbra будет искать только файл с таким именем. И не забудьте поменять права на файл:

    chown zimbra:zimbra /opt/zimbra/data/mailboxd/spnego/jetty.keytab

Переходим к настройке самой Зимбры.

От пользователя zimbra:

    su - zimbra

Включаем SPNEGO авторизацию

    zmprov mcf zimbraSpnegoAuthEnabled TRUE

Укажем адрес, куда перекидывать пользователей если не удалось автоматически их авторизовать:

    zmprov mcf zimbraSpnegoAuthErrorURL '/zimbra/?ignoreLoginURL=1'

Задаём, в каком домене пытаться авторизовать пользователей:

    zimbraSpnegoAuthRealm MAIL.LOCAL

У пользователей не обязательно должны быть адреса почтовых ящиков идентичны домену поиска. Допустим домен поиска mail.local, а почта у пользователей @mydomain.ru.

Теперь привяжем учетные данные, через которые Zimbra будет пытаться проводить авторизацию.

    zmprov ms zimbra.mail.local zimbraSpnegoAuthTargetName HTTP/zimbra.mail.local
    zmprov ms zimbra.mail.local zimbraSpnegoAuthPrincipal HTTP/zimbra.mail.local@mail.local

Далее в документации говорится, как настроить перенаправление пользователей при не удачной прозрачной авторизации. Документация говорит нам «zimbraSpnegoAuthErrorURL is Unset and browser not configured. It will show customise http 401 error jsp page with link to wiki page for browser configuration.» (Если zimbraSpnegoAuthErrorURL не задано и браузер не сконфигурирован, то будет показана страница с 401 ошибкой и произойдет редирект на страницу zimbra-wiki, где будет написано, как настроить браузер) — нам не подходит, будем указывать параметр.

Далее документация говорит «If browser not configured, i.e. after http 401 error, page will automatically redirect to default login page. This will not show any error page» (Если браузер не сконфигурирован, то после 401 ошибки будет редирект на дефолтную страницу авторизации, с предложением ввести логин и пароль. Страница с 401 ошибкой не будет показана»

    zmprov mcf zimbraSpnegoAuthErrorURL '/?ignoreLoginURL=1'

Документация продолжает говорить с нами. Теперь она говорит «If browser not configured, i.e. after http 401 error, page will automatically redirect to default login.jsp Make sure to append ?ignoreLoginURL=1 when you add redirect with in application context. This will not show any error page.» (Если браузер не сконфигурирован, то после 401 ошибки произойдет редирект на login.jsp. Убедитесь, что вы ввели ?ignoreLoginURL=1 когда добавляете перенаправление в этом контексте. Никаких ошибок не будет показано». Ну что же, раз говорит — делаем:

    zmprov mcf zimbraSpnegoAuthErrorURL '../../zimbra/public/login.jsp?ignoreLoginURL=1'

Тут обратите внимание на «../../» — в некоторых документациях на просторах интернетов эта конструкция выглядит как «../» — так работать не будет.

Замечу, что у меня ни в одном из браузеров (ФуриФокс, IE11, Chrome) не происходит редирект на страницу ввода пароля, если браузер не настроен. Настройка браузера будет описана ниже.

Теперь настроим, в каком домене kerberos нужно работать. Это должен быть тот же домен, что указан в «zimbraSpnegoAuthRealm»

    zmprov md mail.local zimbraAuthKerberos5Realm mail.local

Укажем адрес входа клиентов:

    zmprov md mail.local zimbraWebClientLoginURL '../service/spnego'

И выхода:

    zmprov md mail.local zimbraWebClientLogoutURL '../?sso=1'

Так как у нас для почты используется нормальный домен, допустим @mydomain.ru, а адрес почтового сервера, по которому ответит веб-морда Zimbra mx.mydomain.ru — то вам, возможно, понадобится сделать алиас этого адреса на ваш домен mail.local. Для этого, заходим под администратором, идем в «Настройка», далее «Домены», выделаем мышкой наш домен mail.local, правой клавишей «Создать псевдоним для домена» и в открывшемся окне пишем:

Псевдоним домена: mx.mydomain.ru Домен назначения: mail.local

На этом с настройкой сервера закончили — перезапустим:

    zmcontrol restart


[править] Настройка браузеров.

Настройка довольно проста. Для браузера FireFox открываем новую вкладку и пишем в адресной строке about:config. Соглашаемся быть аккуратными и ищем две строки — network.negotiate-auth.delegation-uris и network.negotiate-auth.trusted-uris. В них вписываем адрес нашего сервера https://zimbra.mail.local

А для IE и хрома сделаем это через групповую политику. И так, открываем Управление групповой политикой (gpmc.msc). Создаем новую или правим имеющуюся. Идем в политике: Конфигурация пользователя -> Политики -> Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка «Безопасность». Шаблон зоны интрасети. Включено. Интрасеть: Низкий. Список назначений зоны для веб-сайтов. Включено. Вводим назначения (кнопка «Показать»). В графе «Имя значения» — https://zimbra.mail.local в графе значение — цифру «1» (подсказка по значениям в предыдущем окне). Дальше, думаю знаете, что делать с этой политикой.

Осталась последняя часть — небольшая рихтовочка krb5.ini. Идем в каталог /opt/zimbra/jetty/etc/ и открываем файл krb5.ini.in. Имеено krb5.ini.in — так как иначе, при перезапуске Zimbra krb5.ini перезапишется файлом krb5.ini.in. Это верно и для многих других конфигурационных файлов. По умолчанию файл выглядит вот так:

    [libdefaults] default_realm = %%zimbraSpnegoAuthRealm%%
    default_keytab_name = FILE:/opt/zimbra/data/mailboxd/spnego/jetty.keytab
    default_tkt_enctypes = rc4-hmac,des-cbc-md4,des-cbc-crc
    default_tgs_enctypes = rc4-hmac,des-cbc-md4,des-cbc-crc
    [realms] %%zimbraSpnegoAuthRealm%% = {
    default_domain = %%zimbraSpnegoAuthRealm%%
    }
    [domain_realm] .local = %%zimbraSpnegoAuthRealm%%
    [appdefaults] autologin = true forwardable=true

Приводим вот к такому виду:

    [libdefaults]
    default_realm = %%zimbraSpnegoAuthRealm%%
    default_keytab_name = FILE:/opt/zimbra/data/mailboxd/spnego/jetty.keytab
    default_tkt_enctypes = aes256-cts-hmac-sha1-96,aes256-cts,rc4-hmac,des-cbc-md4,des-cbc-crc
    default_tgs_enctypes = aes256-cts-hmac-sha1-96,aes256-cts,rc4-hmac,des-cbc-md4,des-cbc-crc
    ticket_lifetime = 24h
    renew_lifetime = 7d
    [realms]
    %%zimbraSpnegoAuthRealm%% = {
    kdc = dc.mail.local
    kdc = dc2.mail.local
    admin_server = dc.mail.local
    admin_server = dc2.mail.local
    default_domain = %%zimbraSpnegoAuthRealm%%
    }
    [domain_realm]
    mail.local = %%zimbraSpnegoAuthRealm%%
    .mail.local = %%zimbraSpnegoAuthRealm%%
    [appdefaults]
    autologin = true
    forwardable=true

Остался последний штрих. Качаем Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 распаковываем и укладываем оба файла из архива (US_export_policy.jar, local_policy.jar) в каталог /opt/zimbra/j2sdk-20140721/jre/lib/security/

Теперь ещё раз перезапускаем зимбру и пробуем авторизоваться на https://zimbra.mail.local. Заходит? Отлично! Я вас поздравляю! Не заходит? Сочувствую. Открываете /opt/zimbra/log/zmmailboxd.out и смотрите, что не так. Лично у меня были косяки из-за алгоритма шифрования keytab-файла. Изначально я выбрал AES256-SHA1. Потом в итоге переделал на RC4-HMAC.



https://wiki.zimbra.com/wiki/Configuring_SPNEGO_Single_Sign-On

https://wiki.zimbra.com/wiki/Configure_Browser_for_SPNEGO

Источник — «http://xgu.ru/wiki/Zimbra»