Содержание
Обзор
В следующей статье описывается реальный вариант использования 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-запроса. Хозяин заголовок и, наконец, перенаправляется на доступный внутренний сервер.
Здесь вы можете найти схему внутреннего устройства брандмауэра веб-приложений для данного примера.
Конфигурация виртуальной службы HTTP
Настроить один выделенный Виртуальный IP-адрес, в нашем примере 192.168.100.58, перейдя на Сеть> Виртуальные интерфейсы> Создать виртуальный интерфейс как показано ниже:
Теперь перейдем к настройке службы балансировки нагрузки HTTP, заходим в LSLB> Фермы а затем нажмите кнопку Создать Ферму и введите данные виртуальной службы, как показано ниже:
Затем нажмите Создавай.
Теперь нажмите на верхнюю вкладку Услуги и создайте столько услуг, сколько разных веб-сайтов, которыми вы управляете, нажмите кнопку Новый Сервисв нашем случае мы создадим два разных сервиса, один для управления сервисом для www.mycompany1.com и еще один для www.mycompany2.com.
После создания службы добавьте Виртуальный хост фильтр и серверные части, как показано на изображении ниже.
Если у вас несколько веб-сайтов, вам нужно только добавить дополнительные службы, чтобы определить одну выделенную службу для управления каждой сетью с одного и того же IP-адреса.
Теперь настройка балансировки нагрузки завершена, теперь можно настроить модуль межсетевого экрана веб-приложения IPDS.
Конфигурация черных списков
Мы собираемся создать один черный список для каждой веб-службы, чтобы вводить в каждый черный список желаемые IP-адреса для блокировки доступа. В нашем примере мы создадим два разных черных списка с именем черный список и черный список, по одному на услугу соответственно.
Этот черный список будет сохранен в пути /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
Мы включили 2 IP-адреса для тестирования, пожалуйста, подумайте о том, чтобы добавить столько IP-адресов, сколько необходимо. Также уже существующие Черные в IPDS модуль можно использовать.
Этот второй черный список будет сохранен в пути /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
Учтите, что в этот черный список мы включили IP-адрес. 192.168.1.191, этот IP-адрес будет использоваться только для целей тестирования, откуда мы будем запускать HTTP-запросы.
Конфигурация набора правил брандмауэра веб-приложений
Цель этой конфигурации - поддерживать разные черные списки IP-адресов для каждого веб-сайта, чтобы избежать сохранения одного и того же черного списка для всей точки доступа фермы.
Мы собираемся настроить набор правил, который представляет собой группу правил с именем Хостинг. Этот набор правил будет состоять из двух простых правил (идентификатор правила 1000 и идентификатор правила 1001 в нашем примере), каждое правило определяется как соответствие и действие, где, если условие совпадает, действие выполняется. В нашем примере мы будем использовать одно и то же действие в обоих правилах, если условие соответствует Отклонить действие выполняется с 403 Доступ запрещен ответ.
Перейдите на IPDS> WAF, затем нажмите на Создать набор правил WAF и задаем описательное имя набора правил, в нашем примере Хостинг.
Настроить поле Фаза по умолчанию в Заголовки запросов получены. Это поле означает, что модуль WAF будет анализировать заголовки входящих запросов от клиента.
Затем перейдите на вкладку Правила и создадим первый Правило типа Действие как показано ниже.
Теперь первое правило набора правил создано, позволяет создать условия, чтобы IP клиента соответствовал IP в черном списке для каждого Хозяин заголовок. Перейти к условия и создать условие в соответствии с REMOTE_ADDR переменная, как показано ниже.
Затем создайте другое условие для Виртуальный хост матч согласно НАЗВАНИЕ СЕРВЕРА переменная следующим образом:
На этом этапе первый размещенный веб-сайт www.mycompany1.com управляет IP-адресом черного списка веб-приложения из уже настроенного черного списка, называемого Blacklistmycompany1.txt.
Создадим еще одно правило для второго сайта www.mycompany2.com и повторите ту же конфигурацию, что и предыдущая конфигурация правила, но в этом случае вы должны изменить НАЗВАНИЕ СЕРВЕРА в mycompany2.com и обращайтесь к следующему blacklist2.txt.
См. Полную конфигурацию составного набора правил 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.