notby.NET Logo

Установка и настройка Mumble Server в FreeBSD 14

Для программы голосового общения Mumble необходим сервер. В недалеком прошлом сервер для Mumble назывался murmur, теперь он переименован и называется Mumble server. Установка Mumble сервера в FreeBSD 14 будет показана подробна, настроена с максимальной безопасность и защищённостью соединения и общения.

1. Установка Mumble server

Устанавливаем через пакеты

pkg install mumble-server

Или устанавливаем из портов, с нужными опциями

cd /usr/ports/audio/mumble-server/ && make install clean
Установка Mumble server из портов FreeBSD, выбор параметров сборки

Дожидаемся окончания установки.

2. Создание сертификата безопасности

Этот раздел можно пропустить. Создавать собственный сертификат необязательно, при запуске Mumble сервер создаст сам сертификат RSA длиною 2048 бит.

Создаем каталог для сертификатов, если он не создан

mkdir -p /etc/ssl/private/

Создаем самоподписанный сертификат с ключом для Mumble server сроком на 3650 дней (10 лет).

openssl req -x509 -days 3650 -sha384 -nodes -newkey rsa:8192 -keyout /etc/ssl/private/mumble-server.pem -out /etc/ssl/private/mumble-server.crt

Сервер Mumble c ключами EdDSA (ed25519) работать не захотел, поэтому буду использовать RSA с длиною 8192.

Вопросы можно не заполнять оставляя поля пустыми и просто Enter нажимать. А можно заполнить чтобы при заходе на сервер пользователь видел данные из сертификата, чей сервер, локация сервера и так далее…

Генерация самоподписанного сертификата через openssl в FreeBSD для Mumble сервера завершена успешна

Устанавливаем для сертификата и ключа владельца и группу mumble-server

chown mumble-server:mumble-server /etc/ssl/private/mumble-server.pem /etc/ssl/private/mumble-server.crt

Устанавливаем права только чтение для владельца

chmod 400 /etc/ssl/private/mumble-server.pem /etc/ssl/private/mumble-server.crt

Проверяем права и владельца

ls -lh /etc/ssl/private/ | grep mumble-server
Выставление владельца и группу mumble-server с правами 400 для /etc/ssl/private/mumble-server.pem и /etc/ssl/private/mumble-server.crt, проверка прав командой ls -lh

3. Конфигурация Mumble server (mumble-server.ini)

Файл конфигурации сервера Mumble находится по адресу /usr/local/etc/mumble/mumble-server.ini

Открываем файл конфигурации и редактируем

nano /usr/local/etc/mumble/mumble-server.ini

Описание и перевод параметров файла конфигурации mumble-server.ini с настройкой для повышения безопасности:

; Mumble server файл конфигурации mumble-server.ini

; Путь до базы данных mumble-server.sqlite
database=/var/db/mumble-server/mumble-server.sqlite

; Использование журнала SQLite с опережением записи (WAL).
; Изменять если есть задержка при переходах между каналов.
; 0 - Использовать журнал SQLite по умолчанию.
; 1 - Использовать журнал с опережением записи с синхронностью=NORMAL.
; 2 - Использовать журнал с опережением записи с синхронностью=FULL.
;sqlite_wal=0

; Настройки для использования в качестве базы данных MySQL, MariaDB.
; Рекомендовано использовать встроенную SQLite базу данных.
;
;dbDriver=QMYSQL
;dbUsername=
;dbPassword=
;dbHost=
;dbPort=
;dbPrefix=mumble-server_
;dbOpts=

; Использовать D-Bus, по умолчанию не используется.
;dbus=session

; Альтернативное имя службы D-Bus.
;dbusservice=net.sourceforge.mumble.murmur

; Адрес сервера ZeroC Ice, если используется.
;ice="tcp -h 127.0.0.1 -p 6502"

; Пароль для связи с Ice. Если оставить пустое значение, запретить доступ.
; Доступ записи icesecretwrite всегда включает в себя доступ чтения icesecretread.
;icesecretread=
icesecretwrite=

; Файл для логирования. Пустое значение, лог будет записатся в каталог запуска сервера.
; Для отключения логирования указать /dev/null вместо файла для логов.
logfile=/var/log/mumble-server/mumble-server.log

; PID файл
pidfile=/var/run/mumble-server/mumble-server.pid

; Приветственное сообщение клиентам при подключении к серверу.
; Если оставить пустое значение, сообщение выведено не будет.
welcometext="<br>Добро пожаловать на сервер Mumble notby.NET"

; Приветственное сообщение вывести из файла.
; Если указан welcometext, welcometextfile игнорируется.
;welcometextfile=

; TCP и UDP порт сервера, по умолчанию 64738.
port=64738

; IP адрес, имя хоста который слушает сервер.
host=0.0.0.0

; Пароль для подключения к серверу.
serverpassword=

; Максимальная скорость передачи голоса пользователя (бит/с).
bandwidth=558000

; Время периодической проверки клиентов, что они не отвалились.
; Сервер и клиенты и так хорошо обмениваются данными активности.
;timeout=30

; Максимальное количество подключенных пользователей.
users=25

; Максимальное количество пользователей в канале. 0 - без ограничений.
;usersperchannel=0

; Ограничения для каждого пользователя:
; messageburst количество сообщений, которые разрешено передавать короткими сериями.
; messagelimit количество сообщений в секунду в течение длительного периода времени.
; Минимальное значение параметров 1. Значение 0 недопустимо.
messageburst=5
messagelimit=1

; Аналогично параметрам messagelimit и messageburst,
; но эти опции применяются именно к "plugin-messages". 
; pluginmessagelimit=1
; pluginmessageburst=5

; Отвечать на пакеты UDP ping. Значение true разрешает неавторизированным пользователям
; узнать максимальное количество пользователей, сколько подключено сейчас
; и пропускную способность для пользователей.
allowping=false

; Процент пользователей с поддержкой Opus (аудиокодек) для его принудительно включения.
; 0 = Всегда использовать Opus, 100 = Если все пользователи поддерживают.
opusthreshold=0

; Максимальная глубина вложения каналов. 
channelnestinglimit=3

; Максимальное количество каналов. 0 - без ограничений.
channelcountlimit=100

; Регулярное выражение для проверки имен каналов.
; (Обратные косые черты нужно экранировать с помощью \ )
;channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+
channelname=[A-Za-zА-ЯЁа-яё0-9 -]+

; Регулярное выражение для проверки имен пользователей.
; (Обратные косые черты нужно экранировать с помощью \ )
;username=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+
username=[A-Za-zА-ЯЁа-яё -]+

; Канал к которому пользователь будет подключатся по умолчанию.
; Если не задано, то подключится в корневой канал.
;defaultchannel=0

; Автоматически перемещать пользователя при подключении к серверу
; в последний канал в котором он был.
rememberchannel=false

; Сколько секунд сервер должен помнить последний канал пользователя.
; Значение по умолчанию 0, запоминать навсегда.
;rememberchannelduration=0

; Максимальная длина текстовых сообщений. 0 - без ограничений.
;textmessagelength=5000

; Максимальная длина сообщений с изображениями. 0 - без ограничений.
;imagemessagelength=131072

; Разрешить использовать HTML пользователям.
allowhtml=false

; Записи журнала для каждого сервера во внутренней базе данных,
; доступ к которой возможен по шине D-Bus/ICE.
; Указывается в днях. 0 - записывать вечно, -1 - отключить журнал.
logdays=-1

; Регистрации публичного сервера Mumble. Работает если заполнены все параметры.
; Для приватного сервера указывать только параметр registerName.
; Имя сервера, оно также отображается как корневой канал. По умолчанию имя root.
;registerName=notby.NET
; Пароль на сервере регистрации, нужно запомнить.
;registerPassword=
; Адрес сайта
;registerUrl=
; Домен или IP адрес для подключения.
;registerHostname=
; Принадлежность сервера к стране, двухсимвольный код.
;registerLocation=

; Оповещать о своем присутствие в локальной сети через протокол bonjour.
; Подробнее: https://ru.wikipedia.org/wiki/Bonjour
bonjour=false

; Пути до собственного сертификата для TLS.
; Если не указывать параметры, сервер сам создаст необходимый сертификат.
;sslCert=/etc/ssl/private/mumble-server.crt
;sslKey=/etc/ssl/private/mumble-server.pem

; Если указанный выше ключ зашифрован паролем, указываем пароль в открытом виде.
;sslPassPhrase=

; Сертификат центра сертификации, если сертификат выпускался через него.
;sslCA=

; Параметры криптографического протокола Diffie-Hellman
; По умолчанию сервер использует @ffdhe2048.
; Допустимые значения: ; @ffdhe2048, @ffdhe3072, @ffdhe4096, @ffdhe6144, @ffdhe8192
sslDHParams=@ffdhe8192

; Наборы доступных шифров для использования в SSL/TLS.
; Используем только шифры для TLS 1.2 и TLS 1.3:
sslCiphers=ECDHE+AESGCM:DHE+aRSA+AESGCM

; Если сервер запущен от root, на какого пользователя переключится.
;uname=

; В логах IP-адреса пользователей будут случайными.
;obfuscate=false

; Разрешить подключение только пользователям с сертификатом.
certrequired=true

; Отправлять пользователям информацию о версии сервера и его операционной системе.
sendversion=false

; Минимальная рекомендованная версия Mumble клиента, в X.X.X формате.
; При включении параметра, будет проверка версии клиента и если она меньше
; установленного, то будет выведено уведомление пользователю чтобы обновил клиент.
;suggestVersion=1.5.0

; Установка значение "true" уведомит пользователя, что на сервере рекомендовано
; использовать позиционирование звука. Значение "false" имеет противоположный эффект.
; Закомментированный параметр или пустое значение не проверяет настройку пользователя.
;suggestPositional=

; Установка значение "true" уведомит пользователя, что на сервере рекомендовано
; использовать активацию по кнопке. Значение "false" имеет противоположный эффект.
; Закомментированный параметр или пустое значение не проверяет настройку пользователя.
;suggestPushToTalk=

; Хранить пароли в старом виде. Значение true не безопасно.
;legacypasswordhash=false

; Количество итераций PBKDF2 для паролей. По умолчанию выбирается автоматически.
; Значение больше 0 отменяет автоматический выбор. 
;kdfiterations=-1

; Если пользовать подключится больше чем autobanAttempts раз
; в течение autobanTimeframe секунд, он будет забанет на autobanTime секунд.
; Для отключение, установить значение 0 для autobanAttempts и autobanTimeframe.
;autobanAttempts=10
;autobanTimeframe=120
;autobanTime=300
; Уставить "false" в параметр autobanSuccessfulConnections для отключения автобана,
; если подключение происходит с одного IP-адреса.
;autobanSuccessfulConnections=true

; Включить протоколирование изменений в группах.
loggroupchanges=true

; Включить протоколирование ACL в группах.
logaclchanges=true

; Разрешить использование встроенной функции записи. По умолчанию true.
; Если запрещено, при записи пользователь будет выкинут с сервера.
allowRecording=false

; Количество слушателей которые могут быть в канале.
; По умолчанию -1 - без ограничений, 0 - запретить слушателей.
listenersperchannel=0

; Количество слушателей который может иметь один пользователь.
; По умолчанию -1 - без ограничений, 0 - запретить слушателей.
listenersperuser=0


; Принудительная внешняя авторизация.
; forceExternalAuth=false

; Настройка любых параметров конфигурации для Ice.
; Этот раздел должен быть последним в конфигурации.
[Ice]
Ice.Warn.UnknownProperties=1
Ice.MessageSizeMax=65536

Сохраняем файл и закрываем его.

4. Автозагрузка и запуск Mumble server

Добавляем в автозагрузку

sysrc mumble_server_enable="YES"

Или вручную открываем файл /etc/rc.conf и добавляем строку mumble_server_enable="YES"

Запускаем Mumble server сервер

service mumble_server start
Выполнение команд в FreeBSD консоли sysrc mumble_server_enable="YES", затем service mumble_server start для запуска Mumble сервера

В результате была создана база данных. Если не создавался отдельный сертификат, то сервером Mumble был создан сертификат на 20 лет и записан в базу данных.

5. Создание пароля администратора SuperUser

Серверный администратор Mumble server имеет логин SuperUser. Необходимо установить пароль для администратора SuperUser, так как с пустым паролем невозможно будет подключится от SuperUser.

Указываем пароль для SuperUser

/usr/local/bin/mumble-server -ini /usr/local/etc/mumble/mumble-server.ini -supw "Пароль"

Параметр -ini — путь до файла конфигурации сервера, -supw — пароль для администратора SuperUser.

Этажа команда используется в дальнейшем если необходимо изменить пароль администратор SuperUser.

Установка пароля для администратора Mumble сервера командой (/usr/local/bin/mumble-server -ini /usr/local/etc/mumble/mumble-server.ini -supw "Пароль") в консоли FreeBSD

6. Выдача прав администратора пользователю

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

Подключаем к серверу Mumble со своим никнеймом, нажимаем ПользовательЗарегистрировать…

Mumble client подключен к серверу, открыто меню “Пользователь” и выбран пункт Зарегистрировать…

Подтверждаем регистрацию учетной записи. Теперь необходимо отключаемся от сервера и подключится к нему от учетной записи SuperUser.

Подключаем от учетной записи системного администратора SuperUser с указанием ранее созданного пароля в пункте 4 статьи.

Нажимаем правой кнопкой мышки по имени сервера и выбираем Редактировать…

Mumble client подключен к серверу от администратора SuperUser, открыто меню сервера и выбран пункт Редактировать…

В открывшемся окне выбираем группу admin и вписываем свое имя пользователя (в моем случае Tommy Wirser) ранее зарегистрированного в раздел Члены и нажимаем Добавить

Mumble Client, окно редактирование привилегий сервера, раздел группы, выбрана группа admin и введен новый член на добавление в группу

Нечего страшного если имя пользователя добавится строчными буквами. Нажимаешь OK и отключаемся от сервера.

Подключаем от учетной записи пользователя и проверяем что при нажатии на имя сервера кнопка Редактировать… активна.

Пользователь стал администратором сервера Mumble. Теперь производим создание каналов, настраиваем права и привилегия для каналов и пользователей.

7. Отключение администратора SuperUser

После создания администратора сервера Mumble потребность в серверном администраторе SuperUser отпадает. Для безопасности можно удалить пароль SuperUser, тогда учетная запись SuperUser станет неактивной и на сервер от нее будет невозможно зайти.

Удаляем пароль серверного администратора SuperUser

/usr/local/bin/mumble-server -ini /usr/local/etc/mumble/mumble-server.ini -disablesu

Параметр -ini — путь до файла конфигурации сервера, -disablesu — удалить пароль администратора SuperUser.