MyTetra Share
Делитесь знаниями!
Установка обновленного ejabberd в Astra Linux 1.6 Update 10. Как выкачивать ПО из сторонних репозитариев
Время создания: 01.09.2022 17:15
Автор: xintrea
Текстовые метки: linux, astra, debian, ejabberd, jabber, выкачивание, скачать, репозитарий, ключ, зеркало, mirror, создание, копия
Раздел: Компьютер - Linux - Дистрибутив Astra Linux
Запись: xintrea/mytetra_syncro/master/base/166204175343ns9akk08/text.html на raw.github.com

В обновлении Astra Linux 1.6 Update 10 разломали jabber-сервер ejabberd. И, соответственно, перестали работать корпоративные jabber-клиенты. В течении двухмесячной переписки со службой поддержки Astra Linux техподдержка признала, что пакет ejabberd содержит нерабочий код, и посоветовала переставить сервер из открытых источников, если политика безопасности это позволяет. А если не позволяет - то корпорация должна работать без внутреннего мессенджера, и крайними становятся админы, но никак не разработчики Астры. И что выбирают админы, чтобы не быть крайними? Правильно, неплевать на политику безопасности и под свою ответственность установить jabber-сервер из открытого источника, обеспечив себе пляски по удалению и восстановлению этого ПО в период прохождения сертификации.





Масла в огонь подливает тот факт, что Linux не был бы Linux, если бы в нем так просто можно было взять, и установить нужную программу. Тем более, если компьютер, на который устанавливается программа, не имеет доступа в сеть Интернет. В этом случае придется не просто откуда-то получить пакет с ejabberd (это можно сделать, но толку не будет из-за зависимостей), а нужно будет выкачать весь репозитарий ejabberd со всеми зависимостями, чтобы можно было поставить новый пакет. Плюс надо надеяться на то, что авторы программы позаботились о совместимости собранных ими пакетов со старыми и с новыми версиями Debian. К счатью, для ejabberd эти условия на 2022 год соблюдаются, а это большая редкость!


Для получения репозитария, действия надо производить на Linux-компьютере, подключенном к сети Интернет. Это может быть и Astra Linux, и какой-нибудь Debian-based дистрибутив



Получение копий ключей открытого репозитария ejabberd


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


Получение ключа в текстовом виде происходит следующей командой в отдельной директории:



wget -qO- https://apt.jabber.at/gpg-key > ejabberd-text-pgp-key



В результате из Интернета будет выкачан файл ключей ejabberd и сохранен в файле с именем ejabberd-text-pgp-key.


Далее данный ключ надо прописать в APT-подсистему компьютера, на котором происходит выкачивание репозитария. Находясь в той же директории, где лежит выкаченный файл ключа, надо дать следующую команду.


На старых Linux (включая Astra Linux 1.6 Up 10):



# cat ./ejabberd-text-pgp-key | sudo apt-key add -



На более новых:



# cat ./ejabberd-text-pgp-key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/apt.jabber.at.gpg --import



Файл ejabberd-text-pgp-key так же понадобится в дальнейшем, и будет использован на машине, где будет устанавливается ejabberd-сервер.



Установка программы создания зеркал репозитариев


Для создания зеркальных копий репозитариев, в Linux используется программа apt-mirror. Она устанавливается из стандартного репозитария используемого дистрибутива:



# apt install apt-mirror



После установки появится настроечный файл /etc/apt/mirror.list, который надо привести к следующему виду:



set nthreads     20

set _tilde 0

...

deb https://apt.jabber.at stretch ejabberd

clean  https://apt.jabber.at



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



Получение копии репозитария


При установке программы apt-mirror в системе появится системный пользователь apt-mirror. Создание копии репозитария должно происходит от этого пользователя. Для этого, находясь в консоли с правами root (в Astra Linux это происходит путем подачи команды sudo su от security-пользователя, если пользователь root не был настроен) необходимо дать команду:



# sudo -u apt-mirror apt-mirror



Скачивание пакетов будет сопровождаться примерно такими сообщениями:



Downloading 14 index files using 14 threads...

Begin time: Fri Sep 2 08:47:44 2022

[14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...

End time: Fri Sep 2 08:47:46 2022


Processing translation indexes: [T]


Downloading 0 translation files using 0 threads...

Begin time: Fri Sep 2 08:47:46 2022

[0]...

End time: Fri Sep 2 08:47:46 2022


Processing DEP-11 indexes: [D]


Downloading 0 dep11 files using 0 threads...

Begin time: Fri Sep 2 08:47:46 2022

[0]...

End time: Fri Sep 2 08:47:46 2022


Processing indexes: [P]


9.9 MiB will be downloaded into archive.

Downloading 67 archive files using 20 threads...

Begin time: Fri Sep 2 08:47:46 2022

[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...

End time: Fri Sep 2 08:47:47 2022


0 bytes in 0 files and 0 directories can be freed.

Run /var/spool/apt-mirror/var/clean.sh for this purpose.


Running the Post Mirror script ...

(/var/spool/apt-mirror/var/postmirror.sh)



Post Mirror script has completed. See above output for any possible errors.



После скачивания будет создан каталог /var/spool/apt-mirror/mirror/apt.jabber.at. В нем будет находится официальный deb-репозитарий пакетов от разработчиков ejabberd. Для переноса репозитария на другой компьютер, его удобнее будет упаковать:



# cd /var/spool/apt-mirror/mirror/apt.jabber.at

# tar -zcvf ejabberdRepo.tar.gz *



Развертывание копии репозитария


Далее архив ejabberdRepo.tar.gz переносится на серверный компьютер, на котором будет устанавливаться сервис ejabberd. Данный архив можно распаковать в любую директорию, например в



/opt/ejabberd-repo



В результате в данном каталоге должны будут лежать подкаталоги:



cd /opt/ejabberd-repo

ls -la


drwxr-xr-x 4 root root 4096 сен 2 09:03 .

drwxr-xr-x 3 root root 4096 сен 2 08:47 ..

drwxr-xr-x 3 root root 4096 сен 2 08:47 dists

drwxr-xr-x 3 root root 4096 сен 2 08:47 pool



Этот каталог необходимо прописать в файле /etc/apt/sources.list:



deb file:///opt/ejabberd-repo stretch ejabberd



Здесь следует обратить внимание, что после file: пишется три слеша, потому что file:// - это протокол файлового доступа, а /opt... - это путь к директории.



Перенос ключей репозитария


Помимо репозитария, на серверный компьютер, где будет устанавливаться ejabberd, необходимо скопировать ранее созданный файл ключа ejabberd-text-pgp-key, чтобы репозитарий был виден как доверенный.


После копирования файла ejabberd-text-pgp-key на сервер (на котором, как мы понимаем, установлен дистрибутив Astra Linux 1.6 Update 10), из-под суперпользователя надо выполнить уже знакомую команду:



# cat ./ejabberd-text-pgp-key | sudo apt-key add -



Если данная команда напишет в консоли OK, значит ключ установлен и можно приступать к дальнейшим действиям.



Прописывание приоритетов версий


Далее необходимо указать APT-подсистеме, что пакеты из репозитария stretch (именно под этим имененем репозитарий ejabberd был прописан в sources.list) имеют больший приоритет чем пакеты основного репозитария. Это необходимо для того, чтобы новый пакет ejabberd и его зависимости "перекрывали" пакет ejabberd, существующий в основном репозитарии.


Для этого действия необходимо создать файл:



/etc/apt/preferences.d/stretch



И прописать в него следующие строки:



Package: *

Pin: release n=stretch

Pin-Priority: 900



Все, настройка репозитариев выполнена, и можно переходить к установке ejabberd.



Установка обновленного ejabberd


Вначале нужно обновить список доступных пакетов:



# apt update



Далее можно посмотреть, какие пакеты были обновлены и до каких версий:



# apt list --upgradable

Вывод списка… Готово

ejabberd/stretch-fsinf 1:18.12.1-1~afa90 amd64 [может быть обновлён с: 16.09-4]

erlang-goldrush/stretch-fsinf 0.2.0-0.1~afa90 amd64 [может быть обновлён с: 0.1.9-2]

erlang-lager/stretch-fsinf 3.6.8-0.1~afa90 amd64 [может быть обновлён с: 3.2.4-1]

erlang-p1-cache-tab/stretch-fsinf 1.0.17-0.1~afa90 amd64 [может быть обновлён с: 1.0.4-2]

erlang-p1-iconv/stretch-fsinf 1:1.0.10-0.1~afa90 amd64 [может быть обновлён с: 1.0.2-2]

erlang-p1-stringprep/stretch-fsinf 1.0.14-0.1~afa90 amd64 [может быть обновлён с: 1.0.6-2]

erlang-p1-tls/stretch-fsinf 1.0.26-0.1~afa90 amd64 [может быть обновлён с: 1.0.7-2+deb9u1]

erlang-p1-utils/stretch-fsinf 1.0.13-0.1~afa90 amd64 [может быть обновлён с: 1.0.5-3]

erlang-p1-xml/stretch-fsinf 1.1.34-0.1~afa90 amd64 [может быть обновлён с: 1.1.15-2]

erlang-p1-yaml/stretch-fsinf 1.0.17-0.1~afa90 amd64 [может быть обновлён с: 1.0.6-2]

erlang-p1-zlib/stretch-fsinf 1.0.4-1.1~afa90 amd64 [может быть обновлён с: 1.0.1-4]



Здесь видно, что в Astra Linux 1.6 Update 10 используется пакет ejabberd версии 16.09-4, и теперь доступен пакет версии 18.12.1-1~afa90.


Перед установкой нового ejabberd нажно удалить старый, вместе со всеми конфигами:



# apt purge ejabberd



После чего можно устанавливать новый пакет:



apt install ejabberd



После установки можно проверить версию нового пакета:



# dpkg --list 'ejabberd'


Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h]

| Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]

/частично установлен[H]/trig-aWait/Trig-pend

| Ошибка?=(нет)/требуется переустановка[R] (верхний регистр

в полях состояния и ошибки указывает на ненормальную ситуацию)

|| Имя Версия Архитектура Описание

++-========-=================-===========-==================================

ii ejabberd 1:18.12.1-1~afa90 amd64 distributed, fault-tolerant Jabber



Запуск обновленного ejabberd


При установке пакета ejabberd пакетный менеджер прописывает сервис jabber-а в автозагрузку и самостоятельно запускает все нужные службы. Специального запуска не требуется.


Проверить, что ejabberd действительно запущен, можно следующей командой:



# systemctl status ejabberd

● ejabberd.service - A distributed, fault-tolerant Jabber/XMPP server

Loaded: loaded (/lib/systemd/system/ejabberd.service; enabled; vendor

preset: enabled)

Active: active (running) since Fri 2022-09-02 11:10:40 MSK; 14min ago

Docs: https://www.process-one.net/en/ejabberd/docs/

Main PID: 1150 (beam.smp)

CGroup: /system.slice/ejabberd.service

├─1150 /usr/lib/erlang/erts-8.2.1/bin/beam.smp -K true -P 250000

├─1172 erl_child_setup 65536

├─1182 /usr/lib/erlang/lib/p1_eimp-1.0.9/priv/bin/eimp

├─1183 /usr/lib/erlang/lib/p1_eimp-1.0.9/priv/bin/eimp

└─1247 /usr/lib/erlang/lib/os_mon-2.4.1/priv/bin/memsup


сен 02 11:10:33 server systemd[1]: Starting A distributed, fault-tolerant

Jabber/XMPP server...

сен 02 11:10:40 server systemd[1]: Started A distributed, fault-tolerant

Jabber/XMPP server.



Для выхода из просмотрщика информации о сервисе надо нажать кнопку q.



Первичная настройка ejabberd


Вначале надо создать jabber-пользователя, который будет иметь право управлять сервисом посредством web-интерфейса. Для этого используется команда:



ejabberdctl register <имя_пользователя> localhost <пароль>



Обычно в качестве имени пользователя используется имя admin. В результате работы такой команды будет создан пользователь admin@localhost.


Далее нужно внести следующие настройки в конфиг-файл /etc/ejabberd/ejabberd.yml:



hosts:

- "localhost"

- "127.0.0.1"

- "192.168.1.250"

- "server.corp.lo"



acl:

admin:

user:

- "admin@localhost"

- "admin@127.0.0.1"

- "admin@192.168.1.250"

- "admin@server.corp.lo"



Где IP-адрес 192.168.1.250 и имя server.corp.lo - это IP-шник и доменное имя компьютера в сети предприятия. То есть, это данные того компьютера, на котором и работает jabber-сервер.


После внесения этих настроек нужно перезапустить сервис ejabberd:



# systemctl restart ejabberd



Далее необходимо зайти в web-интерфейс. С любого компьютера в сети предприятия можно открыть следующий линк в браузере:



https://server.corp.lo:5280/admin/



Здесь важно указать именно секьюрный протокол https. Если указать простой http или вообще не указывать протокол, то браузер будет пытаться соединиться по несекьюрному http, а ejabberd в этом случае вместо web-страницы будет отдавать пустую строку.


Некоторые браузеры в момент соединения будут выдавать следующие предупреждения:



Ваше соединение не защищено


Владелец 192.168.1.250 неправильно настроил свой веб-сайт. Чтобы

защитить вашу информацию от кражи, Firefox не соединился с этим

веб-сайтом.


192.168.1.250:5280 использует недействительный сертификат

безопасности. К сертификату нет доверия, так как он является

самоподписанным. Сертификат недействителен для имени 192.168.1.250.



Эту проблему следует проигнорировать, либо нужно будет поднимать внутри домена предприятия сервис корневых Root CA-сертификатов, выпускать на нем сертификат для jabber-сервера, прописывать его в pam-файле чтобы web-страницы, генерируемые jabber-сервером считались доверенными.


Для входа в панель управления необходимо будет ввести:



Логин: admin@localhost

Пароль: пароль, установленный вышеприведенной командой ejabberdctl



Далее в веб-интерфейсе заводятся jabber-пользователи, и они смогут подключаться своими jabber-клиентами к данному jabber-серверу. Как производить такую настройку, написано в статье: Настройка пользователей в ejabberd через Web-интерфейс.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования