Anunciando o NGINX Plus R22

NGINX | 09 de junho de 2020

Temos o prazer de anunciar que o NGINX Plus Release 22 (R22) já está disponível. Baseado no NGINX Open Source, o NGINX Plus é a única solução de software completa que reúne balanceador de carga, cache de conteúdo, servidor web e gateway de API. O foco principal desta versão é o monitoramento e a autenticação, proporcionando maior granularidade e resiliência às suas aplicações em escala.

Os novos recursos do NGINX Plus R22 incluem:

Mudanças importantes de comportamento

Novos recursos em detalhes

Validação OCSP de certificados de cliente

O NGINX Plus oferece suporte a TLS mútuo, que usa certificados de cliente tanto para verificar a identidade do cliente que está se conectando quanto para estabelecer uma conexão criptografada. O TLS mútuo oferece um alto nível de garantia quanto à identidade do cliente, mas o gerenciamento de certificados revogados pode representar uma sobrecarga administrativa. O Protocolo de Status de Certificado Online (OCSP) resolve esse problema verificando o status dos certificados de cliente à medida que são apresentados.

Você pode configurar o NGINX Plus para usar o OCSP a fim de verificar a validade dos certificados de cliente X.509, conforme definido pela RFC 6960.

Para habilitar a validação OCSP de certificados de cliente SSL, inclua a nova diretiva ssl_ocsp junto com a diretiva ssl_verify_client, que habilita a verificação de certificados.

Carregando exemplo de código…

O NGINX Plus envia a solicitação OCSP para o URI de OCSP incorporado ao certificado do cliente, a menos que você defina outro URI com a diretiva ssl_ocsp_responder.

Para armazenar em cache as respostas OCSP em uma única zona de memória compartilhada por todos os processos de trabalho, inclua a diretiva ssl_ocsp_cache para definir o nome e o tamanho da zona. As respostas são armazenadas em cache por 1 hora, a menos que o valor nextUpdate na resposta OCSP especifique um período diferente.

O resultado da validação do certificado do cliente está disponível na variável $ssl_client_verify, incluindo o motivo da falha de OCSP.

O handshake TLS falha se o certificado do cliente não for confiável ou se a resposta OCSP não for válida. O código de status 495 (SSL Certificate Error) é retornado, e uma entrada é criada no log de erros com o nível de severidade error:

YYYY/MM/DD hh:mm:ss [error] 31222#0: *5 certificate status "revoked" in the OCSP response while requesting certificate status, responder: 127.0.0.1

Aprimoramentos do OpenID Connect

Nossa implementação de referência do OpenID Connect para o NGINX Plus estende o SSO a aplicações novas e existentes, minimizando a complexidade e os custos. A implementação de referência usa uma combinação de recursos do NGINX Plus e do módulo JavaScript do NGINX (njs) para realizar uma troca de código com o endpoint de autorização e receber um token de ID do IdP. Os próprios tokens de ID são armazenados em cache no armazenamento de chave-valor do NGINX Plus, e um token de sessão opaco é enviado ao cliente. Em seguida, os clientes se autenticam apresentando um token de sessão válido, que o NGINX Plus usa para verificar o token de ID antes de permitir o acesso às aplicações de backend.

Esta versão traz diversas melhorias para a implementação de referência do OIDC, além de duas mudanças significativas:

  1. A configuração agora oferece suporte a vários IdPs, passando variáveis de entrada apropriadas das solicitações recebidas para vários blocos map. Essa flexibilidade adicional reduz a necessidade de modificar o código da implementação de referência do OIDC.
  2. O código JavaScript agora é implementado como um módulo, permitindo que ele coexista com outras soluções njs no mesmo host sem a necessidade de gerenciar todo o código njs em um único arquivo.

Veja um exemplo de configuração:

Carregando exemplo de código…

Cada bloco map permite vários valores, possibilitando o uso de vários IdPs e parâmetros de autenticação (segredo do cliente, arquivo de chave JWK, endpoints de autorização). Aqui, usamos a variável $host como parâmetro de entrada, mas você pode especificar qualquer variável derivada do cabeçalho da solicitação.

A API do NGINX Plus agora rastreia atividades relacionadas a logins do OpenID Connect, auxiliando no monitoramento e na solução de problemas. Consulte o repositório do GitHub para obter mais informações sobre a implementação de referência do OpenID Connect.

Gráficos do painel em tempo real para limitação de taxa e de conexões

Ataques de DDoS e de adivinhação de senhas por força bruta são duas ameaças críticas às suas aplicações. Você pode mitigar seus efeitos com a limitação de taxa, fazendo com que o NGINX Plus limite o número de solicitações que cada cliente pode fazer em um determinado período.

NGINX Plus R20 adicionou o monitoramento em tempo real da taxa de solicitações e da limitação de conexões à API do NGINX Plus (nos endpoints /api/version/http/limit_reqs e /api/version/http/limit_conns). Agora, as informações aparecem no painel de monitoramento de atividades em tempo real do NGINX Plus, com contagens cumulativas em formato de tabela e contagens com registro de data e hora em formato de gráfico:

  • As métricas de limitação da taxa de solicitações aparecem na tabela Limit Req da guia HTTP Zones tab
  • As métricas de limitação de conexões aparecem na tabela Limit Conn table on the TCP/UDP Zones tab

A tabela inclui uma linha para cada zona definida por uma diretiva limit_req_zone e limit_conn_zone. Para exibir o gráfico, clique no ícone de gráfico na extremidade esquerda da linha.

O gráfico expandido é atualizado continuamente e mostra os valores de cada intervalo de tempo como um gráfico de áreas empilhadas. Você pode personalizar as informações exibidas das seguintes maneiras:

  • Escolha o intervalo de tempo a ser exibido: 1 minuto, 5 minutos ou 15 minutos
  • Passe o cursor sobre o gráfico para exibir as contagens exatas de um determinado momento
  • Passe o cursor sobre um tipo de estatística na área da legenda para destacar essa estatística no gráfico
  • Clique em um tipo de estatística na área da legenda para alternar entre exibi-lo e ocultá-lo
  • Arraste o gráfico para a esquerda e para a direita para visualizar os dados históricos

No intervalo padrão de atualização do painel de 1 segundo, cada gráfico armazena cerca de 30 minutos de dados históricos. Aumentar o intervalo de atualização do painel (atualizar com menos frequência) aumenta a quantidade de dados históricos disponíveis. Observe que os gráficos do painel não são persistentes, e os dados históricos são perdidos quando você sai da guia ou a recarrega.

Aprimoramentos no módulo JavaScript do NGINX

O módulo JavaScript do NGINX amplia a funcionalidade do NGINX Plus para viabilizar uma ampla variedade de casos de uso, incluindo maior controle sobre o tráfego, a consolidação de funções JavaScript entre aplicações e a proteção contra ameaças à segurança. O módulo JavaScript do NGINX foi atualizado para a versão 0.4.1 e inclui estes recursos:

  • A nova diretiva js_import para importar vários arquivos de módulo que implementam manipuladores de localização e de variáveis
  • Suporte aprimorado a cabeçalhos, incluindo novos objetos de cabeçalho brutos
  • Você pode usar arquivos de definição do TypeScript no seu código njs
  • Suporte à conversão de valores externos em objetos JavaScript nativos

O código e a configuração a seguir ilustram como o novo objeto r.rawHeadersIn pode ser usado para registrar o conjunto exato de cabeçalhos enviados pelo cliente sempre que ocorrer um erro. [Editor – Este é apenas um dos muitos casos de uso do módulo JavaScript do NGINX. Para ver a lista completa, consulte Casos de uso do módulo JavaScript do NGINX.]

Carregando exemplo de código…

Carregando exemplo de código…

Veja um exemplo de entrada de log para uma resposta 404:

$ curl http://localhost/bogus
$ tail --lines=1 /var/log/nginx/access_json.log
{"response":{"timestamp":"YYYY-MM-DDThh:mm:ss+TZ_offset","status":404},"request":{"client":"127.0.0.1","uri":"/bogus","headers":[["Host","localhost:80"],["User-Agent","curl/7.64.1"],["Accept","*/*"]]}}

Atraso em caso de falha na autenticação

Para mitigar ataques de temporização como ataques de força bruta contra senhas e preenchimento de credenciais, você pode configurar o NGINX Plus para atrasar sua resposta quando a autenticação falhar. A nova diretiva auth_delay especifica o atraso, que pode ser aplicado a solicitações de autenticação processadas pelos módulos Auth Basic, Auth JWT e Auth Request.

Atualize ou experimente o NGINX Plus

Se você estiver usando o NGINX Plus, recomendamos enfaticamente que faça a atualização para o NGINX Plus R22 o mais rápido possível. Você também terá acesso a várias correções e melhorias adicionais, além de facilitar o suporte da NGINX quando precisar abrir um chamado.

Se você ainda não experimentou o NGINX Plus, recomendamos que faça um teste – seja para segurança, balanceamento de carga e gateway de API, seja como um servidor web com suporte completo e APIs avançadas de monitoramento e gerenciamento. Você pode começar hoje mesmo com uma avaliação gratuita de 30 dias. Veja por si mesmo como o NGINX Plus pode ajudar você a disponibilizar e escalar suas aplicações.


Compartilhar

Sobre o autor

Liam Crilly
Liam CrillyDiretor Sênior de Gestão de Produtos

Mais publicações de Liam Crilly

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.