Безопасность 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 может хранить пароль в хешированном виде. Мы знаем, что клиенты часто забывают пароль и подсматривают его в конфиг файле, даже когда факта компрометации нет.
Мы рекомендуем пользоваться этой опцией, если сервером пользуется группа людей, а внутри компании используются автоматические средства по отслеживанию паролей, которые хранятся без защиты.
Ограничение доступа к Flussonic UI по IP-адресам и портам¶
Доступ к Flussonic UI огранивается по принципу «белого списка», т.е. вы должны перечислить все порты, на которых должен открываться Flussonic UI. Для этого перейдите в раздел Listeners на вкладке Config и укажите порты, которые должен слушать Flussonic. Вы можете оставить поле Address пустым, чтобы разрешить все IP-адреса, или указать требуемое значение, чтобы разрешить запросы только по указанному IP-адресу.
Опционально для HTTPS, RTMPS и RTSPS вы можете выбрать в поле SSL protocol одну или несколько версий SSL, которые хотите использовать на указанном порту. Клиентам, не поддерживающим выбранные версии, будет запрещен доступ.
Warning
Соблюдайте осторожность, изменяя настройку Адрес. Некорректное значение может привести к тому, что Flussonic UI станет недоступным с вашего компьютера, например, если вы укажете IP-адрес в локальной сети, производя настройку через Интернет. Рекомендуется всегда иметь в запасе альтернативный способ доступа к серверу на случай потери доступа к UI, например, физический доступ или доступ по SSH.
Ограничение вызовов API по IP-адресам и портам¶
По умолчанию Flussonic обрабатывает API-запросы на все HTTP и HTTPS порты, которые вы укажете в настройках.
Вы можете запретить Flussonic обрабатывать API-запросы на тех или иных портах одним из следующих способов:
-
в Flussonic UI, перейдите в раздел Listeners на вкладке Config и отключите переключатель API для тех IP-адресов и портов, по которым не нужно обрабатывать API-запросы:
-
в файле конфигурации (
/etc/flussonic/flussonic.conf
) добавьте директивуapi false;
в параметры того IP-адреса и порта, на которых хотите запретить API-запросы:
https 443 {
api false;
}
Загрузка SSL сертификатов¶
Если у вас уже есть SSL сертификат для Flussonic, выпущенный сторонним провайдером или сгенерированный вами самостоятельно, его можно загрузить с вашего компьютера на сервер через веб-интерфейс Администратора.
- Настройте порт для HTTPS в конфигурации Flussonic. Откройте веб-интерфейс и укажите порт для HTTPS перейдя в Config -> Settings -> Listeners, например, 443.
-
Теперь перейдите в Config -> TLS-tunneled protocols, нажмите Upload certificates и выберите файлы сертификата и ключа. Кроме того, можно указать CA-сертификат.
Если при попытке добавить сертификат выводится ошибка, убедитесь в том, что в вашем файле сертификата содержится только один сертификат. В настоящее время 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=STREAMER_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
и вложенных директориях.