Тонкая настройка Вебмониторэкс Ingress Controller¶
Официальная документация NGINX Ingress Controller
Настройка Вебмониторэкс Ingress Controller незначительно отличается от настройки NGINX Ingress Controller, о которой рассказано в официальной документации. При работе с Вебмониторэкс доступны все возможности настройки оригинального NGINX Ingress Controller.
Дополнительные настройки Helm Chart¶
Настройки Helm‑чарта описаны в файле values.yaml
. По умолчанию файл имеет следующий вид:
controller:
wallarm:
enabled: false
apiHost: api.wallarm.ru
apiPort: 443
apiSSL: true
token: ""
tarantool:
kind: Deployment
service:
annotations: {}
replicaCount: 1
arena: "0.2"
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
metrics:
enabled: false
service:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /wallarm-metrics
prometheus.io/port: "18080"
## List of IP addresses at which the stats-exporter service is available
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 9913
type: ClusterIP
synccloud:
resources: {}
collectd:
resources: {}
Установка Ingress‑контроллера
Подробнее читайте на странице установки Nginx Ingress Controller
Для изменения настроек рекомендуется использовать опцию --set
команды helm install
(при установке Ingress‑контроллера) или helm upgrade
(при изменении параметров установленного Ingress‑контроллера). Например:
helm upgrade --reuse-values --set controller.wallarm.enabled=true <INGRESS_CONTROLLER_NAME> webmonitorx/webmonitorx-ingress -n <KUBERNETES_NAMESPACE>
Ниже приведено описание основных параметров, которые вы можете настроить. Остальные параметры используют значение по умолчанию или редко изменяются, их описание доступно по ссылке.
controller.wallarm.enabled¶
Позволяет включать и выключать функциональность Вебмониторэкс.
Значение по умолчанию: false
controller.wallarm.apiHost¶
Конечная точка API. Параметр должен иметь значение api.wallarm.ru
.
Значение по умолчанию: api.wallarm.ru
controller.wallarm.token¶
Токен Cloud Node, созданной в Личном кабинете. Необходим для доступа ноды к Вебмониторэкс API.
Значение по умолчанию: нет
controller.wallarm.tarantool.replicaCount¶
Количество запускаемых pod'ов постаналитики. Постаналитика отвечает за определение поведенческих атак.
Значение по умолчанию: 1
controller.wallarm.tarantool.arena¶
Объем памяти, выделенной для постаналитики. Рекомендуется выставлять значение, достаточное для хранения запросов за последние 5-15 минут.
Значение по умолчанию: 0.2
controller.wallarm.metrics.enabled¶
Позволяет включать и выключать сбор метрик о работе Вебмониторэкс. Если в Kubernetes кластере установлен Prometheus helm chart, то дополнительных настроек не требуется, необходимо только включить сбор метрик.
Значение по умолчанию: false
Глобальные настройки контроллера¶
Применяются при помощи ConfigMap.
Поддерживаются следующие дополнительные параметры кроме стандартных:
-
enable-wallarm
— включает обработку запросов с помощью Вебмониторэкс
Аннотации Ingress¶
Используются для настройки параметров обработки отдельных Ingress'ов.
Кроме стандартных аннотаций поддерживаются следующие дополнительные:
-
nginx.ingress.kubernetes.io/wallarm-mode, default: off
Применение аннотаций к Ingress¶
Чтобы применить настройки к вашему Ingress, используйте следующую команду:
kubectl annotate --overwrite ingress YOUR_INGRESS_NAME ANNOTATION_NAME=VALUE
-
YOUR_INGRESS_NAME
— название вашего Ingress, -
ANNOTATION_NAME
— название аннотации из списка выше, -
VALUE
— значение для аннотации из списка выше.
Примеры аннотаций¶
Настройка страницы блокировки и кода ошибки¶
Аннотация nginx.ingress.kubernetes.io/wallarm-block-page
используется, чтобы настроить страницу и код ошибки, которые возвращаются клиенту в ответ на запрос, заблокированный по следующим причинам:
-
В запросе обнаружены признаки атак на проверку входных данных, атак типа vpatch или атак на основе регулярных выражений, и WAF‑нода работает в режиме блокировки.
-
Запрос с признаками атак из списка выше отправлен с IP-адреса из серого списка, и WAF‑нода работает в режиме мягкой блокировки.
-
Запрос отправлен с IP-адреса из черного списка.
Например, чтобы в ответ на любой заблокированный запрос вернуть стандартную страницу блокировки Вебмониторэкс и код ошибки 445:
kubectl annotate ingress <YOUR_INGRESS_NAME> nginx.ingress.kubernetes.io/wallarm-block-page="&/usr/share/nginx/html/wallarm_blocked.html response_code=445 type=attack,acl_ip,acl_source"
Подробнее о способах настройки страницы блокировки и кода ошибки →
Управление режимом libdetection¶
Режим libdetection по умолчанию
Режим libdetection по умолчанию — on
(библиотека включена).
Вы можете управлять режимом работы libdetection одним из способов:
-
Применить следующую аннотацию
nginx.ingress.kubernetes.io/server-snippet
к Ingress:kubectl annotate --overwrite ingress <YOUR_INGRESS_NAME> nginx.ingress.kubernetes.io/server-snippet="wallarm_enable_libdetection on/off"
-
Передать параметр
controller.config.server-snippet
в Helm‑чарт:helm install --set controller.config.server-snippet='wallarm_enable_libdetection on/off' <INGRESS_CONTROLLER_NAME> webmonitorx/webmonitorx-ingress -n <KUBERNETES_NAMESPACE>
Для корректной установки Ingress‑контроллера, в опции
--set
также необходимо передать другие параметры Helm‑чартаhelm upgrade --reuse-values --set controller.config.server-snippet='wallarm_enable_libdetection on/off' <INGRESS_CONTROLLER_NAME> webmonitorx/webmonitorx-ingress -n <KUBERNETES_NAMESPACE>