Conteúdo
Visão geral
O artigo a seguir descreve um caso de uso real para um ISP ou provedor de hospedagem, em que o proxy reverso do HTTP / S Load Balancer é o principal ponto de acesso a todos os serviços públicos da Web, essa configuração mostra como é fácil configurar um WAF avançado e poderoso conjunto de regras para proteger aplicativos da Web baseados em endereços IP de origem da lista negra, onde cada VirtualHost gerencia sua própria lista negra de maneira que um IP público possa ser proibido de se conectar a um domínio da web como www.company1.com mas com permissão para se conectar a www.company2.com.
Vamos focar o artigo em duas seções; na seção principal, a configuração do perfil HTTPS funcionará como um proxy reverso com uma lista de serviços diferentes, e a segunda seção explicará como configurar um Firewall de Aplicação Web conjunto de regras que gerenciará uma lista negra diferente por serviço HTTP / S.
Meio Ambiente
O diagrama a seguir descreve os componentes internos do Zevenet WAF. Como é mostrado, a primeira camada é o módulo WAF cujo objetivo é garantir desde o início que apenas solicitações seguras sejam transferidas para o módulo de balanceamento de carga e depois encaminhar a solicitação para os back-ends.
Em primeiro lugar, o HTTP Proprietário O cabeçalho é avaliado e o IP do cliente é verificado na lista negra já configurada. Se o Proprietário cabeçalho e o endereço IP do cliente corresponder, a conexão será interrompida e um Proibida 403 A resposta HTTP é enviada ao cliente, mas no caso em que o IP do cliente e solicitado Proprietário cabeçalho não corresponde, o tráfego é identificado como não malicioso e passado para o módulo do balanceador de carga, onde o destino é escolhido com base na solicitação HTTP Proprietário cabeçalho e finalmente encaminhado para o servidor back-end disponível.
Aqui você pode encontrar um esquema dos internos do Web Application Firewall para o exemplo fornecido.
Configuração de serviço virtual HTTP
Configure um dedicado Endereço IP virtual, no nosso exemplo 192.168.100.58, navegando até Rede> Interfaces virtuais> Criar interface virtual como mostrado abaixo:
Agora vamos configurar o serviço de balanceamento de carga HTTP, vá para LSLB> Fazendas e depois clique no botão Criar fazenda e insira os detalhes do serviço virtual conforme mostrado abaixo:
Então aperte Crie.
Agora clique na aba superior Serviços e crie tantos serviços quanto sites diferentes que você gerencia, clique no botão Novo serviço, no nosso caso, criaremos dois serviços diferentes, um para gerenciar o serviço para www.mycompany1.com e outro para www.mycompany2.com.
Depois que o serviço for criado, adicione o Host Virtual filtro e back-end, como é mostrado na imagem abaixo.
Caso você tenha vários sites, é necessário adicionar mais serviços para definir um serviço dedicado para gerenciar cada web a partir do mesmo endereço IP.
Agora que a configuração do balanceamento de carga foi concluída, vamos configurar o módulo IPDS Web Application Firewall.
Configuração de listas negras
Vamos criar uma lista negra por serviço da web para inserir em cada lista negra os endereços IP desejados para bloquear o acesso. Em nosso exemplo, criaremos duas listas negras diferentes com o nome blacklistmycompany1 e blacklistmycompany2, um por serviço, respectivamente.
Essa lista negra será salva no caminho /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
Incluímos os endereços IP 2 para fins de teste; considere adicionar quantos IPs forem necessários. Além disso, o já existente As listas negras no IPDS módulo pode ser usado.
Essa segunda lista negra será salva no caminho /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
Leve em consideração que nesta lista negra incluímos o endereço IP 192.168.1.191, esse IP será usado apenas para fins de teste, de onde executaremos solicitações HTTP.
Configuração do conjunto de regras do Web Application Firewall
O objetivo desta configuração é manter diferentes listas negras de IP por site, para evitar manter a mesma lista negra para todo o ponto de acesso do farm.
Nós vamos configurar um conjunto de regras, que é um grupo de regras, com nome Hospedagem de sites. Esse conjunto de regras será composto por duas regras simples (ID da regra 1000 e ID da regra 1001 em nosso exemplo), cada regra é definida como uma correspondência e uma ação, onde, se a condição corresponder, a ação será executada. Em nosso exemplo, usaremos a mesma ação em ambas as regras, se a condição corresponder a Rejeitar ação é executado com um Acesso negado do 403 resposta.
Acesse IPDS> WAF, então clique em Criar conjunto de regras WAF e defina um nome descritivo do conjunto de regras, em nosso exemplo Hospedagem de sites.
Configure o campo Fase padrão para Cabeçalhos de solicitação são recebidos. Este campo significa que o módulo WAF analisará os cabeçalhos de solicitação recebidos do cliente.
Então vá para a aba Regras e crie o primeiro Regra do tipo Açao Social como é mostrado abaixo.
Agora, a primeira regra do conjunto de regras é criada, permite criar as condições para corresponder ao IP do cliente na lista negra de cada Proprietário cabeçalho. Vamos para Condições e crie uma condição de acordo com o REMOTE_ADDR variável conforme mostrado abaixo.
Em seguida, crie outra condição para o Host Virtual combinar de acordo com SERVER_NAME variável da seguinte maneira:
Neste ponto, o primeiro site hospedado www.mycompany1.com gerencia um endereço IP da lista negra de aplicativos da web a partir da lista negra já configurada, referida Blacklistmycompany1.txt.
Vamos criar outra regra para o segundo site www.mycompany2.com e repita a mesma configuração da configuração de regra anterior, mas nesse caso, você deve alterar o SERVER_NAME para mycompany2.com e consulte o seguinte blacklist2.txt.
Veja toda a configuração do conjunto de regras WAF composto:
Por fim, adicione este conjunto de regras ao farm já criado, vá para a guia Fazendas e mudar a fazenda Hosting, em nosso exemplo, para o Farms ativados seção como é mostrado abaixo.
Agora inicie o conjunto de regras WAF do farm, clique na ação Jogar na seção superior esquerda desta janela, e o sistema começará a filtrar o tráfego HTTP para o Farm Hosting.
Testando o conjunto de regras do Firewall de Aplicativos Web
O IP do cliente 192.168.1.191 solicitará o site http://www.mycompany1.com e http://www.mycompany2.com e, de acordo com nossa configuração, o sistema WAF permitirá a conexão com o primeiro serviço com o mesmo nome, mas a conexão será negada mycompany2.com porque esse IP foi incluído na lista negra com nome Lista negra da minha empresa2.
Do endereço IP 192.168.1.191 ao VIP, solicitando o site www.mycompany1.com através do balanceador de carga:
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 <
Do endereço IP 192.168.1.191 ao VIP, solicitando o site www.mycompany2.com através do balanceador de carga:
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
Uma vez que o proibido Como a resposta é gerada, o módulo WAF notifica a rejeição no arquivo Syslog do balanceador de carga.
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
Agora você pode criar seus conjuntos de regras de firewall personalizados para proteger seus aplicativos da Web usando técnicas de inspeção profunda de pacotes HTTP / S.