[Документация Yandex Cloud](../../index.md) > [Yandex Smart Web Security](../index.md) > [Концепции](index.md) > Защита доменов

# Защита веб-приложений во внешней инфраструктуре

{% note info %}

Функциональность защиты доменов находится на стадии [Preview](../../overview/concepts/launch-stages.md).

{% endnote %}

Smart Web Security позволяет защитить веб-приложения, развернутые как в Yandex Cloud, так и за его пределами. Например, в вашей внутренней инфраструктуре или на других хостингах. Smart Web Security предлагает различные средства защиты от информационных угроз на прикладном уровне L7 модели OSI. Это могут быть [DDoS-атаки](../../glossary/ddos.md), атаки [ботов](https://ru.wikipedia.org/wiki/Ботнет), [SQL-инъекции](https://ru.wikipedia.org/wiki/Внедрение_SQL-кода), [межсайтовый скриптинг](https://ru.wikipedia.org/wiki/Межсайтовый_скриптинг) и другие.

## Схема защиты внешних ресурсов {#scheme-protect}

![domain-protect](../../_assets/smartwebsecurity/domain-protect.svg)

Все внешние запросы к веб-приложению проходят через Smart Web Security. Чтобы расшифровать и проанализировать HTTPS-трафик, в сервис [Certificate Manager](../../certificate-manager/index.md) потребуется загрузить приватный ключ и сертификат вашего сервера, на котором работает веб-приложение. После анализа вредоносные запросы блокируются, остальные перенаправляются на веб-приложение.

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

## Компоненты технологии защиты доменов {#components}

Для фильтрации входящего трафика используется обратное проксирование. Все HTTP-запросы от посетителей сайта или веб-приложения направляются к целевому ресурсу через прокси-сервер Smart Web Security. К прокси-серверу подключается один или несколько доменов защищаемого ресурса. Домену можно назначить [профиль безопасности](profiles.md), в котором вы настраиваете защиту Anti-DDoS, Web Application Firewall (WAF) и при необходимости ограничиваете нагрузку на приложение с помощью Advanced Rate Limiter (ARL).

Таким образом, чтобы защищать веб-приложения или бэкенды, вам потребуется настроить прокси-сервер и домен. А также добавить сертификат для расшифровки и проверки трафика HTTPS.

Защита доменов тарифицируется в соответствии с [правилами тарификации](../pricing.md#requests).

### Прокси-сервер {#proxy}

_Прокси-сервер_ — это посредник, на который поступают все запросы пользователей к вашему сайту или приложению. Он имеет выделенный [публичный IP-адрес](../../vpc/concepts/address.md#public-addresses) для приема запросов, поэтому публичный IP-адрес вашего сервера будет скрыт от внешних пользователей. На прокси-сервере настроен балансировщик нагрузки, который обеспечивает стабильную работу при большом количестве внешних запросов, и включена базовая [защита от DDoS](../../vpc/ddos-protection/index.md).

{% note info %}

На прокси-сервере установлено ограничение MTU для всех пакетов — 1 450 байт.

{% endnote %}

Чтобы прокси-сервер принимал запросы, отправленные на ваш домен, настройте перенаправление. Для этого добавьте А-запись для DNS вида: `<IP-адрес прокси-сервера> : <адрес домена>`. IP-адрес прокси-сервера будет доступен в его параметрах после создания. Добавить А-запись можно через личный кабинет вашего хостинг-провайдера или регистратора доменов. Также вы можете делегировать управление доменом [Yandex Cloud DNS](../../dns/index.md). Тогда А-записи настраиваются в Yandex Cloud.

Перенаправление обычно начинает действовать через несколько минут. Но иногда процесс может занять до 24 часов.

Прокси-сервер может работать только с публичными IP-адресами, адрес вашего целевого ресурса должен быть доступен из внешней сети.

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

Для каждого прокси-сервера можно настроить логирование. Вы можете записывать все логи или отфильтровать их для экономии места в хранилище.

К прокси-серверу можно подключить несколько доменов. Количество доменов указано в разделе [Квоты и лимиты Smart Web Security](limits.md).

{% note info %}

Чтобы создать [прокси-сервер](domain-protect.md#proxy), пользователю должны быть [назначены](../../iam/operations/roles/grant.md#cloud-or-folder) роли [`smart-web-security.admin`](../security/index.md#smart-web-security-admin), [`resource-manager.admin`](../../resource-manager/security/index.md#resource-manager-admin) и [`iam.serviceAccounts.admin`](../../iam/security/index.md#iam-serviceAccounts-admin) на [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором создается прокси-сервер.

{% endnote %}

### Домен {#domain}

При настройке домена потребуется указать:

* _Адрес домена_ — адрес вашего сайта или веб-приложения, который вы приобрели у DNS-провайдера или хостинг-провайдера. У вас должна быть возможность управлять А-записями в DNS. Допускается любое доменное имя в формате [ASCII](https://wikipedia.org/wiki/ASCII) или [Punycode](https://wikipedia.org/wiki/Punycode).

* _Тип соединения_, на котором работает ваш сайт — HTTPS или HTTP. Рекомендуется использовать протокол HTTPS, поскольку в этом случае соединение между пользователем и вашим приложением шифруется.

    При выборе протокола HTTPS надо добавить TLS-сертификат и приватный ключ в формате [PEM](https://wikipedia.org/wiki/Privacy-Enhanced_Mail). Smart Web Security проверяет срок действия и соответствие добавленного сертификата ключу. Недействительный сертификат не будет загружен.

    Сертификат и ключ используются для терминирования TLS-соединения от пользователя к вашему приложению. Чтобы оценить безопасность трафика, Smart Web Security расшифрует и проанализирует трафик.

    Если для вашего приложения еще не настроен протокол HTTPS, вы можете получить сертификат Let's Encrypt в [Yandex Certificate Manager](../../certificate-manager/operations/managed/cert-create.md). Это можно сделать заранее или в процессе добавления домена.

    Чтобы получить сертификат Let's Encrypt, потребуется подтвердить права на владение доменом. Для этого нужен доступ к учетной записи у регистратора доменов или к хосту, к которому привязан домен.

    Также вы можете использовать незащищенный протокол HTTP, но рекомендуем делать это только в тестовых целях. Как правило, при просмотре таких сайтов браузеры предупреждают пользователей, что сайт небезопасен.
  
* _Целевые ресурсы_ — веб-серверы или бэкенды, на которые будет отправляться проверенный и безопасный трафик. Для целевых ресурсов нужно указать IP-адрес и порт, на котором работает ваше веб-приложение.

    Чтобы передавать трафик от Smart Web Security к вашему приложению в зашифрованном виде:
    
    * Включите протокол HTTPS.

    * Укажите [SNI](https://wikipedia.org/wiki/Server_Name_Indication) — доменное имя хоста для расширения TLS Server Name Indication. Допускается любое доменное имя в формате ASCII или Punycode. 
    
    * Добавьте доверенный корневой сертификат (Root CA) для цепочки сертификатов, установленной на эндпоинтах бэкендов. Поддерживаются сертификаты стандарта X.509 в формате PEM. Действительность сертификата не проверяется, вам потребуется отслеживать это самостоятельно.

После настройки домена к нему можно подключить [профиль безопасности](profiles.md). Профиль безопасности содержит правила, по которым будут проверяться и фильтроваться запросы к вашему приложению.

## Дополнительные меры защиты {#security-rule}

Чтобы на ваш сайт или приложение могли попасть только проверенные и безопасные запросы от Smart Web Security:

* Запретите все входящие запросы.
* Добавьте в разрешенные только [адреса Smart Web Security](../../overview/concepts/public-ips.md#sws-ips). Список адресов также будет доступен в параметрах домена, в разделе **Как активировать защиту**.
* Добавьте в каждый запрос доверенный HTTP-заголовок с уникальной парой «ключ—значение». Настройте его проверку на вашем сервере, чтобы принимать трафик только от конкретного прокси, а не от всех адресов из доверенного диапазона. Для включения этой опции [обратитесь поддержку](https://kz.center.yandex.cloud/support).