The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Установка и настройка Jabber-сервера в CentOS 5.x, входящего в домен Windows (jabber pidgin openfire centos kerberos auth linux centos samba ldap domain)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: jabber, pidgin, openfire, centos, kerberos, auth, linux, centos, samba, ldap, domain,  (найти похожие документы)
From: Бездомников Евгений <e.bezdomnikov@gmail.com.> Newsgroups: email Date: Mon, 21 Feb 2010 17:02:14 +0000 (UTC) Subject: Установка и настройка Jabber-сервера в CentOS 5.x, входящего в домен Windows Данная статья рассеивает мглу неизвестности в процессе установки и настройки связки "CentOS 5.x + OpenFire + Kerberos + SSO + Pidgin". Лично у меня ушла целая неделя на настройку. Основные ошибки были по банальной невнимательности и из-за некорректного перевода статей. Сразу отмечу источники, которыми я пользовался при написании данной статьи: 1. Статья с официального ресурса разработчика OpenFire. "HOWTO: SSO Configuration for Windows (Server and Clients) and Mac Clients" 2. Еще статья с официального ресурса разработчика. "SSO: An easier way to join your CentOS 5 Openfire server to an AD Domain" 3. Перевод статьи под п.1: "Openfire - Часть 2. Openfire+Red5+Spark+SSO на Windows" Ну что ж, пожалуй, начнем. Для начала введем некоторые константы. OpenFire установлен в папку /opt/openfire mydomain.local - имя нашего домена MYDOMAIN.LOCAL - realm нашего домена dc1.mydomain.local - fqdn контроллер домена dc2.mydomain.local - fqdn вторичного контроллера домена (если есть) jabber.mydomain.local - fqdn имя сервера, где установлен openfire 192.168.1.1 - IP контроллера домена. 192.168.1.2 - IP резервного контроллера домена. 192.168.1.3 - IP сервера, где установлен openfire. Первое что нужно сделать и этот шаг очень важен - это ввести нашу линукс-машину в windows домен. Очень подробно и хорошо этот процесс ,на мой взгляд, описан в [2]. Чтобы не переходить со ссылке я опишу основные моменты. 1. Настройка разрешения имен Здесь все просто - мы настраиваем резолвинг нашего jabber-сервера: Добавляем в /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.3 jabber.mydomain.local jabber и резолвинг других имен в домене. Для этого редактируем файл /etc/resolv.conf search mydomain.local nameserver 192.168.1.1 nameserver 192.168.1.2 Для контроля попробуте резолвить какое-нибудь имя в домене с помощью утилиты nslookup. 2. Настройка времени. Протокол Kerberos очень чувствителен к времени, поэтому необходимо синхронизировать часы. Данную функцию можно доверить демону ntpd. В Интернете есть много информации на этот счет. Не поленитесь и настройте его. Для принудительной синхронизации часов с часам контроллера домена (а именно он является сервером времени для всего домена) воспользуемся командой ntpdate: ntpdate 192.168.1.1 На выходе команды должно быть что-то в этом духе: 13 Feb 18:30:33 ntpdate[17161]: step time server 192.168.1.1 offset 11.730962 sec 3. Установка необходимых пакетов, настройка Samba, Kerberos. Устанавливаем пакеты указанные ниже. сyrus-sasl-gssapi samba samba-common После установки переходим к настройке samba. Бекапим на всякий случай оригинал файла настройки самбы: cp /etc/samba/smb.conf /etc/samba/smb.conf.orig Далее редактируем файл smb.conf. Очищаем его от всего лишнего, а точнее - все там удаляем (если, конечно, у вас новая установка): cp /dev/null /etc/samba/smb.conf И вставляем в /etc/samba/smb.conf только строчки указанные ниже: workgroup = MYDOMAIN security = ads realm = mydomain.local use kerberos keytab = true password server = dc1.mydomain.local dc2.mydomain.local После можно запустить samba: service samba start NOTE: Да, кстати, не забудьте включить автозапуск samba при старте системы После успешного запуска нужно осуществить вход (join) в наш домен, т.е. сделать Jabber-сервер членом Windows-домена. Но, прежде чем это сделать, нужно сконфигурить Kerberos- это делается через файл /etc/krb5.conf. Ниже приведен листинг данного файла: [libdefaults] default_realm = MYDOMAIN.LOCAL dns_lookup_realm = true dns_lookup_kdc = true default_tkt_enctypes = des-cbc-crc des-cbc-md5 default_tgs_enctypes = des-cbc-crc des-cbc-md5 [realms] MYDOMAIN.LOCAL = { kdc = mydomain.local:88 default_domain = mydomain.local } [domain_realm] mydomain.local = MYDOMAIN.LOCAL .mydomain.local = MYDOMAIN.LOCAL Теперь наш сервер готов вступить в домен. Для этого выполним команду: net -UAdministrator ads join где Administrator - это любая учетная запись с правами администратора в Windows - домене Все, теперь наш сервер в Windows-домене! Хочу еще раз отметить - этот шаг очень важен, я очень долго мучился из-за того, что мой Jabber-сервер по какой-то причине не был введен в домен и SSO отказывалась работать. 4. Установка openfire Установка очень хорошо описана на официальном ресурсе и , кроме того, установщик снабжен мастером с которым справится даже ребенок:) 5. Формирование keytab, для SSO. Формирование ключевой пары может происходить на любом компьютере домена под пользователем, обладающим административными правами, и установленным пакетом Support Tools от Microsoft (он идет с каждым дистрибутивом Windows,находится в папке SUPPORT). Теперь поэтапно будем формировать наш keytab. 1. Установить SupportTools. 2. Зайти в оснастку ActiveDirectory User and Computers и создать нового пользователя, который будет участвовать в SSO. Пользователь должен быть только в одной группе Domain Users (Пользователи домена). Необходимо отметить опции:
  • Запретить смену пароля пользователем</li>
  • Срок действия пароля не ограничен</li>
  • Без предварительной проверки подлинности Kerberos.</li> 3. Создаем Kerberos XMPP SPN. Если вкратце - эта штука будет указывать, где находится наш Jabber-сервер, то есть будет хранить его fqdn имя. (SPN - Service Principal Name) Для формирования этого самого spn используем утилиту из SupportTools: setspn Наша команда будет выглядеть так: setspn -A xmpp/jabber.mydomain.local@MYDOMAIN.LOCAL xmpp-openfire Note: xmpp-openfire - это та новая учетная запись, которую мы создавали в п.2. Имя выбрано произвольно, можете назвать ее как вам захочется. 4. Далее нам нужно смеппить (mapping) наш созданный SPN на нашу учетку. Для этого есть утилита ktpass из состава того же SupportTools: ktpass -princ xmpp/jabber.mydomain.local@MYDOMAIN.LOCAL -mapuser xmpp-openfire@mydomain.local -pass * -ptype KRB5_NT_PRINCIPAL После выполнения будет запрос на ввод пароля, нужно ввести пароль учетной записи которую мы создали в п.2 5. Ну и наконец - формирование нашего заветного keytab. В официальной документации есть два способа формирования: 1- через SupportTools, 2- через средства Java поставляемые вместе с openfire (кстати линукс-дистрибутив openfire не содержит данных средств) Автор официальной документации очень расплывчато поясняет, зачем нужны два способа и каким именно keytab нужно пользоваться. Автор просто написал - если у вас не получилось с одним keytab, попробуйте другой:) Лично у меня получилось все с keytab, который я создал средствами SupportTools. Вот так: Ниже команда, которая создает файл keytab (файл будет в текущей директории): ktpass -princ xmpp/jabber.mydomain.local@MYDOMAIN.LOCAL -mapuser xmpp-openfire@mydomain.local \ -pass * -ptype KRB5_NT_PRINCIPAL -out xmpp.keytab После ввода здесь так же нужно ввести пароль пользователя. Далее нужно перенести файл xmpp.keytab в директорию: /opt/openfire/resources (например, программой для файлового взаимодействия через протокол SSH: WinSCP) 6. Настройка openfire на SSO. Самое интересное будет сейчас;) Создаем файл: touch /opt/openfire/conf/gss.conf в него вносим следующее: com.sun.security.jgss.accept { com.sun.security.auth.module.Krb5LoginModule required storeKey=true keyTab="/opt/openfire/resources/xmpp.keytab" doNotPrompt=true useKeyTab=true realm="MYDOMAIN.LOCAL" principal="xmpp/jabber.mydomain.local@MYDOMAIN.LOCAL" debug=true isInitiator=false; }; debug=true - это режим отладки, он нужен только на период настройки, потом лучше его отключить. Остальные опции, думаю, понятны без комментариев. Далее нам нужно включить SSO в openfire. Для этого редактируем файл /opt/openfire/conf/openfire.xml и вносим следующий текст (между тегами <jive> </jive>) <sasl> <mechs>GSSAPI</mechs> <realm>MYDOMAIN.LOCAL</realm> <gssapi> <debug>true</debug> <config>/opt/openfire/conf/gss.conf</config> <useSubjectCredsOnly">false</useSubjectCredsOnly> </gssapi> </sasl> <authorization> <classList>org.jivesoftware.openfire.auth.DefaultAuthorizationPolicy</classList> </authorization> В этой конфигурации мы говорим серверу, чтобы он использовал GSSAPI механизм авторизации (он же SSO), указываем наш realm, а так же то, что нужно включить отладочный режим и расположение файла конфигурации этого механизма. После этого нам нужно добавить свойство (опцию) в конфигурацию сервера. Для этого заходим через веб интерфейс (http://jabber.mydomain.local:9090) в Server Manager, затем в Server Properties и в самом низу в Add new property : Property Name: xmpp.fqdn Property Value: [[B]]jabber.mydomain.local[[/B]] Жмем Save Property. После всех изменений нужно перезапустить openfire. service openfire restart. Рекомендую смотреть в лог файл warn.log (он находится в /opt/openfire/logs), чтобы понять, что не нравится серверу. Также в этом лог файле будут отображаться сообщения об ошибках при подключении клиентов. 7. Настройка клиента. Финишная прямая. Теперь переходим к настройке клиента. Я буду описывать настройку Windows клиента. Буду использовать Pidgin и Spark, т.к. они поддерживают SSO. Я лично рекомендую Pidgin, просто потому, что он не использует Java, в отличие от Spark:) Для работы SSO нам нужно настроить Kerberos. Для этого нужно установить пакет именуемый MIT for Windows. В процессе установки он потребует указать расположение файла krb5.ini Данный файл полная копия файла krb5.conf который мы создали - так что просто копируем его в C:\WINDOWS и указываем инсталятору MITа, где его брать. Далее нужно подшлифовать реестр: Для Windows 2000 SP4, Windows 2003 Server или Windows Vista: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters Value Name: AllowTGTSessionKey Value Type: REG_DWORD Value: 1 Для всей линейки Windows XP : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos Value Name: AllowTGTSessionKey Value Type: REG_DWORD Value: 1 Для применения данного параметра нужно перезагрузить компьютер (весьма досадное обстоятельство). В настройке Pidgin нет ничего особенного: - Выбираем протокол XMPP - Вводим имя пользователя (текущий логин) - Вводим имя сервера (jabber.mydomain.local) - Поле пароля оставляем пустое. Если все хорошо, то Pidgin запустится, если нет, то запускайте его в режиме отладки (опция -d при запуске) и читайте логи сервера. Лично у меня была одна проблема - сервер, где запущен openfire, не был корректно введен в домен. Кстати, об этом свидетельствует строка в логе в режиме отладки Pidgin: Server not found in Kerberos database. Если вы видите данную ошибку, знайте - сервер нужно удалить из домена и сделать join снова. Еще очень важный момент. Убедитесь, что в DNS - сервере нет больше A записей IP вашего сервера на другие имена. И чтобы обратная зона была настроена именно на ваше имя сервера, где расположен openfire. Проверено, SSO не будет работать, если есть более одного имени на один IP. Если вам необходимо сделать несколько имени, то их все нужно прописать в SPN и в DNS сделать CNAME запись на имя вашего сервера.

  • << Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

    Обсуждение [ Линейный режим | Показать все | RSS ]
     
  • 1.1, mma, 05:05, 26/02/2010 [ответить] [смотреть все]
  • +/
    Отличная статья, особенно раздел "7. Настройка клиента."

    Я вот уже полгода задумываюсь сделать SSO но так чтобы не надо было вводить даже логин. Это точно умеет спарк но я смотрю в сторону gajim ибо к нему както все привыкли.

     
  • 1.2, Аноним, 10:14, 26/02/2010 [ответить] [смотреть все]
  • +/
    Столько шаманства и впустую Что это за SSO где нужно вводить логин, все ваши ст... весь текст скрыт [показать]
     
     
  • 2.3, Евгений, 14:34, 26/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Уважаемый, не поделитесь рецептом счастья?:)

    > Если уж приходится вводить логин то можно ввести и пароль.

    Позвольте с Вами не согласиться. Речь идет о корпоративной внутренне связи. В которой участвуют обычные пользователи. Если меняется пароль входа в систему, то нужно и в клиенте его менять. Согласитесь, что это будет раздражать пользователей.

    > Я без всякого шаманства с керберосами и СаппортТулсами завел авторизацию из AD в openfire.

    Интересно как?:)

    > И никаких установок(кроме самого клиента) и ковыряний на клиентах.

    А "ковыряться" и не нужно. Я лично оформил все в виде MSI пакета и устанавливаю через групповые политики.

     
     
  • 3.4, vit, 19:37, 26/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Извиняюсь, с утра с памятью плохо. openfire ставился на windows.

    А вы не пробовали в качестве клиента pandion? у него в настройка есть галочка, чтото вроде "Встроенная аутентификация Windows". ненужно ни логина ни пароля указывать.

     
     
  • 4.5, Евгений, 09:59, 27/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Ну я так и предполагал. Ну так вот. Вы говорите об аутификации под названием NTLM. Это чисто виндовс-приблуда. С этим типом аутификации работает только Пандеон и сервер опенфаера должен быть только виндовый.

    Кроме того стабильность работы Пандеона оставляет желать лучшего. И еще мне не нравится, что данная программа используется компонент IE для отображения списка контактов.

    Моя же статья о аутификации через механизм GSSAPI, Kerberos. Т.е. стандарты которые поддерживаются и в Linux и в Windows.

    Еще минус для Пандеона - это как он хранит данные профиля. В том же Пиджине - это XML.

    И еще о Вашем утверждении, что все заработало из "коробки". Это в корне не верно, т.к. чтобы запустить NTML аутификацию нужно установить плагин sasl-sspi:
    http://norman.rasmussen.co.za/dl/sasl-sspi/

    Удачи.

     
  • 1.6, grait, 19:15, 06/03/2010 [ответить] [смотреть все]  
  • +/
    Спасибо за статью!
    OpenFire научился аудио- и/или видео-, ну + конференции?
     
  • 1.7, Synegami, 18:53, 03/02/2011 [ответить] [смотреть все]  
  • +/
    Хочу на некоторые моменты обратить внимание.
    keypass у меня лично отработал нормально только если запускать команду на DC, иначе ошибка Failed to set password for %username: 0x8ad. Поэтому
    [quote]Формирование ключевой пары может происходить на любом компьютере домена
    под пользователем, обладающим административными правами[/quote]
    не так уж и однозначно.
    Еще у меня запрос к LDAP (AD) по параметру sAMAccountName возвращает просто имя пользователя, т.е. xmpp-openfire вместо xmpp-openfire@domain.local. Ну и соответственно команды с этим учетом пришлось править.
    Такие наблюдения.
     
  • 1.8, Synegami, 18:55, 03/02/2011 [ответить] [смотреть все]  
  • +/
    И вообще, если инфраструктура уже содержит виндовый сервер не проще ли на него сразу и ставить openfire?
     
     
  • 2.9, Synegami, 09:43, 04/02/2011 [^] [ответить] [смотреть все]  
  • +/
    > И вообще, если инфраструктура уже содержит виндовый сервер не проще ли на
    > него сразу и ставить openfire?

    Отвечу сам себе. Не проще :).

     
  • 1.10, Synegami, 18:44, 04/02/2011 [ответить] [смотреть все]  
  • +/
    http://community.igniterealtime.org/docs/DOC-1060
    Отсюда как-то надежнее. По крайне мере, никто не воткнул кавычки, где не надо...
     
  • 1.11, Nemesys, 15:20, 05/05/2011 [ответить] [смотреть все]  
  • +/
    Не поможете разобратся?
    Jabber установлен на Контроллере домена, тоеть у этого сервера в DNS уже есть по крайней мере две А-записи - "как папка верхнего уровня" и собственно "имя сервера", кроме того, есть еще запись CNAME (псевдоним) - "Openfire"

    Так вот, в свете стать, и того, что никак не получается прикрутить SSO на "спарка", подозреваю что проблема кроется как раз в этом.

    Вот только не понял, что теперь делать.
    1) Сделать SPN для имени "Openfire"? Привязывать его надо к учетке? Что делать с записью "как папка верхнего уровня"?
    2) В обратной зоне для CNAME Openfire ничего нет, нужно что-то прописывать?

     
  • 1.12, azbart, 12:54, 13/03/2012 [ответить] [смотреть все]  
  • +/
    Решил у себя также реализовать прозрачную авторизацию. Параметры Debian 6 с интеграцией в AD, Ad на Win 2003, Openfire 3.6.4. Застрял на 6 пункте. Во-первых, в /OPT/ у меня пусто. Файл openfire.xml лежит у меня в /etc/openfire/ Я по аналогии прописал у себя 7 пункт. После того, как внес изменения в openfire.xml и перезапустил openfire, в админском интерфейсе подгрузилась начальная настройка сервера. Ладно, дело не пыльное, заново прописываю конфигурацию, дохожу до пункта, где нужно перейти к меню авторизации, и вуаля, я опять на начальном этапе настройки - выборе языка... Куда копать, что прикручивать, уже не знаю. Может кто сталкивался?
     
     
  • 2.13, werthk, 23:01, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    я сталкивался. Тоже весь мозг себе вынес

    <useSubjectCredsOnly"> приведи к виду <useSubjectCredsOnly>

    Там опечатка(((

     
  • 1.14, samsan, 12:04, 28/03/2013 [ответить] [смотреть все]  
  • +/
    Я так понимаю, что у автора OpenFire установлен на контроллер домена. Не мог понять в чем дело, пока не посмотрел ссылки в начале статьи. Под  jabber.mydomain.local в тексте подразумевается контроллер домена.
     
     
  • 2.15, samsan, 13:31, 03/04/2013 [^] [ответить] [смотреть все]  
  • +/
    Пардон, я не прав.
     
  • 1.16, Nik, 21:42, 28/09/2013 [ответить] [смотреть все]  
  • +/
    После внесения изменений в openfire.xml и перезапуска демона, практически все изменения в теге sasl из Openfire.xml исчезают:(
    остаётся только тег realm  
    (DC-Win2008R2,openfire - CentOS 6.3)
     
     
  • 2.18, Satou, 21:42, 28/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Openfire.xml вообще править не рекомендуют, всё вносится через вэбинтерфейс в system properties
    <sasl>  <mechs>GSSAPI</mechs> соответствует sasl.mechs которому присваивается значение GSSAPI
     
  • 1.17, Sector9, 16:29, 10/10/2013 [ответить] [смотреть все]  
  • +/
    Ребята, а кто-нибудь вкурсе гед брать пакет MIT для Windows 7, и как ему потм указывать где лежит krb5.ini.???
     
  • 1.19, Diol, 18:31, 28/01/2014 [ответить] [смотреть все]  
  • +/
    Если клиент виндовый, то достаточно кинуть файл krb5.ini в c:\windows
     
  • 1.20, BORT747, 12:47, 06/11/2014 [ответить] [смотреть все]  
  • +/
    Добрый день
    Поставил на VirtualBox Ubuntu 14.04 server x64 сверху поставил OpenFire и что для него требовалось (apache2, MySQL, java 8), все нормально работало (1сутки), но потребовалось перезагрузить машину, после я не смог подключиться к OpenFire с помощью клиента, попробовал зайти в админку просто белый лист, подумал что не работает apache зашёл на порт 80 отобразилась стандартная страница apache, думаю значит все работает. перезапустил сервис sudo service openfire start. Вроде все нормально. но в админку не заходит клиенты не подключаются.
    Помогите разобраться что и как.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor