Записки сисадмина
Сервер подходит для малых и средних сетей, т.к. написан на Java и является достаточно ресурсоемким.
Первоначальная настройка и установка.
Я устанавливал на Debian 5.
К установке Jabber Openfire, для начала необходимо подготовиться. Вначале, устанавливаем Java:
$ sudo apt-get install sun-java6-jre
( Если не устанавливается…Collapse )
Теперь устанавливаем Apache, MySQL и PHP:
$ sudo apt-get install apache2 mysql-server php5
Во время установки “мускула”, потребуется ввести пароль (фактически, задать новый пароль) пользователя root (не системного, а лично mysql) для управления Базами Данных.
Теперь установим phpmyadmin для управления СУБД MySQL (я этого не делал, но опишу работу через него, чтобы было проще):
$ sudo apt-get install phpmyadmin
Во время установки, появится окно, в котором будет предложено сделать выбор, какой web-сервер настраивать. По скольку мы используем Apache, выбирайте его.
Jabber-Сервер Openfire отсутствует в списке репозиториев, по этому качаем его wget`ом:
$ wget http://download.igniterealtime.org/openfire/openfire_3.7.1_all.deb
Эта версия (3.7.0) была самой последней на момент написания статьи. Если вышла более поздняя, просто смените ссылку.
Как только скачается, делаем:
$ sudo dpkg -i openfire_3.7.1_all.deb
Все установлено и готово к настройке.
Если компьютер не в домене…
Если компьютер, на котором вы установили сервер openfire в домене или он вам вообще не нужен, можете ни о чем не волноваться и сразу переходить к следующей главе. Инструкцию по вводу в домен UbuntuDebian можно найти здесь: http://my-sertif.ru/973.html.
Зайдите на контроллер домена и в настройках DNS-сервера, создайте запись типа А, которая позволит обращаться Jabber-клиентам по имени компьютера, а не по IP-адресу.
Настраиваем Openfire
Для начала, создадим базу данных для нашего Jabber-сервера. Открываем браузер и вводим:
http://<имя сервера>/phpmyadmin
Вместо <имя сервера>, введите имя компьютера, на котором установлен Jabber (ну или на котором вы устанавливали Mysql и phpmyadmin.
Когда появится приглашение на вводи логина и пароля, вводите логин root, а пароль, который вы вводили при установке MySQL.
Когда откроется Web-интерфейс PhpMyAdmin, перейдите в раздел “Базы данных” и создайте там новую базу. Имя выбирайте сами)
Теперь пора переходить к глобальным настройкам Openfire.
В адресной строке вашего браузера, наберите:
http://<имя сервера>:9090
Вместо <имя сервера> введите имя компьютера, куда вы установили Openfire.
Первичная настройка довольно проста. Единственное, что порекомендую, не выбирайте Русский. Лучше помучайтесь с http://www.translate.ru или с http://lingvo.yandex.ru. Дело в том, что на момент написания статьи, перевод на русский язык был выполнен несколько… некорректно. Ощущение, что перевод выполнен автоматически гуглом. По крайней мере, пользуясь Google Chrome, и переводя английский его штатными средствами, особой разницы я не заметил.
Когда настройка дойдет до этапа выбора типа базы данных, выбирайте “стороннюю БД”. На первой строке, выберите MySQL из выпадающего списка. Вторую строку трогать не надо. В третьей необходимо ввести имя созданной вами в phpmyadmin базы данных и адрес сервера, где эта база находится. Если на этом же компьютере, то просто введите localhost.
Третья строка в моем случае, выглядит так:
jdbc:mysql://localhost:3306/jabber
Имя пользователя и пароль введите те же, что вводили для авторизации в phpmyadmin.
Максимальное колличество подключений можно увеличить, хотя все зависит от потребностей. Теперь можно нажать Proceed.
Следующим шагом выберите Active Directory и затем вводите настройки для подключения к домену. Помните, что при использовании домена, вы не сможете изменять имена пользователей, групп и т.д., т.к. контроллер домена дает права только на чтение.
Первая строка: Active Directory
Вторая строка: имя сервера контроллера домена или его ip-адрес (я сделал по второму варианту, на случай, если возникнут временные проблемы с DNS в самый неподходящий момент)
Третья строка: Туда вписываете домен или OU (Organization Unit или по русский Подразделение), откуда будут браться сведения о пользователях. Т.к. все может поменяться в любой момент, я бы рекомендовал отдать на чтение серверу всех пользователей и все группы. Вводится по принципу DN (Domain Name). Т.е. для домена с именем example.ru надо ввести: DC=example, DC=ru. Если Вам необходимо вписать еще и Подразделение, то запись будет такая: OU=Подразделение, DC=examle, DC=ru
Ниже, укажите имя и пароль администратора домена.
В следующем окне необходимо выбрать администратораов, которые смогут администрировать jabber-сервер. В принципе, можно выбрать и потом, но хотя бы один должен быть выбран сразу. На этом основная настройка сервера окончена.
Примечание: Не забывайте после каждой настройки нажимать Test Settings, чтобы потом не было сюрпризов и всегда вовремя замечать проблему.
Теперь можно логиниться в админ-панель, о чем будет предложено в финале всех настроек. Логинпароль вводите доменные.
Перейдите на закладку UsersGroups и там вы должны увидеть пользователей и группы, которые были считаны из AD. Если таковых не имеется, то ковыряйте настройки.
Настройки портов, SSL и т.д. делаются здесь очень легко и непринужденно, а описывать все настройки Openfire с комментариями – занятие крайне неблагодарное, по этому расскажу, как сделать из классического Jabber-сервера, полноценный корпоративный IM.
В пункте UsersGroups выберите закладку Groups. Там вы увидите список групп, которые были загружены из AD. Выберите группу, которую необходимо использовать по умолчанию (зачем вам в списке пользователей системные учетки и остальной мусор, который не нужен в списке контактов корпоративного мессенджера?) и перейдите в ее настройки. Там введите название группы и поставьте галочку напротив “Share group with additional users”. В появившемся окне, выберите пользователей, которые должны быть отображены в общем списке контактов, либо оставьте все по умолчанию (All users). Лично я для этих целей, заранее создал в AD группу IM, в которую подключил всех пользователей, которые должны быть в Jabber`е. Теперь смело нажимайте на кнопку Save Contact list settings.
Настройка Jabber-клиента.
В сущности, все стандартно.
Имя пользователя: имя пользователя домена@имя домена
Пароль: Доменный пароль этого пользователя
Сервер для подключения: <имя сервера, где установлен openfire>.<имя домена>
Порт: по умолчанию 5222. Если вы включили в настройках сервера SSL, то будет 5223. Если вы меняли порты, то вводите те, на которые меняли.
Устранение проблем.
Основная проблема, которая возникает, это ошибка кодировки. При обмене сообщениями между разными jabber-клиентами, вместо сообщения, появляются знаки вопроса. Решается это достаточно просто. При чем, даже после установки сервера.
Вариант 1. До установки сервера.
Перед установкой openfire создайте базу, а затем смените в ней кодировку:
mysql -u root -p
use your_base
alter database character set utf8;
alter database collate utf8_general_ci;
Во время установки, когда будете выбирать драйвер MySQL укажите URL к базе вида:
jdbc:mysql://localhost:3306/your_base?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
Вариант 2: А если openfire уже установлен?
Если openfire уже установлен, то переконвертируйте базу в utf8, затем файле конфигурации openfire.xml допишите после jdbc:mysql://localhost:3306/your_base
?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
Здесь нужно ОБЯЗАТЕЛЬНО! заменить & на & иначе вместо входа в админку увидите страницу установки openfire.
Все. Настройка закончена.
Небольшое уточнение. При включенной доменной авторизации, вам не удастся создать (Зарегистрировать) новую группу или пользователя ни с сервера, ни с клиента, т.к. я уже говорил – Active Directory доступна серверу Openfire только для чтения.
Настройка ssl
После установки сервера OpenFireсамостоятельно создаст все необходимые (самоподписанные) сертификаты для используемого домена, их можно просмотреть в ServerCertificates.
Для организации SSLиспользуется стандартная реализация Java.Ключи и сертификаты сервера сохраняются в стандартном хранилище сертификатов – keystore и используются для подтверждения полномочий.
Если планируется работа через SSLэтого мало, необходимо включить соответствующие механизмы сервера. Для чего переходим во вкладку SystemPropertiesи используя поле «Addnewproperty» добавляем или включаем следующие параметры:
·xmpp.socket.ssl.active – true;
·xmpp.socket.ssl.port – портдля SSL обычно 5223
·xmpp.socket.ssl.storeType —необязательное поле означающее формат, по умолчанию используется jks;
·xmpp.socket.ssl.keystore– местонахождение файла keystore, если оставить пустым будет использовано значение по умолчанию;
·xmpp.socket.ssl.keypass– пароль к keystore, по умолчанию changeit;
·xmpp.socket.ssl.truststore– расположение файла truststore, относительно корневого каталога, если не планируется его использовать оставьте пустым;
·xmpp.socket.ssl.trustpass – паролькtruststore.
Возможна ситуация когда придется создавать ключи и сертификаты самому, также необходимо обязательно сменить пароль к keystore с changeit, на что-то боле безопасное. Это в принципе просто. Переходим в каталог ключей.
$ cd/opt/openfire/resources/security/
Сначала меняем пароль к keystore.
$ sudokeytool —storepasswd —keystorekeystore
Вводим пароль changeit, и затем новый повторив его два раза. Удаляемстарыесертификаты.
$ sudo keytool -delete -keystore keystore -alias rsa
$ sudo keytool -delete -keystore keystore -alias dsa
При желании это можно сделать и через веб-интерфейс. Теперь создаем новый сертификат.
Настройка соединения между xmpp-серверами openfire.voxlink.
Настройка DNS SRV-записи для соединения между XMPP-серверами
Для установки соединения между XMPP-серверами, SRV-запись _xmpp-server._tcp обязательно должна присутствовать в домене каждого из связываемых серверов и должна указывать на DNS-имя соответствующего XMPP-сервера.
Обратите внимание на то, что SRV-запись должна присутствовать в домене, указанном в параметре Openfire xmpp.domain (посмотреть значение параметра xmpp.domain можно в web-интерфейсе Openfire, в разделе «Server» → «Server Manager» → «System Properties»). Если xmpp.domain имеет значение «oberon.local», SRV-запись должна быть _xmpp-server._tcp.oberon.local, если xmpp.domain имеет значение «xmpp.oberon.local», SRV-запись должна быть _xmpp-server._tcp.xmpp.oberon.local.
Приоритет, вес и TTL записи не важны для описываемой связки, можете указать любые допустимые значения (например 30, 30 и 86400 соответственно). Порт указывайте 5269, если не собираетесь использовать нестандартный порт.
Правильность настройки SRV-записи можно проверить с помощью команды dig:
dig SRV _xmpp-server._tcp.oberon.local
# Вывод должен содержать ANSWER SECTION похожего вида
;; ANSWER SECTION:
_xmpp-server._tcp.oberon.local. 86400 IN SRV 30 30 5269 xmpp.oberon.local.
dig SRV _xmpp-server._tcp.titania.local
# Вывод должен содержать ANSWER SECTION похожего вида
;; ANSWER SECTION:
_xmpp-server._tcp.titania.local. 86400 IN SRV 30 30 5269 xmpp.titania.local.
Также правильность настройки SRV-записи можно проверить на сайте. Просто введите свой XMPP-домен в строку и нажмите Check, DNS-имя XMPP-сервера будет определено, если SRV-запись настроена правильно.
ПРИМЕЧАНИЕ: Можно также добавить в домен SRV-запись _xmpp-client._tcp с указанием порта 5222 и того же DNS-имени XMPP-сервера для подключения XMPP-клиентов (но для подключения клиентов SRV-запись необязательна).
Настройка соединения между XMPP-серверами
Включите соединения между серверами в разделе «Server» → «Server Settings» → «Server to Server», если отключали их ранее (там же задаётся порт для приёма соединений от других серверов).
Если нужно использовать шифрованное соединение между XMPP-серверами, убедитесь, что в настройках Openfire присутствует параметр xmpp.server.tls.enabled со значением true.
Если на серверах Openfire самоподписанные сертификаты (Openfire создаёт самоподписанные сертификаты при установке), то для работы шифрованного соединения нужно добавить следующие параметры в разделе «Server» → «Server Manager» → «System Properties»:
xmpp.server.certificate.accept-selfsigned со значением true
xmpp.server.certificate.verify со значением false
При использовании самоподписанных сертификатов, соединение уязвимо к атаке Man in the middle. Рекомендуется использовать сертификаты, подписанные доверенным центром сертификации, если утечка сообщений, передаваемых между серверами неприемлема.Все настройки, необходимые для работы соединения между XMPP-серверами внесены. Для тестирования соединения, нужно добавить в список контактов пользователя из другого домена (например user1@oberon.local в список контактов user2@titania.local, можно сделать это средствами XMPP-клиента или ручным редактированием списка контактов через web-интерфейс Openfire), затем написать сообщение этому пользователю. В разделе «Sessions» → «Active Sessions» → «Server Sessions» должно отобразиться соединение в состоянии «Both». Если сообщение не прошло и соединение не отобразилось, убедитесь, что все файерволы между серверами позволяют серверам устанавливать TCP-соединение на порт 5269 друг друга.
Настройки в консоли администратора
Настроек в OpenFire предостаточно, все их описать просто не возможно, скажу только о некоторых. На главной странице, которая будет выведена после регистрации в консоли, будет показана статистика сервера и текущие настройки. Чтобы отредактировать имя сервера, порт подключения сервер-сервер, клиент-сервер и консоли администратора, а также включить или выключить поддержку SSL, следует нажать кнопку Edit Properties в самом низу страницы.
Далее выбрав «Language and Time Settings» в «Choose Time Zone» выбираем свой часовой пояс, если он выставлен не правильно (берется из системных настроек). Перейдя в «Email Settings» указываем SMTP сервер и учетные данные, необходимые для отправки почтовых сообщений.
Сервер OpenFire может быть настроен как закрытый, так и в качестве открытогоресурса к которому могут подключаться новые пользователи. По умолчанию он настроен именно так. Если его планируется использовать внутри организации, лучше запретить пользователям, самостоятельно создавать учетные записи.
Для этого переходим в «Registration & Login» и установить переключатель в Disabled в поле «Inband Account Registration». Используя переключатель в поле «Anonymous Login» можно разрешить или запретить анонимные подключения к серверу. И, наконец, можно ограничить соединения с сервером только диапазоном определенных адресов, указав их в «Restrict Login» в виде 192.168.1.
Переключатель в поле «Change Password» лучше установить в Enabled, тем самым, разрешив пользователям самостоятельно изменять свои пароли. Меню «Conflict Policy» позволяет определить действие сервера, если новый пользователь попробует зайти с именем, которое уже задействовано (протокол это допускает).
Устанавливаем openfire
Перед началом установки OpenFire следует инсталлировать пакеты sun-java6-jre. Ипланируется использовать внешний сервер базы данных, то и его. Тестовая установка производилась на Ubuntu 7.
$ sudo apt-get update
$ sudp apt-get install sun-java6-jre mysql-server
Теперь распаковываем полученный архив в каталог /opt.
$ cd /opt/
$ sudo tar xzvf /home/source/openfire_3_3_0.tar.gz
В результате в каталоге /opt появился подкаталог openfire, в котором содержатся все библиотеки и исполняемые файлы.
Создаем необходимую для работы базу данных
