Брандмауэр веб-приложений для защиты приложений HTTP и HTTPS

РАЗМЕЩЕНО 10 сентября, 2019

Обзор

В следующей статье описывается реальный вариант использования ISP или хостинг-провайдера, где обратный прокси-сервер HTTP / S Load Balancer является основной точкой доступа ко всем общедоступным веб-службам, эта конфигурация показывает, насколько легко настроить расширенный и мощный WAF. набор правил для защиты веб-приложений на основе исходных IP-адресов черного списка, где каждый VirtualHost управляет своим собственным черным списком таким образом, что одному общедоступному IP-адресу может быть запрещено подключаться к веб-домену, например www.company1.com но разрешено подключаться к www.company2.com.

Мы сосредоточим статью на двух разделах, в основном разделе конфигурация профиля HTTPS будет работать как обратный прокси со списком различных служб, а во втором разделе будет объяснено, как настроить Брандмауэр веб-приложений набор правил, который будет управлять другим черным списком для каждой службы HTTP / S.

Окружающая среда

Следующая диаграмма описывает внутреннее устройство Zevenet WAF. Как показано, первый уровень - это модуль WAF, цель которого - гарантировать на раннем этапе, что только безопасные запросы могут проходить через модуль балансировки нагрузки, а затем пересылать запрос в бэкенд.

Во-первых, HTTP Хозяин заголовок оценивается, и IP клиента проверяется в уже настроенном черном списке. Если Хозяин заголовок и IP-адрес клиента совпадают, тогда соединение разрывается и 403 Запрещено HTTP-ответ отправляется клиенту, но в случае, если IP-адрес клиента и запрошенный Хозяин заголовок не совпадает, тогда трафик определяется как не вредоносный и передается в модуль балансировки нагрузки, где место назначения выбирается на основе HTTP-запроса. Хозяин заголовок и, наконец, перенаправляется на доступный внутренний сервер.

Здесь вы можете найти схему внутреннего устройства брандмауэра веб-приложений для данного примера.

Zevenet IPDS WAF

Конфигурация виртуальной службы HTTP

Настроить один выделенный Виртуальный IP-адрес, в нашем примере 192.168.100.58, перейдя на Сеть> Виртуальные интерфейсы> Создать виртуальный интерфейс как показано ниже:

Zevenet Создать VIP

Теперь перейдем к настройке службы балансировки нагрузки HTTP, заходим в LSLB> Фермы а затем нажмите кнопку Создать Ферму и введите данные виртуальной службы, как показано ниже:

Zevenet Создать Хостинг HTTP Ферма

Затем нажмите Создавай.

Теперь нажмите на верхнюю вкладку Услуги и создайте столько услуг, сколько разных веб-сайтов, которыми вы управляете, нажмите кнопку Новый Сервисв нашем случае мы создадим два разных сервиса, один для управления сервисом для www.mycompany1.com и еще один для www.mycompany2.com.

Zevenet Создать Сервис HTTP

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

Настройка служб Zevenet HTTP

Если у вас несколько веб-сайтов, вам нужно только добавить дополнительные службы, чтобы определить одну выделенную службу для управления каждой сетью с одного и того же IP-адреса.

Теперь настройка балансировки нагрузки завершена, теперь можно настроить модуль межсетевого экрана веб-приложения IPDS.

Конфигурация черных списков

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

Черный список Zevenet IPDS1

Этот черный список будет сохранен в пути /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.

Мы включили 2 IP-адреса для тестирования, пожалуйста, подумайте о том, чтобы добавить столько IP-адресов, сколько необходимо. Также уже существующие Черные в IPDS модуль можно использовать.

Zevenet Создать черный список IPDS2

Этот второй черный список будет сохранен в пути /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.

Учтите, что в этот черный список мы включили IP-адрес. 192.168.1.191, этот IP-адрес будет использоваться только для целей тестирования, откуда мы будем запускать HTTP-запросы.

Конфигурация набора правил брандмауэра веб-приложений

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

Мы собираемся настроить набор правил, который представляет собой группу правил с именем Хостинг. Этот набор правил будет состоять из двух простых правил (идентификатор правила 1000 и идентификатор правила 1001 в нашем примере), каждое правило определяется как соответствие и действие, где, если условие совпадает, действие выполняется. В нашем примере мы будем использовать одно и то же действие в обоих правилах, если условие соответствует Отклонить действие выполняется с 403 Доступ запрещен ответ.

Перейдите на IPDS> WAF, затем нажмите на Создать набор правил WAF и задаем описательное имя набора правил, в нашем примере Хостинг.

Настроить поле Фаза по умолчанию в Заголовки запросов получены. Это поле означает, что модуль WAF будет анализировать заголовки входящих запросов от клиента.

Zevenet IPDS Создать набор правил WAF

Затем перейдите на вкладку Правила и создадим первый Правило типа Действие как показано ниже.

Zevenet IPDS Создать набор правил WAF

Теперь первое правило набора правил создано, позволяет создать условия, чтобы IP клиента соответствовал IP в черном списке для каждого Хозяин заголовок. Перейти к условия и создать условие в соответствии с REMOTE_ADDR переменная, как показано ниже.

Соответствие Zevenet IPDS Blacklist

Затем создайте другое условие для Виртуальный хост матч согласно НАЗВАНИЕ СЕРВЕРА переменная следующим образом:

Соответствие Zevenet IPDS SERVER_NAME

На этом этапе первый размещенный веб-сайт www.mycompany1.com управляет IP-адресом черного списка веб-приложения из уже настроенного черного списка, называемого Blacklistmycompany1.txt.

Создадим еще одно правило для второго сайта www.mycompany2.com и повторите ту же конфигурацию, что и предыдущая конфигурация правила, но в этом случае вы должны изменить НАЗВАНИЕ СЕРВЕРА в mycompany2.com и обращайтесь к следующему blacklist2.txt.

См. Полную конфигурацию составного набора правил WAF:

Zevenet IPDS WAF Конфигурация всего набора правил

Наконец, добавьте этот набор правил в уже созданную ферму, перейдите на вкладку Фермы и переместить ферму хостингв нашем примере к Включенные фермы раздел, как показано ниже.

Zevenet IPDS WAF - Назначение фермы

Теперь запустите набор правил WAF для фермы, щелкните действие Play в верхнем левом углу этого окна, и система начнет фильтровать HTTP-трафик для фермы. хостинг.

Тестирование набора правил брандмауэра веб-приложений

Клиентский IP 192.168.1.191 запросит веб-сайт http://www.mycompany1.com и http://www.mycompany2.com и, согласно нашей конфигурации, система WAF позволит подключиться к первому сервису с таким же именем, но в подключении будет отказано mycompany2.com потому что этот IP внесен в черный список с именем Черный список.

С IP-адреса 192.168.1.191 на VIP, запрашивая веб-сайт www.mycompany1.com через балансировщик нагрузки:

root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v
* Rebuilt URL to: http://192.168.100.58/
*   Trying 192.168.100.58...
* TCP_NODELAY set
* Connected to 192.168.100.58 (192.168.100.58) port 80 (#0)
> GET / HTTP/1.1
> Host: www.mycompany1.com
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.10.3
< Date: Tue, 10 Sep 2019 15:36:22 GMT
< Content-Type: text/html
< Content-Length: 11383
< Last-Modified: Thu, 13 Dec 2018 11:01:49 GMT
< Connection: keep-alive
< ETag: "5c123c1d-2c77"
< Accept-Ranges: bytes
< 

С IP-адреса 192.168.1.191 на VIP, запрашивая веб-сайт www.mycompany2.com через балансировщик нагрузки:

root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v
* Rebuilt URL to: http://192.168.100.58/
*   Trying 192.168.100.58...
* TCP_NODELAY set
* Connected to 192.168.100.58 (192.168.100.58) port 80 (#0)
> GET / HTTP/1.1
> Host: www.mycompany2.com
> User-Agent: curl/7.52.1
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 403 Request forbidden
< Content-Type: text/html
< Content-Length: 17
< Expires: now
< Pragma: no-cache
< Cache-control: no-cache,no-store
< 
* Curl_http_done: called premature == 0
* Closing connection 0
replied forbiddenp

Как только появится строка запрещенный ответ генерируется, модуль WAF уведомляет об отклонении в файле системного журнала балансировщика нагрузки.

root@zva6000:# tail -f /var/log/syslog
Sep 10 15:38:44 zva6000 pound: Hosting, ModSecurity: Warning. Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"]
Sep 10 15:38:44 zva6000 pound: Hosting, [WAF,service mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [client 192.168.1.191] ModSecurity: Access denied with code 403 (phase 1). Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"]
Sep 10 15:38:44 zva6ktpl1 pound: Hosting, service mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF denied a request from 192.168.1.191

Теперь вы можете создавать собственные наборы правил брандмауэра для защиты своих веб-приложений с помощью методов глубокой проверки пакетов HTTP / S.

Статьи по теме

https://www.zevenet.com/knowledge-base/enterprise-edition/enterprise-edition-v6-0-administration-guide/v6-0-ipds-waf-update/

Поделись:

Документация в соответствии с условиями GNU Free Documentation License.

Была ли эта статья полезна?

Статьи по теме