Установка и настройка Mumble Server в FreeBSD 14
Для программы голосового общения Mumble необходим сервер. В недалеком прошлом сервер для Mumble назывался murmur, теперь он переименован и называется Mumble server. При общении через Mumble все данные шифруются и используется защищённое соединение. В статье показана установка Mumble сервера в FreeBSD 14 и конфигурация его для повышения безопасности и защищённости голосового общения.
1. Установка Mumble server
Устанавливаем через пакеты
pkg install mumble-server
Или устанавливаем из портов, с нужными опциями
cd /usr/ports/audio/mumble-server/ && make install clean
Дожидаемся окончания установки.
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 нажимать. Можно заполнить все поля, чтобы при заходе на сервер пользователь видел данные из сертификата, чей сервер, локация сервера и так далее…
Устанавливаем для сертификата и ключа владельца и группу 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
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
В результате была создана база данных. Если не создавался отдельный сертификат, то сервером Mumble был создан сертификат на 20 лет и записан в базу данных.
5. Создание пароля администратора SuperUser
Серверный администратор Mumble имеет имя учетной записи SuperUser. Необходимо установить пароль для администратора SuperUser, так как с пустым паролем невозможно будет подключится от SuperUser.
Указываем пароль для SuperUser
/usr/local/bin/mumble-server -ini /usr/local/etc/mumble/mumble-server.ini -supw "Пароль"
Параметр -ini — путь до файла конфигурации сервера, -supw — пароль для администратора SuperUser.
Эта же команда используется в дальнейшем, если необходимо изменить пароль администратор SuperUser.
6. Выдача прав администратора пользователю
Для управления и администрирования удобно использовать свою учетную запись, так как от серверного администратора SuperUser нельзя говорить и сменить его имя.
Подключаемся к серверу Mumble со своим никнеймом, нажимаем Пользователь ⇒ Зарегистрировать…
Подтверждаем регистрацию учетной записи и отключаемся от сервера.
Подключаемся от учетной записи системного администратора SuperUser с указанием ранее созданного пароля в пункте 5 статьи.
Нажимаем правой кнопкой мышки по имени сервера и выбираем Редактировать…
В открывшемся окне выбираем группу admin и вписываем свое имя пользователя (в моем случае Tommy Wirser) ранее зарегистрированного в раздел Члены и нажимаем Добавить
Нечего страшного если имя пользователя добавится строчными буквами.
Нажимаем OK и отключаемся от сервера.
Подключаемся от учетной записи пользователя и проверяем что при нажатии на имя сервера кнопка Редактировать… активна.
Пользователь стал администратором сервера Mumble и теперь производим создание каналов, настраиваем права и привилегии для каналов и пользователей.
7. Отключение администратора SuperUser
После выдачи прав администратора пользователю, потребность в серверном администраторе SuperUser отпадает. Для безопасности можно удалить пароль SuperUser, тогда учетная запись SuperUser станет неактивной и на сервер от нее будет невозможно зайти.
Удаляем пароль серверного администратора SuperUser
/usr/local/bin/mumble-server -ini /usr/local/etc/mumble/mumble-server.ini -disablesu
Параметр -ini — путь до файла конфигурации сервера, -disablesu — удалить пароль администратора SuperUser.