Перейти к содержанию

Обновление Ingress‑контроллера NGINX с сервисами Валарм WAF

Инструкция описывает способ обновления развернутого Ingress‑контроллера Валарм до новой версии с WAF‑нодой 3.4.

Обновление разных типов WAF‑ноды и критические изменения

  • При обновлении ноды версии 2.18 и ниже обратите внимание, что версии 3.x содержат критические изменения. Перед обновлением мы рекомендуем внимательно изучить набор изменений и учесть изменение конфигурации при планировании обновления.
  • Мы рекомендуем обновить как клиентские, так и партнерские WAF‑ноды версии 3.2 и ниже до последней версии (3.4). Более ранние версии скоро перестанут поддерживаться.

Шаг 1: Сообщите об обновлении в техническую поддержку Валарм

Если вы обновляете WAF‑ноду версии 2.18 и ниже до версии 3.4, сообщите технической поддержке Валарм об обновлении и оставьте запрос на включение новой логики списков IP-адресов для вашего аккаунта.

Когда новая логика будет включена, убедитесь, что в Консоли управления Валарм доступна секция Списки IP-адресов.

Шаг 2: Обновите репозиторий с Helm‑чартами Валарм

helm repo update wallarm

Добавьте репозиторий Helm со всеми версиями чартов, используя команду ниже. В дальнейшем рекомендуется использовать репозиторий Helm.

helm repo add wallarm https://charts.wallarm.com
helm repo update wallarm

Шаг 3: Обновите предыдущий Helm‑чарт

helm upgrade --version 3.4.0 <INGRESS_CONTROLLER_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
  • <INGRESS_CONTROLLER_NAME> — название развернутого Ingress‑контроллера Валарм

  • <KUBERNETES_NAMESPACE> — пространство имен, в котором развернуты Ingress и Ingress‑контроллер

Параметры, заданные через опцию --set при установке Ingress-контроллера, не изменятся.

Для изменения или добавления параметров, после обновления Helm‑чарта используйте команду helm upgrade с опциями --set и --reuse-values. Для удаления устаревших параметров отредактируйте ConfigMap Валарм.

Шаг 4: Адаптируйте настройки Ingress и Helm‑чарта под изменения в версиях 3.x

Если вы обновили чарт 2.18 и ниже до версии 3.4, адаптируйте следующие настройки под изменения в версиях 3.x:

  1. Списки IP‑адресов. Если в предыдущей версии вы использовали белые и черные списки IP, определите и примените необходимые изменения, используя инструкцию.

    Логика работы списков значительно изменилась в версиях 3.x, настройки списков необходимо адаптировать под изменения. Возможно, потребуется заменить устаревшие параметры из ConfigMap Валарм и аннотаций Ingress на новые.

  2. Убедитесь, что ожидаемое поведение следующих настроек соответствует изменениям в логике работы режимов off и monitoring:

    Если ожидаемое поведение не соответствует изменениям в логике работы режимов off и monitoring, адаптируйте аннотации Ingress и другие настройки под изменения.

Шаг 5: Передайте настройки из файла values.yaml в опции --set команды helm upgrade

Если ранее вы задавали параметры Ingress-контроллера в файле values.yaml из репозитория с Helm‑чартом Валарм, скопируйте их и передайте с помощью опции --set команды helm upgrade --reuse-values.

Например, если ранее вы задавали параметр wallarm_block_page_add_dynamic_path напрямую в файле values.yaml, вы можете не копировать параметр в новую версию файла, а использовать следующую команду:

helm upgrade --reuse-values --set controller.config.http-snippet='wallarm_block_page_add_dynamic_path /usr/custom-block-pages/block_page_firefox.html /usr/share/nginx/html/wallarm_blocked.html; map $http_user_agent $block_page { "~Firefox" &/usr/custom-block-pages/block_page_firefox.html; "~Chrome" &/usr/custom-block-pages/block_page_chrome.html; default &/usr/share/nginx/html/wallarm_blocked.html;}' <INGRESS_CONTROLLER_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>

Опция --reuse-values позволяет оставить неизменными существующие параметры чарта, которые не переданы в опции --set. В опции --set передаются параметры Helm‑чарта, которые необходимо изменить или добавить.

Шаг 6: Протестируйте обновление

  1. Убедитесь, что чарт обновлен:

    helm ls
    

    Версия чарта должна соответствовать wallarm-ingress-3.4.0.

  2. Получите список pod'ов, передав в <INGRESS_CONTROLLER_NAME> название Ingress‑контроллера Валарм:

    kubectl get pods -l release=<INGRESS_CONTROLLER_NAME>
    

    Все pod'ы должны быть в состоянии: STATUS: Running и READY: N/N. Например:

    NAME                                                              READY     STATUS    RESTARTS   AGE
    ingress-controller-nginx-ingress-controller-675c68d46d-cfck8      3/3       Running   0          5m
    ingress-controller-nginx-ingress-controller-wallarm-tarantljj8g   8/8       Running   0          5m
    ingress-controller-nginx-ingress-default-backend-584ffc6c7xj5xx   1/1       Running   0          5m
    
  3. Отправьте тестовый запрос с атаками SQLI и XSS на адрес Ingress‑контроллера Валарм:

    curl http://<INGRESS_CONTROLLER_IP>/?id='or+1=1--a-<script>prompt(1)</script>'
    

    Если WAF‑нода находится в статусе block, в ответ на запрос вернется код 403 Forbidden и атаки отобразятся в Консоли управления Валарм → секция События.