Skip to content

Безопасность Flussonic Media Server

В этом разделе мы расскажем, как ограничить доступ к панели Администратора Flussonic Media Server.

Danger

Если злоумышленник получит доступ к Flussonic Media Server, то он сможет прочесть и перезаписать любой файл на жестком диске.

Логин и пароль

В конфигурации Flussonic Media Server настраиваются два разных уровня доступа: view_auth и edit_auth.

  • view_auth user password; — используется для предоставления доступа на чтение к API Flussonic Media Server, т.е. получении информации о потоках, состоянии записи и т.п.
  • edit_auth user password; — используется для предоставления полного доступа Администратору. С этим логином и паролем пользователю предоставляются практически все права на работу с сервером.

Ограничение доступа к Flussonic UI по IP-адресам и портам

Доступ к Flussonic UI огранивается по принципу «белого списка», т.е. вы должны перечислить все порты, на которых должен открываться Flussonic UI. Для этого перейдите в раздел Listeners на вкладке Config и укажите порты, которые должен слушать Flussonic. Вы можете оставить поле Address пустым, чтобы разрешить все IP-адреса, или указать требуемое значение, чтобы разрешить запросы только по указанному IP-адресу.

Опционально для HTTPS, RTMPS и RTSPS вы можете выбрать в поле SSL protocol одну или несколько версий SSL, которые хотите использовать на указанном порту. Клиентам, не поддерживающим выбранные версии, будет запрещен доступ.

Listeners config

Warning

Соблюдайте осторожность, изменяя настройку Адрес. Некорректное значение может привести к тому, что Flussonic UI станет недоступным с вашего компьютера, например, если вы укажете IP-адрес в локальной сети, производя настройку через Интернет. Рекомендуется всегда иметь в запасе альтернативный способ доступа к серверу на случай потери доступа к UI, например, физический доступ или доступ по SSH.

Ограничение вызовов API по IP-адресам и портам

По умолчанию Flussonic обрабатывает API-запросы на все HTTP и HTTPS порты, которые вы укажете в настройках.

Вы можете запретить Flussonic обрабатывать API-запросы на тех или иных портах одним из следующих способов:

  • в Flussonic UI, перейдите в раздел Listeners на вкладке Config и отключите переключатель API для тех IP-адресов и портов, по которым не нужно обрабатывать API-запросы:

    Listeners config

  • в файле конфигурации (/etc/flussonic/flussonic.conf) добавьте директиву api false; в параметры того IP-адреса и порта, на которых хотите запретить API-запросы:

https 443 {
  api false;
}

Загрузка SSL сертификатов

Если у вас уже есть SSL сертификат для Flussonic, выпущенный сторонним провайдером или сгенерированный вами самостоятельно, его можно загрузить с вашего компьютера на сервер через веб-интерфейс Администратора.

  1. Настройте порт для HTTPS в конфигурации Flussonic. Откройте веб-интерфейс и укажите порт для HTTPS перейдя в Config -> Settings -> Listeners, например, 443.
  2. Теперь перейдите в Config -> TLS-tunneled protocols, нажмите Upload certificates и выберите файлы сертификата и ключа. Кроме того, можно указать CA-сертификат.

    TLS-tunneled protocols

Если при попытке добавить сертификат выводится ошибка, убедитесь в том, что в вашем файле сертификата содержится только один сертификат. В настоящее время Flussonic не поддерживает загрузку через интерфейс файлов, в которых кроме самого сертификата содержится что-либо еще (корневой и/или промежуточный сертификаты, ключ и т.п.). Для загрузки таких файлов используйте другие способы, например, передавайте их по SSH.

Любые SSL сертификаты для Flussonic сохраняются в специальной папке — /etc/flussonic или /etc/streamer (для кластерной установки). При сохранении Flussonic заменит названия файлов на streamer.crt, streamer-ca.crt, и streamer.key.

Чтобы удалить загруженные файлы, относящиеся у сертификату, нажмите значок корзины в Config -> TLS-tunneled protocols напротив списка файлов.

Генерация SSL-сертификатов

Чтобы перевести веб-интерфейс Администратора на HTTPS, нужно включить порт для HTTPS в конфигурации Flussonic. Откройте веб-интерфейс и укажите порт для HTTPS в Config > TLS-tunneled protocols, например, 443.

Можно сгенерировать собственный SSL сертификат сервера Flussonic. Для генерации самоподписанных сертификатов Flussonic Media Server выполните по порядку команды, приведенные ниже. Каждый раз, когда система будет запрашивать пароль для сертификата, жмите Enter, ничего не вводя.

cd /etc/flussonic

openssl genrsa -des3 -out streamer.key 1024

openssl req -new -key streamer.key -out streamer.csr

mv streamer.key streamer.key.org

openssl rsa -in streamer.key.org -out streamer.key

openssl x509 -req -days 365 -in streamer.csr -signkey streamer.key -out streamer.crt

Файлы нужно поместить в /etc/flussonic/ (/etc/flussonic/streamer.crt и /etc/flussonic/streamer.key). Загрузить эти файлы можно и через веб-интерфейс. Для этого перейдите в Config > TLS-tunneled protocols и нажмите Upload certificates.

Промежуточный и CA сертификаты будут браться из /etc/flussonic/streamer.crt.

Cамое актуальное описание команд OpenSSL доступно в manpages в документации OpenSSL.

Let's Encrypt сертификаты

Компания LetsEncrypt с апреля 2016 года предлагает бесплатные SSL сертификаты сроком действия на месяц. Создание сертификата происходит в автоматическом режиме.

Мы добавили в Flussonic Media Server поддержку Letsencrypt. Как получить LetsEncrypt

Защита конфигурационного файла от изменения

Можно запретить изменение конфигурационного файла через API (т.е. веб-интерфейс). Для этого создайте файл /etc/flussonic/flussonic.conf.locked, выполнив в командной строке команду:

touch /etc/flussonic/flussonic.conf.locked

Теперь изменить настройки Flussonic через веб-интерфейс нельзя.

Запуск Flussonic от имени непривилегированного пользователя

Чтобы запустить Flussonic Media Server под обычным пользователем, выполните следующие настройки:

adduser flussonic --home /var/lib/flussonic --disabled-password
chown -R flussonic /etc/flussonic/
chown -R flussonic /var/lib/flussonic/
chown -R flussonic /var/run/flussonic /var/log/flussonic /etc/flussonic/.erlang.cookie
setcap cap_net_bind_service=+ep /opt/flussonic/lib/erlang/erts-*/bin/x86_64-linux-gnu/beam.smp

Затем создайте override.conf-файл для юнита systemd, используя команду systemctl edit flussonic:

[Service]
User=flussonic
Group=flussonic

Теперь после перезапуска сервер Flussonic Media Server будет работать с правами пользователя flussonic.

Чтобы снова запускать Flussonic Media Server под суперпользователем, очистите override-файл.

Защита видео от просмотра Администратором

По умолчанию пользователи с правами Администратора Flussonic могут проигрывать любой поток в веб-интерфейсе Администратора. Для этого используется специальный авторизационный токен Администратора.

Возможно, вы захотите запретить просмотр некоторых потоков Администратором — тех потоков, для которых нужна авторизация пользователя.

Чтобы запретить Администратору Flussonic проигрывать в веб-интерфейсе потоки, защищенные авторизацией:

1) Отредактируйте unit-файл сервиса Flussonic (/lib/systemd/system/flussonic.service). Следует делать это, используя systemd override:

systemctl edit flussonic

Эта команда откроет текстовый редактор (обычно nano).

2) Добавьте строки:

[Service]
Environment=ADMIN_VIEW_DISABLE=true

Нажмите Сtrl-X, затем Y, чтобы сохранить и выйти.

3) Перезапустите Flussonic:

service flussonic restart

Теперь, если поток требует авторизации, плеер в веб-интерфейсе вернет ошибку 403 при попытке проиграть поток с токеном Администратора.

Потоки без настроенной авторизации будут воспроизводиться как обычно.

Защита файловой системы от доступа из UI

В веб-интерфейсе пользователь (Администратор Flussonic) указывает расположение директорий для хранения DVR, VOD и кэш. Вы можете ограничить Администратора, указав одну или более директорий, выше которых Flussonic не разрешит размещать хранилища. Это позволит, например, защитить директорию /root.

Flussonic проверяет пути внутри vod vod, dvr, cache, copy, и в схемах playlist:/// и sqlite:///.

Для настройки добавьте переменную окружения FLUSSONIC_DATAPATH и укажите самую верхнюю директорию или несколько директорий, где допускается создавать VOD локации, DVR, кэш и др.

Warning

Чтобы Flussonic запустился успешно с новыми настройками, в текущей конфигурации не должно быть путей к директориям, находящимся выше указанных в переменной FLUSSONIC_DATAPATH.

Для добавления FLUSSONIC_DATAPATH можно использовать возможности systemd override:

systemctl edit flussonic

Эта команда откроет текстовый редактор (обычно это nano). В редакторе введите, например, такие директории:

[Service]
Environment=FLUSSONIC_DATAPATH=/storage:/mount:/copy

Нажмите Сtrl-X, затем Y, и Enter чтобы сохранить и выйти.

Перезапустите Flussonic:

service flussonic restart

Теперь в настройках можно будет указывать пути для DVR, кэша и VOD файлов только в /storage, в /mount и /copy и вложенных директориях.