Подключение веб-приложений c использованием CLI

<< Click to Display Table of Contents >>

Подключение веб-приложений c использованием CLI

Подключение веб-приложений c использованием CLI

В этом разделе

Конфигурация веб-сервера настраивается в конфигурационных файлах сервиса NginxConnector, так как в качестве веб-сервера используется Nginx.

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

1.Подключите веб-приложение.

2.Подключите несколько веб-приложений.

3.Настройте веб-страницы.

4.Настройте логирование.

5.Настройте сервер для мониторинга.

6.[Опционально] Установите запрет на редактирование конфигурации.

7.Настройте размер тела запроса.

8.[Опционально] Снимите веб-ресурс с защиты.

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

В конфигурационном файле сервиса NginxConnector /etc/waf-ngxcnd/ngxcnd.conf заданы пути к перманентному и рабочему конфигурационным файлам веб-сервера.

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

Рабочий конфигурационный файл веб-сервера автоматически создается из перманентного конфигурационного файла при запуске веб-сервера. Веб-сервер применяет рабочий конфигурационный файл.

Конфигурационный файл ngxcnd.conf сервиса NginxConnector содержит следующие директивы:

•work_conf_directory – путь к директории с рабочим конфигурационным файлом nginx.conf;

•permanent_conf_directory – путь к директории с перманентным конфигурационным файлом nginx.conf;

•log_level – уровень фиксации сообщений о событиях безопасности в журнале регистрации сервиса NginxConnector. Возможные значения: FATAL, ERROR, WARN, INFO. Значение по умолчанию: INFO;

•log_folder – путь к директории с журналом регистрации событий сервиса NginxConnector.

Примечание: В дальнейшем, при описании настройки конфигурационного файла веб-сервера, имеется в виду редактирование перманентного конфигурационного файла сервиса NginxConnector.

Важно! Конфигурация веб-сервера настраивается в Nginx-конфигурации (в перманентном конфигурационном файле nginx.conf и вложенных файлах server_xxx.conf).

Подключение веб-приложений

Конфигурация веб-сервера настраивается в перманентном конфигурационном файле nginx.conf.

Серверы добавляются по пути /etc/waf-agent-permanent/servers/server_xxx.conf. Директива include добавляется по пути /etc/waf-agent-permanent/nginx.conf:

include servers/server_xxx.conf

Каждый файл server_xxx.conf содержит один контекст server, с помощью которого можно поставить один веб-ресурс под защиту Комплекса.

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

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

$ sudo systemctl restart waf-agent-nginx

В ходе перезагрузки перманентный конфигурационный файл веб-сервера nginx.conf автоматически преобразуется в рабочий конфигурационный файл. При этом следующие директивы игнорируются и в них указываются значения по умолчанию:

•daemon;

•user;

•cluster_id;

•brokers.

Для постановки веб-ресурса под защиту рекомендуем добавить в конфигурационный файл server_xx1.conf для порта 80 (HTTP) следующие директивы:

server {
    listen 80;
    server_name <domain>;
    return 301 https://$server_name$request_uri;
weblock_server_alias alias_1;
}

А также добавить в другой конфигурационный файл server_xx2.conf для порта 443 (HTTPS) следующие директивы:

server {
    listen 443 ssl;
    http2 on;
    listen [::]:443 ssl;
    server_name <domain>;
    weblock_server_alias alias_s;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/cert.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    client\_max\_body\_size 16M;
    weblock\_limit\_zone\_size 64M;   
    weblock\_iprange\_ban\_zone\_size 64M;
    weblock\_iprange\_whl\_zone\_size 8M;
    weblock\_modsec\_shared\_zone\_size 8M;
    weblock\_blocked\_request\_page <путь> ;  
    weblock\_page\_502 <путь>;
    weblock\_page\_503 <путь>;    
    weblock\_page\_504 <путь>;   
    weblock\_ad\_blocked\_request\_page <путь>;    
    waf\_iprange\_ban\_blocked\_request\_page <путь>;
    access\_log off;
    weblock\_ad\_client\_counters\_max 524288;
    weblock\_sync\_bans\_default\_state on;
    weblock\_ad\_cookie\_http\_only on;
    ssl\_session\_timeout 30m;
    weblock\_ad\_cookie\_secure on;
    location / {
        weblock_location_alias alias_l;
        proxy_pass http://ip:port;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_ssl_verify off;
    }
}

hmtoggle_arrow1Параметры

Важно! Для корректной работы Комплекса веб-сервер настраивается в качестве обратного прокси-сервера. Настройте проксирование для каждого сервера кластера, то есть задайте servers.locations.name: / и соответствующий servers.locations.proxy_pass.

Примечание: Рекомендуется использовать директиву proxy_pass вместе с блоком upstream, который определяет группу серверов для обеспечения балансировки нагрузки и отказоустойчивости.

При необходимости задайте в конфигурационном файле nginx.conf путь к журналу регистрации событий веб-сервера logs/error.log и уровень фиксации сообщений в журнале с помощью стандартной директивы.

После редактирования конфигурации веб-сервера:

•подключите новый файл server_xxx.conf директивой include в перманентном конфигурационном файле nginx.conf;

•перезагрузите веб-сервер командой:

Примечание: Страницы ошибок должны содержать необходимые стили и скрипты. Не рекомендуется использовать ссылки и рисунки на страницах ошибок. При изменении файлов со страницами ошибок перезагрузите сервис NginxConnector и веб-сервер Nginx.

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

•сервер порта 80 (http);

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

Все изменения настройки веб-сервера, которые были применены в веб-интерфейсе или в конфигурационном файле, можно посмотреть в WCS-схеме.

WCS-схема обеспечивает:

•Постановку под защиту одного или нескольких веб-приложений.

•Собственную настройку защиты веб-страниц для группы веб-страниц с особым режимом трафика, которые задаются в WCS-схеме.

•Балансировку нагрузки средствами веб-сервера Nginx, позволяя подключить группу веб-серверов, между которыми распределятся сетевой трафик. При отсутствии балансировки вся нагрузка распределяется на один прокси-сервер, так как для корректной работы Комплекса веб-сервер настраивается в качестве обратного прокси-сервера.

•Надежное подключение веб-приложений.

Примечание: Можно включить защиту на веб-приложение в целом в секции servers и также на отдельные страницы веб-приложения, включающие вложенные страницы, в секции servers.locations.

Файл wcs.json может содержать, например, следующую WCS-схему:

{
  "f2b_keys": [
    "$remote_addr"
  ],
  "upstreams": [
    {
      "locked": false,
      "consistent": true,
      "alias": "Ok",
      "servers": [
        {
          "address": "IP-адрес",
          "port": 80,
          "weight": 1,
          "max_fails": 1,
          "backup": false
        }
      ],
      "balancing": "least_conn",
      "keepalive_timeout": 60,
      "tls": false
    },
    {
      "locked": false,
      "consistent": true,
      "alias": "Тест",
      "servers": [
        {
          "address": " IP-адрес ",
          "port": 80,
          "weight": 1,
          "max_fails": 1,
          "backup": false
        }
      ],
      "balancing": "round_robin",
      "keepalive_timeout": 60,
      "tls": false
    },
    {
      "locked": false,
      "consistent": true,
      "alias": "Тест",
      "servers": [
        {
          "address": " IP-адрес ",
          "port": 80,
          "weight": 1,
          "max_fails": 1,
          "backup": false
        }
      ],
      "balancing": "ip_hash",
      "keepalive_timeout": 60,
      "tls": false
    }
  ],
  "servers": [
    {
      "locked": false,
      "consistent": true,
      "locations_add_allowed": true,
      "alias": "ID",
      "hidden": false,
      "preamble": {
        "names": [
          "Тест"
        ],
        "ports": [
          1,
          2222
        ],
        "http2": false,
        "cert": "",
        "default": false,
        "ipv6": false,
        "proxy_protocol": false,
        "locked": false,
        "consistent": true
      },
      "properties": {
        "locked": false,
        "blocked_request_page": "ID_BLOCKED_REQUEST_PAGE",
        "page_502": "ID_PAGE_502",
        "page_503": "ID_PAGE_503",
        "page_504": "ID_PAGE_504",
        "ad_blocked_request_page": "IDAD_BLOCKED_REQUEST_PAGE",
        "iprange_ban_blocked_request_page": "ID_IP_RANGE_BAN_PAGE",
        "access_logs": {
          "disable": true,
          "files": [],
          "syslogs": []
        },
        "consistent": true
      },
      "client_max_body_size": 12345,
      "locations": []
    }
  ],
  "certificates": [],
  "captcha_pages": [],
  "files": [
  {
      "alias": "ID_IP_RANGE_BAN_PAGE",
      "content_base64": "PCFET0NUWVBF”
    }
  ],
  "maintenance": {
    "consistent": true,
    "port": 1234,
    "server_name": "тест",
    "whitelist_ranges": [
      "IP-адрес"
    ],
    "metric_path": "/",
    "alias": "ID"
  }
}

hmtoggle_arrow1Параметры WCS-схемы

Подключение нескольких веб-приложений

Чтобы защитить несколько веб-ресурсов, нужно:

•создать и настроить соответствующее количество конфигурационных файлов server_xxx.conf;

•подключить их в перманентном конфигурационном файле nginx.conf;

•перезагрузить веб-сервер.

Примечание: Директива server_name поддерживает только одно доменное имя.

hmtoggle_arrow1Пример 1

hmtoggle_arrow1Пример 2

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

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

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

•общая для сервера (domain);

•для веб-страниц (domain/).

Чтобы добавить веб-страницы с особым режимом трафика, следует добавить контекст location с путем к этой группе страниц и псевдонимом.

hmtoggle_arrow1Пример

Настройки логирования

Интеграция с SIEM-системами реализована посредством сетевого протокола Syslog (подробнее syslog).

Настраивается интеграция с SIEM-системами в файле перманентной конфигурации. Настройка в WCS-схеме выглядит следующим образом:

"access_logs": {
    "files": [
        {
               "file_name": "new_logs",
               "format": "json_combined"
        }
    ],
    "syslogs": [
        {
            "address": "0.0.0.0",
            "port": 514,
            "format": "json_combined"
        }
    ]
},

hmtoggle_arrow1Параметры

Настройка сервера для мониторинга

Сервер для мониторинга снимает метрики событий безопасности с модуля Agent и передает их внешнему сервису для обработки и визуализации метрик (подробнее Интеграция с системами мониторинга).

Сервер для мониторинга и внешний сервис задаются в файле перманентной конфигурации. Настройка в WCS-схеме выглядит следующим образом:

"maintenance": {
    "server_name": "domain",
    "port": 44054,
    "whitelist_ranges": ["0.0.0.0/2", "0.0.0.0/24"],
    "metric_path": "/weblock_metrics",
    "alias": "alias",
    "consistent": true
}

hmtoggle_arrow1Параметры

Секция maintenance размещается в WCS-схеме после секции files.

Гибкий запрет редактирования конфигурации веб-сервера

Реализована возможность установить полный или частичный запрет на редактирование конфигурации подключения веб-ресурсов в веб-интерфейсе или по API.

Запрет устанавливается в файле перманентной конфигурации определенного сервера с помощью следующих параметров:

hmtoggle_arrow1Параметры

После изменения перманентного конфига сервера следует перезагрузить сервис NginxConnector командой:

$ sudo systemctl restart waf-agent-nginx

Также запрет можно установить в конфигурационном файле server_xxx.conf с помощью следующих тегов:

hmtoggle_arrow1Теги с примером

Настройка размера тела запроса

Если защищаемый веб-ресурс используется для загрузки файлов, рекомендуем добавить в конфигурационный файл server_xxx.conf в соответствующие веб-ресурсу контексты server и location директиву client_max_body_size, регулирующую максимально допустимый размер тела запроса.

По умолчанию веб-сервер пропускает запросы с телом ≤ 1 Мб.

При этом Комплекс по умолчанию ограничивает тело запроса ≤ 16 Мб.

Рекомендуем установить:

client_max_body_size = 16m;

либо, чтобы размер тела запроса не проверялся:

client_max_body_size = 0;

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

$ sudo systemctl restart waf-agent-nginx

Снятие веб-ресурса с защиты

Снять с защиты веб-ресурс (сервер) можно, удалив его конфигурационный файл server_xxx.conf из перманентного конфигурационного файла. Также нужно удалить include из файла nginx.conf.

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

$ sudo systemctl restart waf-agent-nginx

В этом разделе: