Перейти к содержимому

Безопасность

Возможно ограничить доступ к контенту для списка стран. Чтобы это сделать:

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • выберите Политика доступа по странам

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

Доступ к ресурсу разрешен всем странам, кроме указанных в поле.

Доступ к ресурсу запрещен всем странам, кроме указанных в поле.

Данная опция необходима для запрета размещения ссылок на контент на других сайтах.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • выберите Политика доступа по доменам

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

  • в появившемся окне впишите для каких доменов необходимо запретить доступ

Пример:

  • www.mydomain.com - запретить доступ для конкретного домена
  • *.mydomain.com и mydomain.com - запретить доступ всех поддоменов домена и сам домен; необходимо добавлять сам домен и дополнительно домен в формате wildcards

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

  • в появившемся окне впишите для каких доменов необходимо разрешить доступ

Пример

  • www.mydomain.com - разрешить доступ для конкретного домена
  • *.mydomain.com и mydomain.com - разрешить доступ всех поддоменов домена и сам домен; необходимо добавлять сам домен и дополнительно домен в формате wildcards для поддоменов

При доступе с других доменов пользователь будет получать отказ в доступе.

Возможно ограничить доступ к контенту в CDN для определенных IP адресов.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • выберите Политика доступа по IP-адресам

По умолчанию никакие ограничения доступа по IP к ресурсу не применяются. Возможно задать разрешающую или блокирующую политику.

Опция поддерживает и IPv4, и IPv6 адреса.

Доступ к ресурсу разрешен всем IP-адресам, кроме указанных в поле.

Доступ к ресурсу запрещен всем IP-адресам, кроме указанных в поле.

Политика доступа по клиентским приложениям

Заголовок раздела «Политика доступа по клиентским приложениям»

Возможно ограничить доступ к контенту из CDN по клиентским приложениям (User Agent), например, для определенного браузера, приставки, устройства.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • выберите Политика доступа по клиентским приложениям

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

Доступ к ресурсу разрешен всем клиентским приложениям, кроме указанных в поле.

Доступ к ресурсу запрещен всем клиентским приложениям, кроме указанных в поле.

Включение редиректа трафика с HTTP на HTTPS доступно в настройках CDN-ресурса.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • включите опцию Редирект с HTTP на HTTPS

Чтобы настроить редирект с HTTPS на HTTP, воспользуйтесь API-документацией.

Примечание

Для получения подробной информации об API-документации обратитесь в службу технической поддержки MWS по адресу support@cloud.mts.ru.

Важно

На CDN-ресурсе единовременно может быть включена только одна из опций редиректа: редирект с HTTPS на HTTP или с HTTP на HTTPS.

При использовании опции Доступ по ключу контент может быть загружен только по запросам, содержащим хеш-ключ. Опция защищает контент от нежелательных загрузок.

Временные ссылки на защищаемый контент будут иметь вид: http://cdn.example.com/photo.jpeg?md5=DMF1ucDxtHCxwYQ&expires=2147483647.

Чтобы включить Tokenized URL:

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • включите опцию Secure Token
  • в появившемся окне введите желаемый ключ подписи
  • сохраните настройки
  • ключ должен содержать 6-32 символов

По умолчанию при генерации токена учитываются 4 параметра:

  • время истечения ссылки
  • исходная ссылка на файл
  • IP-адреса, для которых разрешен доступ к файлу
  • ключ

Возможно настроить токен таким образом, чтобы доступ к файлу был открыт для любых IP-адресов:

  • отключите опцию Добавить IP-адрес к токену
  • настройте токен на сервере-источнике так, чтобы параметр IP не учитывался

Организуйте сайт таким образом, чтобы обращения пользователей к защищаемым файлам в CDN производились по временным ссылкам. При обращении серверов CDN, контент должен отдаваться вне зависимости от наличия ключа.

Хеш-ключ — результат вычисления односторонней хеш-функции MD5 (String), где String — параметр, полученный слиянием следующих элементов (в указанной последовательности): <expires><path><ip> <key>

  • <expires> — время истечения ссылки. Указывается в формате UNIX Timestamp.

  • <path> — исходная ссылка на файл

  • <key> — ключ

  • <IP> — IP-адреса, для которых разрешен доступ к файлу (параметр может не учитываться).

  • чтобы сгенерировать Unix Timestamp в linux: date +%s -d "10min" (текущее время + 10 минут)

    • CDN-серверы проверяют каждый запрос на своей стороне; они имеют те же вводные данные (<expires><path><ip><key>) и используют их для генерации хеш-ключа
  • если вычисленная подпись не совпала и/или срок действия истек, сервер доставки контента CDN отправляет пользователю ошибку 403 Forbidden

    • если вычисленная подпись совпала и срок действия ссылки не истек, сервер доставки контента CDN передает пользователю запрашиваемый файл
php
<?php
$secret = 'secret_key';
$ip = '1.2.3.4';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path$ip $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";
php
<?php
$secret = 'secret_key';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";

Где:

  • $secret — секретный ключ
  • $path — путь к файлу
  • $ip — IP-адрес, которому разрешено получить контент
  • $expires — время жизни ссылки (в секундах)
  • $link — строка для генерации токена с учетом необходимых параметров хеш-ключа
  • $url — ссылка на файл
import base64
from hashlib import md5
from time import time
ip = '1.2.3.4'
secret = 'secret_key'
stream_address = '133529_2'
path = f'/live/{stream_address}/playlist.m3u8'
expires = int(time()) + 100000
token = base64.encodebytes(md5(f"{expires}{path}{ip} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "")
secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}"
print(secured_url)
import base64
from hashlib import md5
from time import time
secret = 'secret_key'
stream_address = '133529_2'
path = f'/live/{stream_address}/playlist.m3u8'
expires = int(time()) + 100000
token = base64.encodebytes(md5(f"{expires}{path} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "")
secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}"
print(secured_url)

Где:

  • secret — секретный ключ
  • path — путь к файлу
  • ip — IP-адрес, которому разрешено получить контент
  • expires — время жизни ссылки (в секундах)
  • token — генерация токена
  • secured_url — ссылка на файл

В результате будет получен только токен. Его необходимо использовать в ссылках и дополнительно указать время истечения ссылка в UNIX-время.

shell
echo -n '2147483647/images/1.jpg1.2.3.4 secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
'2147483647/images/1.jpg1.2.3.4 secret_key' = '{expires}{path}{ip} {secret_key}'
shell
echo -n '2147483647/images/1.jpg secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
'2147483647/images/1.jpg secret_key' = '{expires}{path} {secret_key}'

Возможно задать разрешенные HTTP-методы запросов к контенту в CDN. По умолчанию разрешены и доступны методы GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS.

Активируйте данную опцию, если необходимо выбрать методы, которыми разрешено обращаться к CDN-ресурсу.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Безопасность
  • включите опцию Разрешенные HTTP-методы

Запросы не будут обработаны указанными в строке методами.

Каждый сервер должен поддерживать методы GET и HEAD. Если сервер не распознал указанный метод, вернется статус 501 (Not Implemented). Если серверу метод известен, но он неприменим к конкретному ресурсу, будет возвращено сообщение с кодом 405 (Method Not Allowed).

В большинстве случаев рекомендуем оставлять оставлять методы GET, HEAD и POST.

Имя хоста, передающееся в SNI-запросах к серверу-источнику

Заголовок раздела «Имя хоста, передающееся в SNI-запросах к серверу-источнику»

Server Name Indication (SNI) — расширение протокола TLS, позволяющее указывать имя хоста, с которым необходимо установить соединение.

SNI необходимо для того, чтобы веб-серверы, размещённые на одном IP-адресе под разными доменами, могли корректно откликаться по HTTPS.

Опция Изменить имя SNI-хоста позволяет задать имя хоста, передающееся в SNI-запросах от CDN-серверов к серверу-источнику по протоколу HTTPS.

Важно

Данная опция работает только, если CDN-серверы используют протокол HTTPS для обращения к источнику.

Опция может принимать 2 значения:

  • Динамическое имя SNI-хоста
  • Пользовательское имя SNI-хоста

Совпадает со значением опции Изменить заголовок Host.

Задаётся вручную. Значение не может быть пустым или содержать IP адрес.

Примечание

После создания ресурса опция будет автоматически активирована со значением по умолчанию «Динамическое имя SNI-хоста».