Защита и оптимизация Flash Media Server’ов

FMS-сервера компании Adobe это гибкие и надежные решения, которые готовы к работе сразу после простой процедуры инсталяции. Но простота установки и интеграции порой влечет некоторые проблемы в безопасноте проекта, использующего FMS. Вы можете защитить ваши сервера от проблем с безопасностью, внеся изменения в конфигурационные файлы и в этой статье будет рассказано как это сделать.

В первую очередь рекомендуется ограничить доступ к консоли управления FMSAdmin, это может быть сделано с помощью фаерволов. Например, в Linux фильтрация может быть установлена с помощью iptables:

iptables –t filter –A INPUT  –p tcp –dport  1111 –j DROP

Предварительно, можно добавить адреса хостов с которых будет разрешен доступ:

iptables –t filter –I INPUT 1 –s denivip.ru –p tcp –dport 1111 –j ACCEPT


Настройка конфигурации сервера FMS (Server.xml)

В unix-системах процессы FMS, должны в обязательном порядке запускаться от имени непривелигированного пользователя, который должен иметь только доступ на чтение и выполнение (r-x) на папку, в которую инсталирован FMS, и права на запись,чтение(rw-) на папку FMS_INSTALL_DIR/tmp.
Соответствующие настройки должны быть выполнены в файле Server.xml, где нужно подставить соответствующие GID,UID в незаполненные поля.

<Process>
<!— Process user ID (unix only) —>
<UID>500</UID>
<!— Process group ID (unix only) —>
<GID>503</GID>
</Process>

Если поля <UID> и <GID> оставить незаполненными это может крайне негативно отразиться на безопасности FMS.

Для оптимальной производительности нужно настроить количество памяти, которое FMS выделяет под кеширование FLV-объектов:
Root/Server/ResourceLimits/FLVCache/MaxSize файла Server.xml. Данный параметр настраивается индивидуально и зависит от загруженности сервера, количества запущенных FMS-ядер и количества памяти на сервере. Определяет размер оперативной памяти, отведенный под кеш FLV-объектов При отсутствии проблем с производительностью можно оставить значение по умолчанию (500Mb).

Подробней о настройке кеширования объектов вы можете прочитать в следующем разделе.

Настройка конфигурации приложения (Application.xml)

Файл  Application.xml в папке conf/ определяет настройки по умолчанию для всех приложений, запускаемых на сервере. Для каждого приложения также может быть создан отдельный конфигурационный файл. Для максимальной безопасности при выполнении FMS­-приложений рекомендуется прописать параметр override=»no» в основном конфигурационном файле conf/Application.xml, что автоматически запретит переписывать настройки заданные в нем для локальных файлов конфигурации приложений.

Секции Application/Process/Scope и Application/Process/Distribute.
Параметр Scope определяет количество логических FMS-операций для объединения в один исполняемый файл.
Параметр Distribute определяет лимит использования процессов FMS для выполнения приложения.
При отсутствии проблем с производительность не рекомендуется изменять данные параметры.

Секция Application/JSEngine/FileObject:  специалисты Adobe строго не рекомендуют задавать параметр VirtualDirectory для данной секции. Это вызвано угрозой опасности записи вредоносных программ на сервер. Если использование данной функции крайне необходимости, позаботьтесь о правах доступа на директорию.

Application/SWFVerification – данный параметр определяет SWF-программы, которые могут подключаться к вашему FMS-приложению. Рекомендуется активировать данный функционал, чтобы исключить попытки использования Вашего приложения вредоносными SWF-программами.

Application/DisallowedProtocols – в данной секции рекомендуется определить список протоколов, использование которых запрещено с Вашими приложениями. В первую очередь в этот список нужно добавить устаревший протокол RTMPE1. Наибольшая безопасность будет гарантирована при добавлении туда же протоколов RTMP и RTMPT, что автоматически требует использования защищенных протоколов передачи данных RTMPE или RTMPS.

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

  1. application.allowDebug в положение false, тем самым запретив debug-соединения с Вашим приложением.
  2. client.readAccess и writeAccess – установка данных параметров регламентирует клиентские права на запись и чтение в рамках вашего приложения. В обязательном порядке ограничьте права на запись, если она не требуется для ваших клиентов.
  3. file.object – важный параметр для блокировки пользователей внутри FMS-объектов. Рекомендуется не использовать API для удаления объектов и не использовать виртуальные каталоги, чтобы исключить попытки записи за пределами виртуальных директорий

Оптимизация кеш-системы на серверах EDGE Adobe FMS.

Начиная с версии 3.5 в Adobe FMS добавлена новая функция Actvive Disk Management. Данная функция позволяет EDGE-серверам в автоматическом режиме производить ротацию кеша, заполняя его наиболее востребованным материалом. При обращение клиента к файлу, EDGE-сервер,не найдя его в кеше, запрашивает с origin-сервера. После получения файла он кладется в структурированное файловое кеш-хранилище (пример структуры директорий приведен ниже):

21G     /data/fmsCache/streams/00

24G     /data/fmsCache/streams/01

24G     /data/fmsCache/streams/02

23G     /data/fmsCache/streams/03

25G     /data/fmsCache/streams/04

25G     /data/fmsCache/streams/05

25G     /data/fmsCache/streams/06

При первично    й инициализации кеша создается директория 00, куда помещаются кеш- файлы. Когда ее размер достигает максимального значения, создается новая директория 01. При обращение к контенту, кеш которого хранится в хранилище 00, он пермещается в самое новое хранилище 01. И так далее, в зависимости от заданного размера кеша и количества хранилищ. При достижении порогового значения количства хранилищ,самое первое хранилище удаляется вместе со всем кешом и создается новое. В нашем примере задано 7 хранилищ и 175Gb места на диске под кеш(по 25Gb на каждое хранилище). При заполнении хранилища 06, хранилище 00 будет удалено и создано новое — 07 и так далее. Таким образом достигается максимальная производительность функционирования кеша на серверах и его ротация.

Таким образом при настройке кеш-системы на серверах FMS нужно исходить из количества места, отведенного под кеш, и необходимого времени его ротации. При очень большом количестве хранилищ и маленьком объеме кеша, хранилища будут быстро забиваться и будит происходить постоянная ротация кеша (удаление старого хранилища с наименее актуальными кешированными данными).

Основные настройки кеш-системы проводятся в конфигурационном файле VHost.xml  в секции <VirtualHost><Proxy><CacheDir>:

<MaxSize> — объем места на диске в гигабайтах, который FMS использует для кеширования данных. Значение равное 0 отключает функцию кеширования, значение -1 снимает ограничение на размер кеша и автоматически отключает функцию Active Disk Management

<NumBuckets> — количество кеш-хранилищ. Размер одного хранилища = <MaxSize>/<NumBuckets>. Чем больше хранилищ, тем чаще проиcходит ротация кеша и происходит больше дисковых операций. Будьте внимательны с установкой данного параметра.

<NumBucketsAtRisk> — количество хранилищ попадающих в “группу риска” может принимать значение от 0 до <NumBuckets>-1 , т.е те хранилища, кеш из которых не перемещается в новые при обращении к нему. Этот параметр оптимизирует кеш систему, определяя с конца количество хранилищ с конца, из которых будет производиться перемещение самых востребованных кеш-данных в новое хранилище. В общем случае рекомендуется использовать значение равное <NumBuckets>/2