Внедряем Openfire в доменной сети где ОС Ubuntu 18.04 Server

Итак, я на новой работе и здесь используется в качестве корпоративного чата openfire. Помню когда-то давно я его в одной организации применял, но, тогда устанавливал его на Ubuntu 14.04.5 Server amd64. В принципе — это не важно, важно то что на текущем месте данный сервис развернут на FreeBSD 12 (тот человек вместо которого теперь я был поклонником данной операционной системы), но мне милее Ubuntu системы. Ведь я все документирую и неплохо-таки ориентируюсь в сервисах, которые разворачиваю сам. Итого заметка будет адаптацией развертывания корпоративного чата на базе openfire к Ubuntu 18.04 Server amd64 от и до + настройка связки с Active Directory (on Server 2012 R2 Std English):

А также настроена доработка:

  • Интеграция со службой Active Directory где каждый доменный пользователь получит собственный аккаунт (Клиент на ПК qip через GPO)
  • Через GPO будет на рабочих места установлен клиент
  • Централизованно управлять через Web-интерфейс
  • Работа русского языка

Тестовый стенд на базе Debian 10 + Proxmox 6

Srv-dc.polygon.com (AD,DHCP,DNS)

  • OS: Windows Server 2012 R2 Std English
  • IP: 10.90.90.3

Srv-gw.polygon.com

  • OS: pfSense 2.4.4
  • IP: 10.90.90.2

Srv-openfire.polygon.com

  • OS: Ubuntu 18.04 Server amd64
  • IP: 10.90.90.10

Шаг №1: Создаю в оснастке DNS на домен контроллере (srv-dc) записи на будущий сервис Openfire, предварительно авторизовавшись в системе из под учетной записи Login: ekzorchik состоящей в группах: «Domain Admins, Enterprise Admins, Schema Admins»

Win + X - Control Panel - View by: Category - View by: Small icons - Administrative Tools - DNS - DNS - SRV-DC - Forward Lookup Zones - polygon.com

  • Type A: srv-openfire.polygon.com (10.90.90.10)
  • Type CNAME: jabber for srv-openfire.polygon.com
  • Type A: srv-gw.polygon.com (10.90.90.2)

Шаг №2: Создаю контейнер OU=IT, а внутри группа GROUP_OPENFIRE (

Group scope: Global

Group type: Security)

и учетные записи:

  • Login: openfire
  • Pass: Aa1234567
  • Login: A1,A2,A3,A4 эти учетные записи помещаю в группу GROUP_OPENFIRE
  • Pass: Aa1234567

Шаг №3: Выполняю первоначальную настройку системы (CPU = 1, RAM = 2,HDD = 50) с осью Ubuntu 18.04 Server под разворачиваемый сервис OpenFire

ekzorchik@srv-bionic:~$ sudo nano /etc/hosts

127.0.0.1 localhost

10.90.90.10 srv-openfire.polygon.com srv-openfire

10.90.90.3 srv-dc.polygon.com srv-dc

::1 localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ekzorchik@srv-bionic:~$ sudo nano /etc/hostname

srv-openfire.polygon.com

ekzorchik@srv-bionic:~$ sudo reboot

ekzorchik@srv-openfire:~$ uname -a && lsb_release -a

Linux srv-openfire.polygon.com 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 18.04.3 LTS

Release: 18.04

Codename: bionic

Шаг №4: Произвожу установку Java:

ekzorchik@srv-openfire:~$ sudo apt-get install -y openjdk-8-jdk

ekzorchik@srv-openfire:~$ sudo update-alternatives --config java

There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Nothing to configure.

ekzorchik@srv-openfire:~$ java -version

openjdk version "1.8.0_232"

OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09)

OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ sudo nano /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"

ekzorchik@srv-openfire:~$ source /etc/environment

ekzorchik@srv-openfire:~$ echo $JAVA_HOME

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

ekzorchik@srv-openfire:~$

Шаг №5: Произвожу установку сервиса базы данных, создаю базу под сервис openfire, пользователя и пароль:

ekzorchik@srv-openfire:~$ sudo apt-get install -y mysql-server mysql-client

ekzorchik@srv-openfire:~$ mysqladmin -u root password 712mbddr@

mysqladmin: connect to server at 'localhost' failed

error: 'Access denied for user 'root'@'localhost''

ekzorchik@srv-openfire:~$ sudo mysqladmin -u root password 712mbddr@

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user=''"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user='root' and host not in ('localhost','127.0.0.1','::1')"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop database if exists test"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.db where db='test' or db='test\\_%'"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop database if exists db_openfire"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "create database db_openfire character set utf8 collate utf8_general_ci";

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop user if exists 'us_openfire'@'localhost'"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "create user 'us_openfire'@'localhost' identified by '612mbddr@'"

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "grant all on db_openfire.* to 'us_openfire'@'localhost'";

Проверяю, что могу подключиться под созданным пользователем, паролем к созданной базе:

ekzorchik@srv-openfire:~$ sudo netstat -tulpn | grep 3306

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5023/mysqld

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ sudo mysql -u us_openfire -p612mbddr@ db_openfire -h 127.0.0.1

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 15

Server version: 5.7.28-0ubuntu0.18.04.4 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> - ответ да, могу. Двигаюсь дальше

mysql> quit

Bye

ekzorchik@srv-openfire:~$

Шаг №6: Скачиваю пакет OpenFire самый последний на момент написания данной заметки (размер 37Mb).

ekzorchik@srv-openfire:~$ wget -c https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.4.4_all.deb -O openfire.deb

ekzorchik@srv-openfire:~$ sudo dpkg -i openfire.deb

Selecting previously unselected package openfire.

(Reading database ... 97185 files and directories currently installed.)

Preparing to unpack openfire.deb ...

Unpacking openfire (4.4.4) ...

Setting up openfire (4.4.4) ...

adduser: Warning: The home directory `/var/lib/openfire' does not belong to the user you are currently creating.

Processing triggers for ureadahead (0.100.0-21) ...

Processing triggers for systemd (237-3ubuntu10.33) ...

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire

ekzorchik@srv-openfire:~$ sudo systemctl status openfire | head -n5

● openfire.service - LSB: Start/stop openfire jabber server

Loaded: loaded (/etc/init.d/openfire; generated)

Active: active (running) since Sun 2020-02-16 10:58:40 MSK; 6s ago

Docs: man:systemd-sysv-generator(8)

Process: 5740 ExecStop=/etc/init.d/openfire stop (code=exited, status=0/SUCCESS)

ekzorchik@srv-openfire:~$

Шаг №7: Создаю структуру таблиц в базе данных db_openfire:

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ db_openfire -e "source /usr/share/openfire/resources/database/openfire_mysql.sql"

Шаг №8: Теперь настраиваю через Web-интерфейс, для этого с основной системы с которой взаимодействую с этой где сервис openfire открываю браузер и в строке URL-адреса указываю IP&DNS адрес системы с сервисом OpenFire.

Итого URL примет вид:

http://IP&DNS:9090

и это по дефолту

Открываю http://10.90.90.10:9090 и меня перекидывает на http:// 10.90.90.10:9090/setup/index.jsp

  • Choose Language: Русский (ru_RU) и нажимаю Continue

(Настройки сервера)

  • Доменной имя XMPP: srv-openfire.polygon.com
  • Имя узла сервера (полное доменное имя): srv-openfire.polygon.com
  • Порт консоли администратора: 9090
  • Безопасный порт консоли администратора: 9091
  • Шифрование свойств через: Blowfish
  • Ключ шифрования свойства: 712mbddr@

и нажимаю «Продолжить»

(Настройки базы данных)

  • Выберите способ подключения к базе данных Openfire: выбираю "Стандартное подключение к базе данных"

и нажимаю «Продолжить»

(Настройки базы данных - стандартное соединение)

  • Предварительные настройки драйверов базы данных: MySQL
  • Класс драйвера JDBC: com.mysql.cj.jdbc.Driver
  • URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8
  • Имя пользователя: us_openfire
  • Пароль: 612mbddr@
  • Minimum Connections: 3
  • Maximum Connections: 100
  • Время ожидания подключения: 1.0 (Days)

и нажимаю «Продолжить«, но увы получаю ошибку:

A connection to the database could not be made. View the error message by opening the "/logs/error.log" log file, then go back to fix the problem.

Не может подключиться к базе данных, читаю лог:

ekzorchik@srv-openfire:~$ sudo bash -c "cat /usr/share/openfire/logs/error.log"

2020.02.16 11:22:16 org.jivesoftware.database.DbConnectionManager - Unable to connect to the database.

java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from the last attempt is as follows: java.sql.SQLException: The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Судя по ошибке жалуется на неправильную серверную зону времени, как так, но у меня время правильное и часовой пояс выставлен согласно моему текущему месторасположению:

ekzorchik@srv-openfire:~$ timedatectl

Local time: Sun 2020-02-16 11:26:04 MSK

Universal time: Sun 2020-02-16 08:26:04 UTC

RTC time: Sun 2020-02-16 08:26:05

Time zone: Europe/Moscow (MSK, +0300)

System clock synchronized: yes

systemd-timesyncd.service active: yes

RTC in local TZ: no

ekzorchik@srv-openfire:~$

Но кажись ошибка относится к работе MySQL, внимательный анализ всего что только можно вывел меня что нужно изменить URL базы данных с того вида который у меня сейчас есть на:

Текущий:

  • URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8

Обновленный:

  • URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8&serverTimezone=UTC

и нажимаю «Продолжить» — подключение к базе прошло успешно.

(Настройки профиля)

Выберите пользователя и систему группы для использования с сервером: выбираю "Сервер каталогов (LDAP)"

и нажимаю «Продолжить»

(Настройки профиля: Настройки соединения)

Этап 1: Настройки соединения

(Сервер LDAP)

  • Тип сервера: Active Directory
  • Хост: srv-dc.polygon.com
  • Порт: 389
  • База DN: dc=polygon,dc=com

(Авторизация)

  • Администратор DN: openfire@polygon.com
  • Пароль: Aa1234567

и нажимаю «Тестовые настройки«, в ответ получаю, да и к чему нужно стремится:

Тест: Настройки соединения

Статус: Успех!

Использую приведенные выше настройки, соединение с LDAP было успешным. Закройте эту тестовую панель и перейдите к следующему этапу»

нажимаю «Закрыть» и нажимаю «Сохранить и продолжить»

Этап 2: Отображение пользователей

  • Поле имя пользователя: sAMAaccountName

раскрываю «Расширенные настройки» и изменяю «Пользовательский фильтр» с дефолтного:

(objectClass=organizationalPerson)

на

(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))

и нажимаю «Тестовые настройки«, затем «Закрыть» и «Сохранить и продолжить»

Этап 3: Отображение групп

  • Поле группы: cn
  • Поле участника: member
  • Поле описания: description

затем раскрываю «Расширенные настройки» и изменяю «Фильтр групп» с дефолтного:

(objectClass=group)

на

(objectCategory=Person)

и нажимаю «Тестовые настройки«, в ответ получаю результат вывода всех учетные записей домена, нажимаю «Close» и «Сохранить и продолжить»

(Учетная запись администратора)

Добавить администратора: указываю Login: ekzorchik (т.к. добавляют те кто есть в Active Directory) и нажимаю «Добавить«, а затем «Продолжить»

УРА! Настройка завершена

нажимаю на «Вход в консоль администратора»

Нажимаю на "Вход в консоль администратора" Openfire 4.4

Произвожу авторизацию в консоли администрирования:

  • Имя пользователя: ekzorchik
  • Пароль: 712mbbdr@

и нажимаю «Войти»

Произвожу авторизацию в консоли администрирования

На заметку: В качестве логина указывать не адрес почтового ящика, а логин по дефолту, как “admin” если на этапе выбора какую базу данных указывали, имеется в виду дефолтная база данных.

И вот я внутри консоли администрирования:

И вот я внутри консоли администрирования:

Шаг №9: И как оказалось со времен подготовки всех шагов инсталляции у меня не самая последняя версия установлена, текущая Openfire 4.4.4 уже вышла более новая версия сервера «Доступна новая версия сервера 4.5.1», скачиваю и устанавливаю:

ekzorchik@srv-openfire:~$ rm -f openfire.deb

ekzorchik@srv-openfire:~$ wget -c https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.5.1_all.deb -O openfire.deb

ekzorchik@srv-openfire:~$ sudo dpkg -i openfire.deb

(Reading database ... 97730 files and directories currently installed.)

Preparing to unpack openfire.deb ...

Unpacking openfire (4.5.1) over (4.4.4) ...

Setting up openfire (4.5.1) ...

Processing triggers for systemd (237-3ubuntu10.38) ...

Processing triggers for ureadahead (0.100.0-21) ...

ekzorchik@srv-openfire:~$

После обновил страницу авторизации, интерфейс входа изменился, как и отображаемая версия при входе, авторизуюсь

(Консоль администрирования)

  • Login: ekzorchik
  • Password: 712mbbdr@

и нажимаю «Войти»

Произвожу авторизацию в Openfire 4.5.1

Что примечательно, все настройки проделанные при установке Openfire 4.4 остались и не потерялись.

Шаг №10: Добавляю в DNS еще и SRVзаписи, т.к. в первоначальном виде когда я только тестировал развертывание приходил к уведомлению после авторизации , что «Нет записей SRV DNS для этого хоста«. Лишним не будет.

Прописал пока вот такие вот SRV записи на srv-dc.polygon.com

Win + X - Control Panel - Administrative Tools - DNS - DNS - SRV-DC -Forwarded Lookup Zones — и через правый клик мышью на polygon.com перехожу на мастер добавления записи «Other New Records»

  • Select a resource record type: Service Location (SRV)

и нажимаю «Create Record...»

  • Domain: polygon.com
  • Service: _xmpp-client
  • Protocol: _tcp
  • Priority: 0
  • Weight: 100
  • Port Number: 5222
  • Host offering this service: srv-openfire.polygon.com.

и нажимаю OK.

В итоге после добавления всех SRV записей они выглядят так в оснастке DNS раздел «_tcp«:

В итоге после добавления всех SRV записей они выглядят так в оснастке DNS раздел "_tcp":

На заметку: Если Вам нужно будет заново пройтись по шагам инсталляции, то нужно сделать следующее:

ekzorchik@srv-openfire:~$ sudo nano /usr/share/openfire/conf/openfire.xml

изменить <setup>true</setup> на <setup>false</setup>

не забыть сохранить внесенные изменения и перезапустить сервис openfire

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire

А после заново обратиться через браузер к URL адресу http://10.90.90.10:9090 & http://IP&DNS:9090

Итак, первоначальная настройка сервиса OpenFire 4.5.1 завершена, в последующих заметках я буду развивать данную тему, как и было указано в предисловии заметки. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.