====== Сервис OpenFire ====== * [[https://ru.wikipedia.org/wiki/XMPP]] * [[http://www.igniterealtime.org]] * [[http://www.ibm.com/developerworks/ru/library/l-jabber_01/|Часть 1. Установка и конфигурация Jabber-сервера OpenFire и Jabber-клиента Spark]] ===== Настройка DNS ===== Актуально, когда xmpp.domain совпадает с DNS доменном, а запись A для домена не указывает на сервер xmpp (в общем, всегда, особенно с учетом, что сертификат выписывается на домен) * [[http://wiki.jrudevels.org/DNS_SRV]] * [[Финальная настройка DNS сервера]] $ nslookup -q=SRV _xmpp-client._tcp.corpX.un ... _xmpp-client._tcp.corpX.un service = 0 0 5222 server.corpX.un. ===== Установка ===== ==== Debian/Ubuntu ==== * [[http://ru.man.wikia.com/wiki/Установка_OpenFire_на_Ubuntu_14.04|Установка OpenFire на Ubuntu 14.04]] * [[http://joelradon.com/installing-openfire-xmpp-server-on-ubuntu-server-16-04-lts/]] * [[Сервис JRE]] * [[http://www.igniterealtime.org/downloads/index.jsp]] # OPENFIRE=openfire_4.6.2_all.deb # wget -O $OPENFIRE http://www.igniterealtime.org/downloadServlet?filename=openfire/$OPENFIRE # wget http://val.bmstu.ru/unix/Openfire/$OPENFIRE # wget http://gate.isp.un/unix/Openfire/openfire_4.6.2_all.deb # dpkg -i openfire_*_all.deb ===== Подключение и предварительная настройка ===== * Административная (без LDAP) учетка: admin http://server.corpX.un:9090/ XMPP Domain Name: corpX.un Server Host Name (FQDN): server.corpX.un ===== Spark ===== ==== Windows ==== http://val.bmstu.ru/unix/Openfire/spark_2_9_4-with-jre.exe http://gate.isp.un/unix/Openfire/spark_2_9_4-with-jre.exe ==== Linux ==== * [[Сервис JRE]] * Не открывает окно чата при получении сообщения # wget http://gate.isp.un/unix/Openfire/spark_2_9_4.deb # wget http://val.bmstu.ru/unix/Openfire/spark_2_9_4.deb $ unset LANG # Может понадобиться $ /opt/Spark/Spark & ==== Добавление сертификата УЦ ==== * Для openfire приходится создавать сертификат с альтернативными DNS именами corpX.un и server.corpX.un * Панель управления->Свойства браузера->Содержание->Сертификаты ... Экспорт в формате Base-64 cmd run as admin C:\>"C:\Program Files (x86)\Spark\jre\bin\keytool.exe" -import -trustcacerts -keystore "C:\Program Files (x86)\Spark\jre\lib\security\cacerts" -storepass changeit -file C:\Users\student\Documents\corpX-PDC-CA.cer ... Trust this certificate? [no]: yes C:\>"C:\Program Files (x86)\Spark\jre\bin\keytool.exe" -list -keystore "C:\Program Files (x86)\Spark\jre\lib\security\cacerts" -storepass changeit -v | find "=corp" ===== Управление учетными записями ===== ==== Управление контактами ==== Всех включить в группу 1 и сделать общую адр книгу Create Group/Edit Group: group1 Contact List (Roster) Sharing Enter contact list group name: corpX Enable contact list group sharing Users of the same group ==== Использование LDAP каталога ==== * Не требует базы mysql * можно отключать tls) === Microsoft AD ==== * Для Samba4 Port: 636 и в Advanced Settings включить Use SSL Host: server.corpX.un Port: 389 Base DN: cn="Users",dc="corpX",dc="un" !!!При тестировании "сбрасывается" надо опять заполнить Administrator DN: cn="Administrator",cn="Users",dc="corpX",dc="un" !!!При тестировании "сбрасывается" надо опять заполнить Administrator Account: Administrator === OpenLDAP ==== Host: server.corpX.un Port: 389 Base DN: ou=People,dc=corpX,dc=un Administrator DN: cn=admin,dc=corpX,dc=un Admin user (Administrator Account): user1 (через Apache Directory Studio задать пароль password1) ===== bash xmpp ===== # apt install sendxmpp $ cat .sendxmpprc admin@corp13.un Pa$$w0rd $ chmod 600 .sendxmpprc $ echo "Hello Ivan!" | sendxmpp -s Hello user1@corp13.un ===== Установка c Asterisk-IM ===== * [[http://www.ibm.com/developerworks/ru/library/l-jabber_02_02/|Совместное использование OpenFire вместе с Asterisk. Настройка OpenFire]] * [[https://community.igniterealtime.org/community/support/asterisk-im_support/content|Новости о поддержке плагина]] * [[https://community.igniterealtime.org/thread/56076|Help save the Asterisk-IM plugin :-)]] ==== Создание базы данных ==== * !!! Asterisk-IM не поддерживается при встроенной (HSQLDB) базе данных, требуется [[Сервис MySQL]] # mysql CREATE DATABASE openfire; GRANT ALL PRIVILEGES ON openfire.* TO "openfire"@"localhost" IDENTIFIED BY "openfire"; FLUSH PRIVILEGES; quit ==== Установка JRE 6 ==== * поддерживается до openfire_3.9.1, требует java6 i386 (из LTS поддерживается в Ubuntu 14) ubuntu14# apt install openjdk-6-jre openjdk-7-jre * в новых версиях Spark, похоже, работает, но не всегда ==== Установка Openfire-3.9.1 ==== * [[http://gdr.geekhood.net/gdrwpl/heavy/]] * [[http://suse.mes.edu.cu/Utiles/Jabber/Openfire-3.9.1/Plugins/]] * [[http://val.bmstu.ru/unix/Openfire/]] ubuntu14# wget http://val.bmstu.ru/unix/Openfire/openfire_3.9.1_all.deb ubuntu14# dpkg -i openfire*.deb ===== Подготовка Asterisk ===== * [[Сервис Asterisk#Asterisk AMI]] ===== Конфигурация Asterisk-IM ===== Asterisk-IM -> General Settings -> Add Server Server Name: asterisk ; Server Address: 127.0.0.1 ; Server Address: server.corpX.un Port: 5038 Username: admin Password: admin Asterisk Queue Presence: yes Drop-down device selection: yes Asterisk Context: default Default Caller ID: DefaultCID !!! похоже, лучше оставить пустым Asterisk-IM -> Phone Mappings Username: user1 Device: SIP/401 Extension: 401 ... ===== Kerberos GSSAPI аутентификация ===== !!! Удалось только в AD. С регистрацией принципалов через winbind не заработало. * [[https://community.igniterealtime.org/docs/DOC-1060|Configuring Openfire for Use with Kerberos]] * [[https://habrahabr.ru/post/181374/|Установка сервера Openfire на Debian в домене AD2008 с прозрачной авторизацией пользователей]] ==== Microsoft AD ==== C:\>ktpass -princ xmpp/gate.corpX.un@CORPX.UN -mapuser gatexmpp -pass 'Pa$$w0rd' -out gatexmpp.keytab ==== Samba4 ==== server# samba-tool user create gatexmpp server# samba-tool user setexpiry gatexmpp --noexpiry server# samba-tool spn add xmpp/gate.corpX.un gatexmpp server# samba-tool spn list gatexmpp server# samba-tool domain exportkeytab gatexmpp.keytab --principal=xmpp/gate.corpX.un ==== MIT (пока не удалось) ==== kadmin.local: addprinc -randkey xmpp/gate.corpX.un kadmin.local: addprinc -e rc4-hmac:normal -randkey xmpp/gate.CORPX.UN kadmin.local: ktadd -k gatexmpp.keytab xmpp/gate.corpX.un kadmin.local: ktadd -k gatexmpp.keytab xmpp/gate.CORPX.UN ### kadmin.local: addprinc -randkey xmpp/corpX.un ### kadmin.local: addprinc -e rc4-hmac:normal -randkey xmpp/CORPX.UN ### kadmin.local: ktadd -k xmpp.keytab xmpp/corpX.un ### kadmin.local: ktadd -k xmpp.keytab xmpp/CORPX.UN Запросы с win клиента не наблюдаются, запросы с lin клиента такие: root@server.corp13.un:~# tail -f /var/log/auth.log Oct 5 08:14:30 server krb5kdc[831]: TGS_REQ (6 etypes {18 17 20 19 16 23}) 192.168.13.105: ISSUE: authtime 1664946134, etypes {rep=18 tkt=18 ses=18}, user1@CORP13.UN for xmpp/gate.corp13.un@CORP13.UN Oct 5 08:14:30 server krb5kdc[831]: AS_REQ (2 etypes {18 17}) 192.168.13.1: NEEDED_PREAUTH: xmpp/gate.corp13.un@CORP13.UN for krbtgt/CORP13.UN@CORP13.UN, Additional pre-authentication required Oct 5 08:14:31 server krb5kdc[831]: preauth (encrypted_timestamp) verify failure: Preauthentication failed Oct 5 08:14:31 server krb5kdc[831]: AS_REQ (2 etypes {18 17}) 192.168.13.1: PREAUTH_FAILED: xmpp/gate.corp13.un@CORP13.UN for krbtgt/CORP13.UN@CORP13.UN, Preauthentication failed ==== Настройка сервиса ==== # ktutil ktutil: rkt gatexmpp.keytab ktutil: wkt /etc/krb5.keytab ktutil: quit # klist -k /etc/krb5.keytab # chmod +r /etc/krb5.keytab # cat /etc/openfire/gss.conf com.sun.security.jgss.accept { com.sun.security.auth.module.Krb5LoginModule required storeKey=true keyTab="/etc/krb5.keytab" doNotPrompt=true useKeyTab=true realm="CORPX.UN" principal="xmpp/gate.corpX.un@CORPX.UN" debug=true; }; В консоле администратора Openfire и в разделе **Server Manager->System Properties** добавляем параметры: sasl.gssapi.config = /etc/openfire/gss.conf sasl.mechs = GSSAPI,PLAIN sasl.realm = CORPX.UN PLAIN для xmpp модуля в asterisk # service openfire restart ==== Настройка windows client ==== Из учетной записи локального администратора правим реестр HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters Value Name: AllowTGTSessionKey Value Type: REG_DWORD Value: 1 ===== Отладка ===== # tail -f /var/log/openfire/info.log ===== Дополнительные материалы ===== * [[http://habrahabr.ru/post/137124/|Связываем Active Directory, Asterisk и OpenFire]] ==== Отключение TLS ==== * Требуется для подключения клиентов к серверу по hostname отличном от домена, а так же, для демонстрации Thunderbird (не желает подключатся при само подписанном сертификате) * [[Thunderbird#Настройка учетной записи XMPP]] Server Settings-> Client Connections -> Plain-text (with STARTTLS) connections ... Advanced configuration...-> STARTTLS policy: Disabled - Encryption is not allowed.