Como usar o AWS WAF com o Amazon CloudFront
Esta seção explica como usar o AWS WAF com os atributos do Amazon CloudFront.
Ao criar uma web ACL, você pode especificar uma ou mais distribuições do CloudFront que deseja que o AWS WAF inspecione. O AWS WAF começa a inspecionar e gerenciar solicitações da web para essas distribuições com base nos critérios que você identifica na web ACL. O CloudFront oferece alguns recursos que aprimoram a funcionalidade da AWS WAF. Este capítulo descreve algumas maneiras de configurar o CloudFront para fazer com que o CloudFront e o AWS WAF funcionem melhor em conjunto.
Tópicos
Usando o AWS WAF com páginas de erro personalizadas do CloudFront
Por padrão, quando o AWS WAF bloqueia uma solicitação da web com base nos critérios especificados, ela retorna o código de status HTTP 403 (Forbidden)
ao CloudFront e o CloudFront retorna esse código de status ao visualizador. O visualizador, em seguida, exibirá uma breve mensagem padrão esparsamente formatada, semelhante à seguinte:
Forbidden: You don't have permission to access /myfilename.html on this server.
Você pode substituir esse comportamento em suas regras de web ACL do AWS WAF definindo respostas personalizadas. Para obter mais informações sobre como personalizar o comportamento de resposta usando regras do AWS WAF, consulte Como enviar respostas personalizadas para ações Block.
nota
As respostas que você personaliza usando regras do AWS WAF têm precedência sobre qualquer especificação de resposta definida nas páginas de erro personalizadas do CloudFront.
Se você preferir exibir uma mensagem de erro personalizada através do CloudFront, possivelmente usando a mesma formatação que o restante do seu website, pode configurar o CloudFront para retornar um objeto ao visualizador (por exemplo, um arquivo HTML) que contenha sua mensagem de erro personalizada.
nota
O CloudFront não consegue diferenciar entre um código de status HTTP 403 retornado por sua origem e um retornado pelo AWS WAF quando uma solicitação é bloqueada. Isso significa que você não pode retornar diferentes páginas de erro personalizadas com base em diferentes causas de um código de status HTTP 403.
Para obter mais informações sobre páginas de erro personalizadas do CloudFront, consulte Gerar respostas personalizadas a erros no Guia do desenvolvedor do Amazon CloudFront.
Usar o AWS WAF com o CloudFront para aplicativos em execução no seu próprio servidor HTTP
Ao usar o AWS WAF com o CloudFront, é possível proteger os aplicativos em execução em qualquer servidor da web HTTP, seja um servidor da web que esteja sendo executado no Amazon Elastic Compute Cloud (Amazon EC2) ou um servidor da web gerenciado de forma privada. Também é possível configurar o CloudFront para exigir HTTPS entre o CloudFront e seu próprio servidor web, bem como entre visualizadores e o CloudFront.
Exigir HTTPS entre o CloudFront e seu próprio servidor da web
Para exigir HTTPS entre o CloudFront e seu próprio servidor da web, é possível usar o recurso de origem personalizada do CloudFront e definir as configurações da Política de protocolo da origem e do Nome de domínio de origem para origens específicas. Na configuração do CloudFront é possível especificar o nome de DNS do servidor com a porta e o protocolo que você deseja que o CloudFront use ao obter objetos da origem. Você também deve garantir que o certificado SSL/TLS no servidor da origem personalizada corresponda ao nome de domínio de origem configurado. Ao usar seu próprio servidor da web HTTP fora da AWS, é necessário usar um certificado assinado por uma autoridade de certificação (CA) externa confiável, por exemplo, Comodo, DigiCert ou Symantec. For obter informações sobre exigir HTTPS para comunicação entre o CloudFront e seu próprio servidor da web, consulte o tópico Exigindo HTTPS para comunicação entre CloudFront e sua origem personalizada no Guia do Desenvolvedor do Amazon CloudFront.
Exigir HTTPS entre um visualizador e o CloudFront
Para exigir HTTPS entre visualizadores e o CloudFront, é possível alterar a Política de protocolo do visualizador para um ou mais comportamentos de cache na distribuição do CloudFront. Para obter mais informações sobre como usar HTTPS entre visualizadores e o CloudFront, consulte o tópico Exigir HTTPS para a comunicação entre visualizadores e o CloudFront no Guia do desenvolvedor do Amazon CloudFront. Também é possível trazer seu próprio certificado SSL para que os visualizadores possam se conectar à distribuição do CloudFront por HTTPS usando seu próprio nome de domínio, por exemplo https://www.mysite.com. Para obter mais informações, consulte Configuração de nomes de domínio alternativos e HTTPS no Guia do desenvolvedor do Amazon CloudFront.
Escolher os métodos HTTP aos quais o CloudFront responde
Quando você cria uma distribuição da web do Amazon CloudFront, seleciona os métodos HTTP que deseja que o CloudFront processe e encaminhe para sua origem. Você pode escolher entre as seguintes opções:
GET
,HEAD
: é possível usar o CloudFront somente para obter objetos da sua origem ou para obter cabeçalhos do objeto.GET
,HEAD
,OPTIONS
: você pode usar o CloudFront apenas para obter objetos da sua origem, obter cabeçalhos de objeto ou recuperar uma lista das opções para as quais seu servidor de origem oferece suporte.GET
,HEAD
,OPTIONS
,PUT
,POST
,PATCH
,DELETE
: você pode usar o CloudFront para obter, adicionar, atualizar e excluir objetos, e também para obter os cabeçalhos de objeto. Além disso, você pode executar outras operações dePOST
, como enviar dados de um formulário da web.
Você também pode usar instruções de regra de correspondência de bytes do AWS WAF para permitir ou bloquear solicitações com base no método HTTP, conforme descrito em Instrução de regra de correspondência de string. Se você quiser usar uma combinação de métodos compatíveis com o CloudFront, como GET
e HEAD
, não precisa configurar o AWS WAF para bloquear solicitações que usam os outros métodos. Se você deseja permitir uma combinação de métodos com os quais o CloudFront não é compatível, como GET
, HEAD
e POST
, você pode configurar o CloudFront para responder a todos os métodos e, em seguida, usar o AWS WAF para bloquear solicitações que usam outros métodos.
Para obter mais informações sobre a escolha de métodos aos quais o CloudFront responde, consulte Métodos HTTP permitidos no tópico Valores que você especifica ao criar ou atualizar uma distribuição da web no Guia do desenvolvedor do Amazon CloudFront.