Установка и настройка

Проверка подлинности дистрибутива

Основной технической характеристикой, необходимой для обеспечения безопасной эксплуатации «Weblock.», является целостность данных машинного носителя информации, на котором размещаются установочные файлы, подтвержденная при проверке контрольных сумм.

Фиксация контрольных сумм проводится программой фиксации и контроля исходного состояния программного комплекса «ФИКС» (версия 2.0.2) (разработчик ЗАО «ЦБИ-сервис», сертификат соответствия ФСТЭК России № 1548, выдан 15 января 2008 г., действителен до 15 января 2025 г.) по алгоритму «Уровень 1, программно».

Проверка подлинности «Weblock.» проводится сверкой контрольной суммы дистрибутива со значением, указанным в документе «Weblock. Формуляр. ЦГТС.10001-01 30 01».

Подсчет контрольных сумм компакт-дисков «Weblock.» по ГОСТ Р 34.11-2012 с использованием программы подсчета контрольных сумм gost12sum должен осуществляться на рабочей станции, оборудованной устройством чтения компакт-дисков, в следующей последовательности:

  1. установить компакт-диск, подлежащий проверке, в устройство чтения компакт-дисков;

  2. набрать в командной строке:

    $ gost12sum-app
    
  3. ожидать завершения процесса подсчета контрольной суммы;

  4. сравнить значение контрольной суммы, выданное на экран, с соответствующим значением, указанным в документе «Weblock. Формуляр. ЦГТС.10001-01 30 01».

Дистрибутив является подлинным в случае совпадения контрольной суммы, выданной программой подсчета, со значением, приведенным в документе «Weblock. Формуляр. ЦГТС.10001-01 30 01».

Другие специальные процедуры, необходимые для демонстрации подлинности поставленного «Weblock.», приведены в документе «Weblock. Формуляр. ЦГТС.10001-01 30 01».

Системные требования

Для развертывания «Weblock.» рекомендуется сервер со следующими системными требованиями:

Компоненты

Системные требования

ОС

Debian 11

RAM

от 8 gb

HDD/SSD

от 250 gb

CPU

4 core 2 ghz

Ethernet

RJ45 от 100 mbps

Примечание

Для установки ОС Debian 11 загрузите необходимую версию с официального сайта https://www.debian.org/releases/bullseye/, согласно инструкции https://www.debian.org/releases/bullseye/installmanual.

Установка «Weblock.» в конфигурации standalone-install

Важно

Развертывание «Weblock.» должно проводиться с устройства Администратора (локального или виртуального). Для установки «Weblock.» необходимо обеспечить доступ между машиной Администратора и сервером, на котором будет устанавливаться «Weblock.». Для этого необходимо организовать доступность по умолчанию порта 22 со стороны сервера (для подключения используется инфраструктура SSH), если выбран другой порт, то это значение следует изменить в конфигурационном файле inventory/all.yml.

Установка пакетов и настройка SSH

На машину, с которой будет проводиться установка дистрибутива «Weblock.», необходимо установить следующие пакеты:

  • python3;

  • ansible версии 2.15 или выше;

  • jq.

На машину, на которую производится установка дистрибутива «Weblock.», (далее – целевая машина) необходимо установить следующие пакеты:

  • sudo;

  • python3 (включая пакет python3-apt).

Публичный SSH-ключ перенести с машины, с которой будет проводиться установка дистрибутива «Weblock.», на целевую машину, добавив его в файл ~/.ssh/authorized_keys.

Настройка конфигурационного файла all.yml

В конфигурационном файле inventory/all.yml необходимо изменить следующие переменные:

  • ansible_user – пользователь на целевой виртуальной машине (или сервере), из-под которой будет производиться установка «Weblock.»;

  • ansible_host – IP-адрес целевой виртуальной машины (или сервера), на которой будет установлен «Weblock.»;

  • waf_reverse_proxy_domain – доменное имя для доступа в Личный кабинет «Weblock.»;

  • waf_reverse_proxy_port – порт, на котором будет доступен Личный кабинет «Weblock.».

  • waf_admin_email – адрес, который будет показан при ошибке 403 (доступ к ресурсу запрещен).

Установка «Weblock.»

Для достижения консистентности информационной системы необходимо 2 раза выполнить нижеприведенную команду:

$ ansible-playbook deploy_waf.yml

На этом установка «Weblock.» завершена.

Проверка установки «Weblock.»

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

$ curl http://nnn.ru:80

где вместо nnn.ru – значение переменной waf_reverse_proxy_domain конфигурационного файла inventory/all.yml.

В ответе получите html-код веб-страницы с логотипом «Weblock.».

Важно

Для авторизации в Личном кабинете используйте доменное имя, указанное в переменной waf_reverse_proxy_domain конфигурационного файла inventory/all.yml, иначе возможно возникновение CORS-ошибки.

Настройка «Weblock.»

Настройка конфигурационного файла веб-сервера

В качестве веб-сервера, перечисленного в структуре «Weblock.», используется сервер Nginx. Для корректной работы «Weblock.» необходимо настроить конфигурационный файл /etc/nginx/sites-available/default-weblock.conf.

При первоначальной установке сервер Nginx сконфигурирован так, чтобы отдавать статичную страницу, сигнализирующую о его работоспособности. Для корректной работы «Weblock.» необходимо настроить Nginx в качестве обратного прокси-сервера, для этого следует в конфигурационный файл default-weblock.conf поместить следующие строки:

server {
    listen 80;

    server_name example.com;

    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;

    server_name example.com;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/cert.key;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    location / {

        proxy_pass http://ip:port;

        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $binary_remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_ssl_verify off;
    }
}

При этом во всех блоках server:

  • в директиве server_name указать доменное имя защищаемого веб-приложения,

  • в директиве proxy_pass указать протокол, IP-адрес (или доменное имя) и порт защищаемого веб-приложения,

  • в директивах ssl_certificate и ssl_certificate_key указать путь к SSL сертификатам cert.pem, cert.key.

Примечание

Подробнее о директивах сервера Nginx можно узнать из официальной документации: https://docs.nginx.com/nginx/admin-guide/web-server/web-server/.

Таким образом под защиту ставятся:

  • порт 80 (http) домена,

  • порт 443 (https) того же домена.

Чтобы защитить 2 веб-приложения (веб-сервера), в конфигурационный файл default-weblock.conf можно добавить 2 группы строк, приведенные выше, указав для каждой в переменной server_name свой домен.

Отражение конфигурации в интерфейсе Личного кабинета

Настраивая конфигурационный файл default-weblock.conf, как сказано выше, для 1 веб-ресурса – в Личном кабинете будет отображаться два сервера:

  • сервер порта 80,

  • сервер порта 443.

В Личном кабинете в разделе «Кластеры» можно для каждого сервера отдельно настраивать защиту от угроз (подробнее Настройка защиты серверов кластера).

Если среди страниц защищаемого веб-приложения есть отдельные веб-страницы с особым режимом трафика, то для персональной настройки защиты таких веб-страниц (в Личном кабинете в разделе «Кластеры») следует в ходе настройки конфигурационного файла указать эти веб-страницы в разделе location.

В настройке конфигурационного файла default-weblock.conf у сервера, слушающего порт 443, задан блок location /. Поэтому в Личном кабинете в настройках защиты сервера будут отображаться два варианта настройки:

  • общая для сервера (например, example.com),

  • для страниц (example.com/).

Пример. Настройка персональной защиты для страниц example.com/list/.

В конфигурационном файле default-weblock.conf в блоке server блок «location /» дублируется; в первом указываются страницы list/, а во втором – остальные страницы, например:

  • блок location /list/

  • блок location /^(?!list)/

Тогда в Личном кабинете в разделе «Кластеры» в настройках защиты сервера будут отображаться три варианта настройки:

  • общая для сервера (например, example.com),

  • для страниц (example.com/list/),

  • для остальных страниц (example.com/^(?!list)/).

Конец примера.

Настройка капчи

«Weblock.» применяет сервис капчи при подозрительном трафике. «Weblock.» позволяет подключить сервис reCAPTCHA или Yandex Smart CAPTCHA. Подключение сервиса капчи необходимо для работы механизма защиты от DDoS-атак уровня приложений, описанного ниже.

Для подключения сервиса капчи необходимо выполнить следующие действия:

  1. Зарегистрироваться в сервисе, предоставляющем капчи. Создать капчу, получить пару ключей.

Примечание

Официальная документация сервиса reCAPTCHA: https://developers.google.com/recaptcha/intro?hl=ru.

Примечание

Официальная документация сервиса Yandex Smart CAPTCHA: https://cloud.yandex.ru/docs/smartcaptcha/quickstart.

  1. Добавить директивы в конфигурационный файл веб-сервера Nginx default-weblock.conf в блок server, слушающий 443 порт (listen 443 ssl).

Для подключения сервиса reCAPTCHA добавляются следующие строки:

location /my_captcha {
    weblock_ad_captcha_page "../captcha.html";
}

location /my_captcha/my_cool_handler/ {
    proxy_request_buffering on;
    proxy_buffering on;

    proxy_set_body $request_body&secret=xxxx&remoteip=$remote_addr;

    proxy_set_header Cookie "";
    proxy_set_header Accept-Encoding "";
    proxy_set_header Host www.google.com;
    proxy_set_header Content-Type "application/x-www-form-urlencoded";

    proxy_pass https://www.google.com/recaptcha/api/siteverify;

    proxy_http_version 1.1;
    proxy_ssl_session_reuse on;
    weblock_ad_captcha_page_validate_json_response "success" "true";
}

где

  • в директиве weblock_ad_captcha_page указать полный путь к файлу со страницей капчи;

  • в директиве proxy_set_body в параметре secret для проверки ответа указать полученный секретный ключ.

Для подключения сервиса Yandex Smart CAPTCHA добавляются следующие строки:

location /my_captcha {
    weblock_ad_captcha_page "../captcha.html";
}

location /my_captcha/my_cool_handler/ {
    proxy_request_buffering on;
    proxy_buffering on;

    set $args $args&secret=xxxxxx&ip=$remote_addr;

    proxy_set_header Host smartcaptcha.yandexcloud.net;
    proxy_pass https://smartcaptcha.yandexcloud.net/;

    proxy_set_header Cookie "";
    proxy_set_header Accept-Encoding "";

    proxy_http_version 1.1;
    proxy_ssl_session_reuse on;
    weblock_ad_captcha_page_validate_json_response "status" "ok";
}

где

  • в директиве weblock_ad_captcha_page указать полный путь к файлу со страницей капчи;

  • в директиве set в параметре secret для проверки ответа указать полученный ключ сервера.

Перезагрузка веб-сервера

После изменения конфигурации сервера Nginx, выполненной выше, следует перезагрузить веб-сервер командой:

$ sudo nginx -s reload

Настройка фиксации сообщений

Для детализации диагностики рекомендуется подключить фиксацию критичных сообщений (уровней EMERGENCY, ALERT, CRITICAL, ERROR) для модуля «Weblock. Agent».

Подключение данных настроек осуществляется с помощью API «Weblock.», а именно:

а) Сначала получаем токен авторизации с помощью эндпоинта API oidc/oauth2/token. Токен необходим для работы с другими эндпоинтами API.

б) Затем получаем идентификаторы кластеров и серверов с помощью эндпоинта controller/v1/clusters.

Примечание

«Weblock.» компонует защищаемые веб-серверы и веб-приложения в кластеры. По терминологии Nginx веб-серверы и веб-приложения называются просто «серверы».

в) Наконец для каждого сервера подключаем фиксацию критичных сообщений с помощью метода POST эндпоинта controller/v1/clusters/{clusterId}/server/{serverIndex}/configuration с входными параметрами:

{
    "logBanlimBlockedRequests": true,
    "logLevel": "ERROR"
}

где вместо {clusterId} – идентификатор кластера,

вместо {serverIndex} – идентификатор сервера,

logLevel – параметр, задающий уровень фиксации критичных сообщений,

logBanlimBlockedRequests – флаг логирования запросов, заблокированных функционалом «F2B» и «Лимиты» (Личный кабинет, раздел «Кластеры») (подробнее Настройка защиты серверов кластера).

Настройка подключения к Личному кабинету

Доступ к Личному кабинету по протоколу HTTPs

Для обеспечения доступа к Личному кабинету по протоколу HTTPs необходимо:

  • изменить настройку переменных окружения,

  • получить SSL сертификат на домен Личного кабинета «Weblock.».

Настройка переменных окружения

В файле настройки переменных окружения /var/www/html/waf-front/env/env.js изменить схему протокола на https.

Пример. Фрагмент настройки переменных окружения. В адресе заменено http на https.

window.env = {
  endpoints:{
    api:"https://nnn.ru:1080/controller",
    documentation:"https://docs.weblock.ru",
    geo:"https://nnn.ru:1080/geocoder",
    id:"https://nnn.ru:1080/oidc",
    report:"https://nnn.ru:1080/reporter",
    wafHealth:"https://nnn.ru:1080/health"
  }
}

где вместо nnn.ru - доменное имя Личного кабинета «Weblock.».

Конец примера.

SSL сертификат на домен Личного кабинета

Необходимо получить SSL сертификат на домен, через который будет доступен Личный кабинет «Weblock.». Можно использовать SSL сертификаты, полученные ранее.

Подключение SSL сертификатов к «Weblock.» осуществляется в конфигурационном файле веб-сервера Apache2, входящего в состав «Weblock.»:

etc/apache2/sites-enabled/nnn.ru.conf

где вместо nnn.ru – доменное имя Личного кабинета «Weblock.», являющееся составной частью имени конфигурационного файла.

Для этого в данном конфигурационном файле в секцию конфигурации доступа к Личному кабинету (по умолчанию 1080) необходимо добавить следующие директивы:

SSLEngine on
SSLCertificateFile <путь до сертификата>
SSLCertificateKeyFile <путь до закрытого ключа>
SSLOptions +StdEnvVars

Пример. Фрагмент конфигурации для бесплатного сертификата безопасности от Let’s Encrypt:

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/nnn.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nnn.ru/privkey.pem
SSLOptions +StdEnvVars

где

вместо nnn.ru – доменное имя узла, на котором установлен «Weblock.»,

fullchain.pem – сертификат, содержащий корневой, промежуточный и конечный сертификаты,

privkey.pem – закрытый ключ.

Конец примера.

Примечание

Официальная документация сертификационного центра Let’s Encrypt: https://letsencrypt.org/docs/.

После изменения конфигурации веб-сервера Apache2, выполненной выше, следует перезагрузить веб-сервер командой:

$ sudo systemctl restart apache2
_images/Weblock_Logos_small.png