Visão geral da ALG
Um gateway de camada de aplicativo (ALG) permite que o gateway analise cargas da camada de aplicativos e tome decisões, permitindo ou negando tráfego ao servidor do aplicativo. Os ALGs oferecem suporte a aplicativos como o Protocolo de Transferência (FTP) e vários protocolos IP que usam a carga útil da camada de aplicativo para comunicar o protocolo de controle de transmissão dinâmico (TCP) ou as portas do Protocolo de Datagram do Usuário (UDP) nas quais os aplicativos abrem conexões de dados.
Visão geral da ALG
Um gateway de camada de aplicativo (ALG) é um componente de software projetado para gerenciar protocolos específicos, como o Session Initiation Protocol (SIP) ou o FTP em dispositivos juniper networks que executam o Junos OS. O módulo ALG é responsável pelo processamento de pacotes conscientes da camada de aplicativos nos switches.
A funcionalidade ALG pode ser acionada por um serviço ou aplicativo configurado na política de segurança:
Um serviço é um objeto que identifica um protocolo de aplicativo usando informações de Camada 4 (como números de porta TCP e UDP aceitos) para um serviço de aplicativo (como Telnet, FTP e SMTP).
Um aplicativo especifica o aplicativo de Camada 7 que mapeia para um serviço de Camada 4.
Um serviço predefinido já tem um mapeamento para um aplicativo de Camada 7. No entanto, para serviços personalizados, você deve vincular o serviço a um aplicativo explicitamente, especialmente se quiser que a política aplique um ALG.
As ALGs para pacotes destinados a portas conhecidas são acionadas por tipo de serviço. O ALG intercepta e analisa o tráfego especificado, aloca recursos e define políticas dinâmicas para permitir que o tráfego passe com segurança pelo dispositivo:
Quando um pacote chega ao dispositivo, o módulo de fluxo encaminha o pacote de acordo com a regra de segurança estabelecida na política.
Se for encontrada uma política para permitir o pacote, o tipo de serviço associado ou tipo de aplicativo é atribuído e uma sessão é criada para esse tipo de tráfego.
Se uma sessão for encontrada para o pacote, não é necessário combinar regras de política. O módulo ALG é acionado se esse tipo de serviço ou aplicativo em particular exigir o processamento alg suportado.
O ALG também inspeciona o pacote para obter informações de endereço IP incorporado e porta no payload de pacotes, e realiza o processamento da tradução de endereços de rede (NAT), se necessário. Um buffer de mensagem é alocado apenas quando o pacote estiver pronto para processar. O buffer é liberado após o pacote concluir o tratamento alg, incluindo modificar a carga útil, realizar NAT, abrir um pinhole para uma nova conexão entre um cliente e um servidor, e transferir dados entre um cliente e um servidor localizados em lados opostos de um dispositivo Juniper Networks
O tamanho máximo da jbuf é de 9 Kb. Se o tamanho do buffer de mensagem for superior a 9 Kb, toda a mensagem não poderá ser transferida para o manipulador de pacotes ALG. Isso faz com que os pacotes subseqüentes na sessão contornem o tratamento da ALG, resultando em uma falha de transação. A otimização do buffer de mensagens ALG é aprimorada para reduzir o alto consumo de memória.
O ALG também abre uma porta para o endereço IP e o número da porta para permitir a troca de dados para as sessões de controle e dados. A sessão de controle e a sessão de dados podem ser acopladas para ter o mesmo valor de intervalo, ou podem ser independentes.
As ALGs são suportadas em clusters de chassi.
Veja também
Entender serviços ALG personalizados
Por padrão, os ALGs estão vinculados a serviços predefinidos. Por exemplo, o FTP ALG está vinculado ao junos-ftp, o RTSP ALG está vinculado ao junos-rtsp, e assim por diante.
Um serviço predefinido já tem um mapeamento para um aplicativo de Camada 7. No entanto, para serviços personalizados, você deve vincular o serviço a um aplicativo explicitamente, especialmente se quiser que a política aplique um ALG.
Quando você aplica serviços predefinidos à sua política, o tráfego correspondente ao serviço será enviado à SUA ALG correspondente para processamento adicional. No entanto, em algumas circunstâncias, você pode precisar definir serviços personalizados para alcançar o seguinte:
Utilize o manipulador ALG para processar tráfego especial, com protocolos especificados pelo cliente, portas de destino e assim por diante.
Permita o tráfego, mas contorne o processamento alg, quando o tráfego corresponde a serviços predefinidos que se ligam ao ALG.
Adicione mais aplicativos ao conjunto de aplicativos da ALG atual.
O exemplo a seguir exige que você navegue por vários níveis na hierarquia de configuração. Para obter instruções sobre como fazer isso, consulte o uso do editor de CLI no modo de configuração no guia de usuário da CLI.
Os três usos de serviços personalizados são ilustrados abaixo, considerando o MS-RPC ALG como um exemplo:
Utilize the ALG handler to process special traffic:
[edit] user@host# set applications application customer-msrpc application-protocol ms-rpc user@host# set applications application customer-msrpc protocol tcp user@host# set applications application customer-msrpc destination-port 6000
O tráfego com a porta de destino TCP 6000 será enviado ao MS-RPC ALG para processamento adicional.
Permit traffic but bypass ALG processing:
[edit] user@host# set applications application customer-ignore application-protocol ignore user@host# set applications application customer-ignore protocol tcp user@host# set applications application customer-ignore destination-port 135
Todos os ALGs serão ignorados pelo tráfego com a porta de destino TCP 135.
Add more applications to an ALG’s application set— Adicionar aplicativos como ms-RPC ou serviços Sun RPC, que não estão predefinidos nos dispositivos:
[edit] user@host# set applications application customer-msrpc application-protocol ms-rpc user@host# set applications application customer-msrpc term t1 protocol tcp user@host# set applications application customer-msrpc term t1 uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2
O tráfego de dados MS-RPC com TCP, uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2, será permitido, quando o custom-msrpc for aplicado à política juntamente com outros aplicativos junos-ms-rpc** predefinidos.
Veja também
Entender o IPv6 DNS ALG para roteamento, NAT e NAT-PT
O Domain Name System (DNS) é a parte do ALG que lida com o tráfego DNS, monitora a consulta de DNS e os pacotes de resposta e fecha a sessão se a bandeira DNS indicar que o pacote é uma mensagem de resposta.
O DNS ALG oferece suporte ao IPv4 no modo de rota para o Junos OS Release 10.0 e versões anteriores. No Junos OS Release 10.4, esse recurso implementa o suporte IPv6 no DNS ALG para roteamento, tradução de endereços de rede (NAT) e tradução de protocolo de tradução de endereços de rede (NAT-PT).
Quando o DNS ALG recebe uma consulta de DNS do cliente DNS, uma verificação de segurança é feita no pacote DNS. Quando o DNS ALG recebe uma resposta de DNS do servidor DNS, uma verificação de segurança semelhante é feita e, em seguida, a sessão para o tráfego DNS fecha.
Tráfego DE ALG IPv6 DNS no modo NAT
O IPv6 NAT fornece tradução de endereço entre dispositivos de rede endereçados IPv4 e IPv6. Ele também fornece tradução de endereços entre hosts IPv6. O NAT entre hosts IPv6 é feito de maneira semelhante e para fins semelhantes aos do IPv4 NAT.
Quando o tráfego DNS funciona no modo NAT, o DNS ALG traduz o endereço público em uma resposta de DNS a um endereço privado quando o cliente DNS está em rede privada, e também traduz um endereço privado para um endereço público quando o cliente DNS está em uma rede pública.
No Junos OS Release 10.4 IPv6 NAT oferece suporte:
Traduções de NAT de origem
Mapeamentos de NAT de destino
Mapeamentos de NAT estáticos
O IPv6 DNS ALG NAT oferece suporte apenas ao mapeamento NAT estático.
Tráfego DE ALG IPv6 DNS no modo NAT-PT
O IPv6 NAT-PT fornece alocação de endereços e tradução de protocolo entre dispositivos de rede endereçados IPv4 e IPv6. O processo de tradução baseia-se no método stateless IP/ICMP Translation (SIIT) ; no entanto, o estado e o contexto de cada comunicação são retidos durante a vida útil da sessão. O IPv6 NAT-PT oferece suporte a pacotes de Protocolo de Mensagem de Controle de Internet (ICMP), Protocolo de Controle de Transmissão (TCP) e Protocolo de Datagram do Usuário (UDP).
O IPv6 NAT-PT oferece suporte aos seguintes tipos de NAT-PT:
NAT-PT tradicional
NAT-PT bidirecional
Um mecanismo baseado em DNS mapeia dinamicamente endereços IPv6 para servidores somente IPv4. O NAT-PT usa o DNS ALG para fazer as traduções de maneira transparente.
Por exemplo, uma empresa que usa uma rede IPv6 interna precisa ser capaz de se comunicar com servidores IPv4 externos que não têm endereços IPv6.
Para dar suporte à vinculação de endereço dinâmico, uma DNS deve ser usada para resolução de nomes. O host IPv4 analisa o nome do nó IPv6 em seu servidor DNS IPv4 configurado local, que depois passa a consulta para o servidor IPv6 DNS através do dispositivo usando NAT-PT.
Quando o tráfego DNS funciona no modo NAT-PT, o DNS ALG traduz o endereço IP em um pacote de resposta DNS entre o endereço IPv4 e o endereço IPv6 quando o cliente DNS está em uma rede IPv6 e o servidor está em uma rede IPv4, e vice-versa.
No modo NAT-PT, apenas a tradução de endereços IPV4 a IPV6 é suportada no DNS ALG. Para dar suporte ao modo NAT-PT em um DNS ALG, o módulo NAT deve oferecer suporte a NAT-PT.
Quando o DNS ALG recebe uma consulta de DNS do cliente DNS, o DNS ALG realiza as seguintes verificações de segurança e sanidade nos pacotes DNS:
Aplica o comprimento máximo da mensagem DNS (o padrão é de 512 bytes e o comprimento máximo é de 8KB)
Aplica um comprimento de nome de domínio de 255 bytes e um comprimento de rótulo de 63 bytes
Verifica a integridade do nome de domínio indicado pelo ponteiro se os ponteiros de compressão forem encontrados na mensagem de DNS
Verifica se existe um loop de ponteiro de compressão
Verificações de sanidade semelhantes são feitas quando o DNS ALG recebe uma resposta de DNS do servidor DNS, após a qual a sessão para este tráfego DNS é encerrada.
Veja também
Entender o suporte do IPv6 no FTP ALG
O protocolo de transferência de arquivos (FTP) é a parte do ALG que lida com o tráfego FTP. As solicitações de PORTA/PASV e as respostas correspondentes de 200/227 no FTP são usadas para anunciar a porta TCP, que o host ouve para a conexão de dados FTP.
Os comandos EPRT/EPSV/229 são usados para essas solicitações e respostas. O FTP ALG já oferece suporte a EPRT/EPSV/229, mas apenas para endereços IPv4.
No Junos OS Release 10.4, os comandos EPRT/EPSV/229 foram atualizados para oferecer suporte a endereços IPv4 e IPv6.
O FTP ALG usa objcache pré-alocado para armazenar seus cookies de sessão. Quando ambos os endereços IPv4 e IPv6 são suportados no FTP ALG, a estrutura de cookies de sessão aumentará em 256 bits (32 bytes) para armazenar endereço IPv6.
Suporte FTP ALG para IPv6
O FTP ALG monitora comandos e respostas no canal de controle FTP para correção síntática e abre pinholes correspondentes para permitir que conexões de canal de dados sejam estabelecidas. No Junos OS Release 10.4, o FTP ALG suportava roteamento IPv4, roteamento IPv6 e apenas modo NAT. No Junos OS Release 11.2 e versões posteriores, o FTP ALG também oferece suporte aos modos IPv6 NAT e NAT-PT.
Modo EPRT
O comando EPRT permite a especificação de um endereço estendido para a conexão de dados. O endereço estendido deve consistir no protocolo de rede, bem como na rede e endereços de transporte.
O formato da EPRT é:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
<net-prt>: Um número familiar de endereço definido pela IANA
<net-addr>: uma seqüência específica de protocolo do endereço da rede
<tcp-port>: um número de porta TCP
Os seguintes são comandos EPRT amostrais para IPv6:
EPRT |2|1080:8:800:200C:417A|5282|
Nesse modo, o FTP ALG se concentra apenas no comando EPRT; extrai o endereço e a porta IPv6 do comando EPRT e abre o pinhole.
Modo EPSV
O comando EPSV solicita que um servidor esteja ouvindo uma porta de dados e esperando por uma conexão. A resposta a este comando inclui apenas o número de porta TCP da conexão de escuta.
Segue-se uma sequência de resposta por exemplo:
Entering Extended Passive Mode (|||6446|)
O código de resposta para entrar no modo passivo usando um endereço estendido deve ser 229. Você deve extrair a porta TCP em 229 cargas e usá-la para abrir o pinhole.
Veja também
Entender o suporte ao modo TAP para ALG
O modo ponto de acesso de terminal (TAP) é um dispositivo de espera, que verifica o tráfego espelhado através do switch. O modo TAP não depende do status habilitado ou desativado do ALG. A configuração ALG permanece a mesma do modo não-TAP.
Quando você configura um dispositivo da Série SRX para operar no modo TAP, o dispositivo gera informações de log de segurança para exibir as informações sobre ameaças detectadas, uso de aplicativos e detalhes do usuário. Quando o dispositivo está configurado para operar no modo TAP, o dispositivo recebe pacotes apenas da interface TAP configurada. Exceto a interface TAP configurada, outras interfaces são configuradas para uma interface normal que é usada como interface de gerenciamento ou conectada ao servidor externo. O dispositivo da Série SRX gerará relatório ou registro de segurança de acordo com o tráfego de entrada.
A ALG oferece suporte ao aplicativo, como o NAT de carga, e permite dinamicamente o tráfego de dados.
Você pode configurar apenas uma interface TAP quando operar o dispositivo no modo TAP.
Habilitação e desativação de ALG no modo TAP
Este tópico mostra como habilitar ou desativar o status alg no modo TAP.
Antes de começar:
Leia o suporte do modo TAP para ALG para entender sobre o suporte ao ALG para o modo TAP.
O status alg padrão para dispositivos SRX300, SRX320, SRX340, SRX345, SRX380 e SRX550M é o seguinte:
ALG Status: DNS : Enabled FTP : Enabled H323 : Enabled MGCP : Enabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Enabled SCCP : Enabled SIP : Enabled SQL : Disabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled TWAMP : Disabled
O status ALG padrão do dispositivo SRX4100 é o seguinte:
ALG Status: DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Disabled SQL : Disabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled TWAMP : Disabled
Para habilitar o ALG desativado por padrão, use o seguinte comando.
[edit] user@host# set security alg alg-name
Para alterar de volta o ALG habilitado para o status padrão, use o seguinte comando.
[edit] user@host# delete security alg alg-name
Para desativar o ALG habilitado por padrão, use o seguinte comando.
[edit] user@host# set security alg alg-name disable
Para alterar de volta o ALG desativado para o status padrão, use o seguinte comando.
[edit] user@host# delete security alg alg-name disable
Para habilitar o IKE ALG, use o seguinte comando.
[edit] user@host# set security alg ike-esp-nat enable
Para alterar de volta o IKE ALG habilitado para o status padrão, use o seguinte comando.
[edit] user@host# delete security alg ike-esp-nat enable