Este documento fornece uma configuração de exemplo para executar o sistema de nome de domínio (DNS - Domain Name System) no ASA 5500 Series Adaptive Security Appliance ou PIX 500 Series Security Appliance usando instruções estáticas de conversão de endereço de rede (NAT - Network Address Translation). O DNS Doctoring permite que o Security Appliance regrave os registros DNS A.
A regravação DNS executa duas funções:
Converte um endereço público (o endereço roteável ou mapeado) em uma resposta DNS para um endereço privado (o endereço real) quando o cliente DNS está em uma interface privada.
Converte um endereço privado em um endereço público quando o cliente DNS está na interface pública.
Observação: a configuração neste documento contém duas interfaces NAT: interna e externa. Para obter um exemplo de DNS doctoring com estática e três interfaces NAT (interna, externa e dmz), consulte PIX/ASA: Exemplo de Configuração de Executar DNS Doctoring com o Comando static e Três Interfaces NAT.
Consulte Instruções NAT e PAT do PIX/ASA 7.x e Uso de Comandos nat, global, static, conduit e access-list e Redirecionamento de Porta (Encaminhamento) no PIX para obter mais informações sobre como usar NAT em um Security Appliance.
A inspeção de DNS deve ser habilitada para executar a documentação de DNS no Security Appliance. A inspeção de DNS está ativada por padrão. Se ele foi desativado, consulte a seção Configurar Inspeção de DNS mais adiante neste documento para reativá-lo. Quando a inspeção de DNS está habilitada, o Security Appliance executa estas tarefas:
Converte o registro DNS com base na configuração concluída usando os comandos static e nat (regravação DNS). A conversão aplica-se somente ao registro A na resposta DNS. Portanto, as pesquisas reversas, que solicitam o registro PTR, não são afetadas pela regravação DNS.
Observação: a regravação de DNS não é compatível com a conversão de endereço de porta (PAT) estática porque várias regras PAT são aplicáveis para cada registro A, e a regra PAT a ser usada é ambígua.
Impõe o comprimento máximo da mensagem DNS (o padrão é 512 bytes e o comprimento máximo é 65535 bytes). A remontagem é executada conforme necessário para verificar se o comprimento do pacote é inferior ao comprimento máximo configurado. O pacote será descartado se exceder o comprimento máximo.
Observação: se você executar o comando inspect dns sem a opção maximum-length, o tamanho do pacote DNS não será verificado.
Impõe 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 referenciado pelo ponteiro se os ponteiros de compactação forem encontrados na mensagem DNS.
Verifica se existe um loop do ponteiro de compactação.
As informações neste documento são baseadas no ASA 5500 Series Security Appliance, versão 7.2(1).
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a sua rede estiver ativa, certifique-se de que entende o impacto potencial de qualquer comando.
Essa configuração também pode ser usada com o Cisco PIX 500 Series Security Appliance, versão 6.2 ou posterior.
Observação: a configuração do Cisco Adaptive Security Device Manager (ASDM) é aplicável somente à versão 7.x.
Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.
Em uma troca DNS típica, um cliente envia uma URL ou um nome de host a um servidor DNS para determinar o endereço IP desse host. O servidor DNS recebe a solicitação, pesquisa o mapeamento de nome para endereço IP desse host e fornece o registro A com o endereço IP ao cliente. Embora esse procedimento funcione bem em muitas situações, podem ocorrer problemas. Esses problemas podem ocorrer quando o cliente e o host que o cliente tenta alcançar estão ambos na mesma rede privada atrás do NAT, mas o servidor DNS usado pelo cliente está em outra rede pública.
Neste cenário, o cliente e o servidor WWW que o cliente tenta acessar estão localizados na interface interna do ASA. O PAT dinâmico é configurado para permitir que o cliente acesse a Internet. O NAT estático com uma lista de acesso é configurado para permitir que o servidor acesse a Internet, bem como permitir que os hosts da Internet acessem o servidor WWW.
Este diagrama é um exemplo desta situação. Nesse caso, o cliente em 192.168.100.2 deseja usar o URL server.example.com para acessar o servidor WWW em 192.168.100.10. Os serviços DNS para o cliente são fornecidos pelo servidor DNS externo em 172.22.1.161. Como o servidor DNS está localizado em outra rede pública, ele não sabe o endereço IP privado do servidor WWW. Em vez disso, ele conhece o endereço mapeado do servidor WWW 172.20.1.10. Assim, o servidor DNS contém o mapeamento de endereço IP para nome de server.example.com para 172.20.1.10.
Sem o DNS ou outra solução habilitada nessa situação, se o cliente enviar uma solicitação DNS para o endereço IP de server.example.com, ele não poderá acessar o servidor WWW. Isso ocorre porque o cliente recebe um registro A que contém o endereço público mapeado: 172.20.1.10 do servidor WWW. Quando o cliente tenta acessar esse endereço IP, o Security Appliance descarta os pacotes porque não permite o redirecionamento de pacotes na mesma interface. Esta é a aparência da parte NAT da configuração quando o DNS doctoring não está habilitado:
ciscoasa(config)#show running-config : Saved : ASA Version 7.2(1) ! hostname ciscoasa !--- Output suppressed. access-list OUTSIDE extended permit tcp any host 172.20.1.10 eq www !--- Output suppressed. global (outside) 1 interface nat (inside) 1 192.168.100.0 255.255.255.0 static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 access-group OUTSIDE in interface outside !--- Output suppressed.
Esta é a aparência da configuração no ASDM quando o DNS doctoring não está habilitado:
Aqui está uma captura de pacote dos eventos quando o DNS doctoring não está habilitado:
O cliente envia a consulta DNS.
No. Time Source Destination Protocol Info 1 0.000000 192.168.100.2 172.22.1.161 DNS Standard query A server.example.com Frame 1 (78 bytes on wire, 78 bytes captured) Ethernet II, Src: Cisco_c8:e4:00 (00:04:c0:c8:e4:00), Dst: Cisco_9c:c6:1f (00:0a:b8:9c:c6:1f) Internet Protocol, Src: 192.168.100.2 (192.168.100.2), Dst: 172.22.1.161 (172.22.1.161) User Datagram Protocol, Src Port: 50879 (50879), Dst Port: domain (53) Domain Name System (query) [Response In: 2] Transaction ID: 0x0004 Flags: 0x0100 (Standard query) Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001)
O PAT é executado na consulta DNS pelo ASA e a consulta é encaminhada. Observe que o endereço de origem do pacote foi alterado para a interface externa do ASA.
No. Time Source Destination Protocol Info 1 0.000000 172.20.1.2 172.22.1.161 DNS Standard query A server.example.com Frame 1 (78 bytes on wire, 78 bytes captured) Ethernet II, Src: Cisco_9c:c6:1e (00:0a:b8:9c:c6:1e), Dst: Cisco_01:f1:22 (00:30:94:01:f1:22) Internet Protocol, Src: 172.20.1.2 (172.20.1.2), Dst: 172.22.1.161 (172.22.1.161) User Datagram Protocol, Src Port: 1044 (1044), Dst Port: domain (53) Domain Name System (query) [Response In: 2] Transaction ID: 0x0004 Flags: 0x0100 (Standard query) Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001)
O servidor DNS responde com o endereço mapeado do servidor WWW.
No. Time Source Destination Protocol Info 2 0.005005 172.22.1.161 172.20.1.2 DNS Standard query response A 172.20.1.10 Frame 2 (94 bytes on wire, 94 bytes captured) Ethernet II, Src: Cisco_01:f1:22 (00:30:94:01:f1:22), Dst: Cisco_9c:c6:1e (00:0a:b8:9c:c6:1e) Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 172.20.1.2 (172.20.1.2) User Datagram Protocol, Src Port: domain (53), Dst Port: 1044 (1044) Domain Name System (response) [Request In: 1] [Time: 0.005005000 seconds] Transaction ID: 0x0004 Flags: 0x8580 (Standard query response, No error) Questions: 1 Answer RRs: 1 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001) Answers server.example.com: type A, class IN, addr 172.20.1.10 Name: server.example.com Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 172.20.1.10
O ASA desfaz a conversão do endereço de destino da resposta DNS e encaminha o pacote para o cliente. Observe que, sem o DNS doctoring habilitado, o Addr na resposta ainda é o endereço mapeado do servidor WWW.
No. Time Source Destination Protocol Info 2 0.005264 172.22.1.161 192.168.100.2 DNS Standard query response A 172.20.1.10 Frame 2 (94 bytes on wire, 94 bytes captured) Ethernet II, Src: Cisco_9c:c6:1f (00:0a:b8:9c:c6:1f), Dst: Cisco_c8:e4:00 (00:04:c0:c8:e4:00) Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 192.168.100.2 (192.168.100.2) User Datagram Protocol, Src Port: domain (53), Dst Port: 50879 (50879) Domain Name System (response) [Request In: 1] [Time: 0.005264000 seconds] Transaction ID: 0x0004 Flags: 0x8580 (Standard query response, No error) Questions: 1 Answer RRs: 1 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001) Answers server.example.com: type A, class IN, addr 172.20.1.10 Name: server.example.com Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 172.20.1.10
Neste ponto, o cliente tenta acessar o servidor WWW em 172.20.1.10. O ASA cria uma entrada de conexão para essa comunicação. No entanto, como não permite que o tráfego flua de dentro para fora e para dentro, a conexão expira. Os registros do ASA mostram isso:
%ASA-6-302013: Built outbound TCP connection 54175 for outside:172.20.1.10/80 (172.20.1.10/80) to inside:192.168.100.2/11001 (172.20.1.2/1024) %ASA-6-302014: Teardown TCP connection 54175 for outside:172.20.1.10/80 to inside:192.168.100.2/11001 duration 0:00:30 bytes 0 SYN Timeout
O DNS doctoring com a palavra-chave dns dá ao Security Appliance a capacidade de interceptar e regravar o conteúdo das respostas do servidor DNS para o cliente. Quando configurado corretamente, o Security Appliance pode alterar o registro A para permitir que o cliente em tal cenário, conforme discutido na seção Problema: O Cliente Não Pode Acessar o Servidor WWW, se conecte. Nessa situação, com o DNS doctoring habilitado, o Security Appliance regrava o registro A para direcionar o cliente para 192.168.100.10, em vez de 172.20.1.10. O DNS doctoring é habilitado quando você adiciona a palavra-chave dns a uma instrução de NAT estático. Esta é a aparência da parte NAT da configuração quando o DNS doctoring está habilitado:
ciscoasa(config)#show run : Saved : ASA Version 7.2(1) ! hostname ciscoasa !--- Output suppressed. access-list OUTSIDE extended permit tcp any host 172.20.1.10 eq www !--- Output suppressed. global (outside) 1 interface nat (inside) 1 192.168.100.0 255.255.255.0 static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 dns !--- The "dns" keyword is added to instruct the security appliance to modify !--- DNS records related to this entry. access-group OUTSIDE in interface outside !--- Output suppressed.
Conclua estas etapas para configurar o DNS doctoring no ASDM:
Navegue até Configuration > NAT e escolha a regra de NAT estático a ser modificada. Clique em Editar.
Clique em Opções de NAT....
Marque a caixa de seleção Traduzir respostas DNS que correspondam à regra de conversão.
Clique em OK para sair da janela Opções de NAT. Clique em OK para sair da janela Editar regra de NAT estático. Clique em Aplicar para enviar sua configuração ao Security Appliance.
Aqui está uma captura de pacote dos eventos quando o DNS doctoring está habilitado:
O cliente envia a consulta DNS.
No. Time Source Destination Protocol Info 1 0.000000 192.168.100.2 172.22.1.161 DNS Standard query A server.example.com Frame 1 (78 bytes on wire, 78 bytes captured) Ethernet II, Src: Cisco_c8:e4:00 (00:04:c0:c8:e4:00), Dst: Cisco_9c:c6:1f (00:0a:b8:9c:c6:1f) Internet Protocol, Src: 192.168.100.2 (192.168.100.2), Dst: 172.22.1.161 (172.22.1.161) User Datagram Protocol, Src Port: 52985 (52985), Dst Port: domain (53) Domain Name System (query) [Response In: 2] Transaction ID: 0x000c Flags: 0x0100 (Standard query) Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001)
O PAT é executado na consulta DNS pelo ASA e a consulta é encaminhada. Observe que o endereço de origem do pacote foi alterado para a interface externa do ASA.
No. Time Source Destination Protocol Info 1 0.000000 172.20.1.2 172.22.1.161 DNS Standard query A server.example.com Frame 1 (78 bytes on wire, 78 bytes captured) Ethernet II, Src: Cisco_9c:c6:1e (00:0a:b8:9c:c6:1e), Dst: Cisco_01:f1:22 (00:30:94:01:f1:22) Internet Protocol, Src: 172.20.1.2 (172.20.1.2), Dst: 172.22.1.161 (172.22.1.161) User Datagram Protocol, Src Port: 1035 (1035), Dst Port: domain (53) Domain Name System (query) [Response In: 2] Transaction ID: 0x000c Flags: 0x0100 (Standard query) Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001)
O servidor DNS responde com o endereço mapeado do servidor WWW.
No. Time Source Destination Protocol Info 2 0.000992 172.22.1.161 172.20.1.2 DNS Standard query response A 172.20.1.10 Frame 2 (94 bytes on wire, 94 bytes captured) Ethernet II, Src: Cisco_01:f1:22 (00:30:94:01:f1:22), Dst: Cisco_9c:c6:1e (00:0a:b8:9c:c6:1e) Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 172.20.1.2 (172.20.1.2) User Datagram Protocol, Src Port: domain (53), Dst Port: 1035 (1035) Domain Name System (response) [Request In: 1] [Time: 0.000992000 seconds] Transaction ID: 0x000c Flags: 0x8580 (Standard query response, No error) Questions: 1 Answer RRs: 1 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001) Answers server.example.com: type A, class IN, addr 172.20.1.10 Name: server.example.com Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 172.20.1.10
O ASA desfaz a conversão do endereço de destino da resposta DNS e encaminha o pacote para o cliente. Observe que com o DNS doctoring habilitado, o Addr na resposta é reescrito para ser o endereço real do servidor WWW.
No. Time Source Destination Protocol Info 2 0.001251 172.22.1.161 192.168.100.2 DNS Standard query response A 192.168.100.10 Frame 2 (94 bytes on wire, 94 bytes captured) Ethernet II, Src: Cisco_9c:c6:1f (00:0a:b8:9c:c6:1f), Dst: Cisco_c8:e4:00 (00:04:c0:c8:e4:00) Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 192.168.100.2 (192.168.100.2) User Datagram Protocol, Src Port: domain (53), Dst Port: 52985 (52985) Domain Name System (response) [Request In: 1] [Time: 0.001251000 seconds] Transaction ID: 0x000c Flags: 0x8580 (Standard query response, No error) Questions: 1 Answer RRs: 1 Authority RRs: 0 Additional RRs: 0 Queries server.example.com: type A, class IN Name: server.example.com Type: A (Host address) Class: IN (0x0001) Answers server.example.com: type A, class IN, addr 192.168.100.10 Name: server.example.com Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 192.168.100.10 !--- 172.20.1.10 has been rewritten to be 192.168.100.10.
Neste ponto, o cliente tenta acessar o servidor WWW em 192.168.100.10. Conexão bem-sucedida. Nenhum tráfego é capturado no ASA porque o cliente e o servidor estão na mesma sub-rede.
Esta é a configuração final do ASA para executar o DNS doctoring com a palavra-chave dns e duas interfaces NAT.
Configuração final do ASA 7.2(1) |
---|
ciscoasa(config)#show running-config : Saved : ASA Version 7.2(1) ! hostname ciscoasa enable password 9jNfZuG3TC5tCVH0 encrypted names dns-guard ! interface Ethernet0/0 nameif outside security-level 0 ip address 172.20.1.2 255.255.255.0 ! interface Ethernet0/1 nameif inside security-level 100 ip address 192.168.100.1 255.255.255.0 ! interface Ethernet0/2 shutdown no nameif no security-level no ip address ! interface Management0/0 shutdown no nameif no security-level no ip address management-only ! passwd 2KFQnbNIdI.2KYOU encrypted ftp mode passive access-list OUTSIDE extended permit tcp any host 172.20.1.10 eq www !--- Simple access-list that permits HTTP access to the mapped !--- address of the WWW server. pager lines 24 logging enable logging buffered debugging mtu outside 1500 mtu inside 1500 asdm image disk0:/asdm512-k8.bin no asdm history enable arp timeout 14400 global (outside) 1 interface nat (inside) 1 192.168.100.0 255.255.255.0 static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 dns !--- PAT and static NAT configuration. The DNS keyword instructs !--- the security appliance to rewrite DNS records related to this entry. access-group OUTSIDE in interface outside !--- The Access Control List (ACL) that permits HTTP access !--- to the WWW server is applied to the outside interface. route outside 0.0.0.0 0.0.0.0 172.20.1.1 1 timeout xlate 3:00:00 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00 timeout uauth 0:05:00 absolute username cisco password ffIRPGpDSOJh9YLq encrypted http server enable no snmp-server location no snmp-server contact snmp-server enable traps snmp authentication linkup linkdown coldstart telnet timeout 5 ssh timeout 5 console timeout 0 ! class-map inspection_default match default-inspection-traffic ! ! policy-map type inspect dns MY_DNS_INSPECT_MAP parameters message-length maximum 512 !--- DNS inspection map. policy-map global_policy class inspection_default inspect ftp inspect h323 h225 inspect h323 ras inspect rsh inspect rtsp inspect esmtp inspect sqlnet inspect skinny inspect sunrpc inspect xdmcp inspect sip inspect netbios inspect tftp inspect dns MY_DNS_INSPECT_MAP !--- DNS inspection is enabled using the configured map. inspect icmp policy-map type inspect dns migrated_dns_map_1 parameters message-length maximum 512 ! service-policy global_policy global prompt hostname context Cryptochecksum:a4a38088109887c3ceb481efab3dcf32 : end |
Cuidado: o hairpinning com NAT estático envolve o envio de todo o tráfego entre o cliente e o servidor WWW através do Security Appliance. Considere cuidadosamente a quantidade esperada de tráfego e os recursos do seu dispositivo de segurança antes de implementar esta solução.
Hairpinning é o processo pelo qual o tráfego é enviado de volta para a mesma interface em que chegou. Esse recurso foi introduzido no software Security Appliance versão 7.0. Para versões anteriores à 7.2(1), é necessário que pelo menos um braço do tráfego com hairpin (entrada ou saída) seja criptografado. A partir da versão 7.2(1) e mais recente, este requisito já não existe. Tanto o tráfego de entrada quanto o tráfego de saída podem ser descriptografados quando você usa a versão 7.2(1).
Hairpinning, em conjunto com uma instrução NAT estática, pode ser usado para obter o mesmo efeito que a dopagem DNS. Este método não altera o conteúdo do registro DNS A que é retornado do servidor DNS para o cliente. Em vez disso, quando o hairpinning é usado, como no cenário discutido neste documento, o cliente pode usar o endereço de 172.20.1.10 que é retornado pelo servidor DNS para se conectar.
Esta é a parte relevante da configuração quando você usa hairpinning e NAT estático para obter um efeito de doctoring de DNS. Os comandos em negrito são explicados com mais detalhes no final desta saída:
ciscoasa(config)#show run : Saved : ASA Version 7.2(1) ! hostname ciscoasa !--- Output suppressed. same-security-traffic permit intra-interface !--- Enable hairpinning. global (outside) 1 interface !--- Global statement for client access to the Internet. global (inside) 1 interface !--- Global statment for hairpinned client access through !--- the security appliance. nat (inside) 1 192.168.100.0 255.255.255.0 !--- The NAT statement defines which traffic should be natted. !--- The whole inside subnet in this case. static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 !--- Static NAT statement mapping the WWW server's real address to a !--- public address on the outside interface. static (inside,inside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 !--- Static NAT statment mapping requests for the public IP address of !--- the WWW server that appear on the inside interface to the WWW server's !--- real address of 192.168.100.10.
same-security-traffic — Este comando permite que o tráfego com o mesmo nível de segurança transite pelo Security Appliance. As palavras-chave permit intrainterface permitem que o tráfego de mesma segurança entre e saia da mesma interface, portanto o hairpinning é habilitado.
Observação: consulte same-security-traffic para obter mais informações sobre hairpinning e o comando same-security-traffic.
interface global (interna) 1 — Todo o tráfego que passa pelo Security Appliance deve passar pelo NAT. Esse comando usa o endereço da interface interna do Security Appliance para permitir que o tráfego que entra na interface interna seja submetido ao PAT à medida que é redirecionado para a interface interna.
static (inside,inside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255—Esta entrada de NAT estático cria um segundo mapeamento para o endereço IP público do servidor WWW. No entanto, ao contrário da primeira entrada de NAT estático, desta vez o endereço 172.20.1.10 é mapeado para a interface interna do Security Appliance. Isso permite que o Security Appliance responda às solicitações que ele vê para esse endereço na interface interna. Em seguida, ele redireciona essas solicitações para o endereço real do servidor WWW por meio dele mesmo.
Conclua estas etapas para configurar hairpinning com NAT estático no ASDM:
Navegue até Configuration > Interfaces.
Na parte inferior da janela, marque a caixa de seleção Enable traffic between two or more hosts connected to the same interface.
Clique em Apply.
Navegue até Configuration > NAT e escolha Add > Add Static NAT Rule....
Preencha a configuração para a nova tradução estática.
Preencha a área Real Address com as informações do servidor WWW.
Preencha a área Conversão estática com o endereço e a interface para os quais deseja mapear o servidor WWW.
Nesse caso, a interface interna é escolhida para permitir que os hosts na interface interna acessem o servidor WWW através do endereço mapeado 172.20.1.10.
Clique em OK para sair da janela Adicionar regra de NAT estático.
Escolha a tradução PAT dinâmica existente e clique em Editar.
Escolha inside na caixa suspensa Interface.
Clique em Add.
Escolha o botão de opção marcado Port Address Translation (PAT) usando o endereço IP da interface. Clique em Add.
Clique em OK para sair da janela Adicionar pool de endereços global. Clique em OK para sair da janela Editar regra de NAT dinâmico. Clique em Aplicar para enviar sua configuração ao Security Appliance.
Esta é a sequência de eventos que ocorre quando hairpinning é configurado. Suponha que o cliente já consultou o servidor DNS e recebeu uma resposta de 172.20.1.10 para o endereço do servidor WWW:
O cliente tenta contatar o servidor WWW em 172.20.1.10.
%ASA-7-609001: Built local-host inside:192.168.100.2
O Security Appliance vê a solicitação e reconhece que o servidor WWW está em 192.168.100.10.
%ASA-7-609001: Built local-host inside:192.168.100.10
O Security Appliance cria uma conversão PAT dinâmica para o cliente. A origem do tráfego do cliente agora é a interface interna do Security Appliance: 192.168.100.1.
%ASA-6-305011: Built dynamic TCP translation from inside:192.168.100.2/11012 to inside:192.168.100.1/1026
O Security Appliance cria uma conexão TCP entre o cliente e o servidor WWW através dele mesmo. Observe os endereços mapeados de cada host entre parênteses.
%ASA-6-302013: Built inbound TCP connection 67399 for inside:192.168.100.2/11012 (192.168.100.1/1026) to inside:192.168.100.10/80 (172.20.1.10/80)
O comando show xlate no Security Appliance verifica se o tráfego do cliente é convertido através do Security Appliance.
ciscoasa(config)#show xlate 3 in use, 9 most used Global 172.20.1.10 Local 192.168.100.10 Global 172.20.1.10 Local 192.168.100.10 PAT Global 192.168.100.1(1027) Local 192.168.100.2(11013)
O comando show conn no Security Appliance verifica se a conexão foi bem-sucedida entre o Security Appliance e o servidor WWW em nome do cliente. Observe o endereço real do cliente entre parênteses.
ciscoasa#show conn TCP out 192.168.100.1(192.168.100.2):11019 in 192.168.100.10:80 idle 0:00:03 bytes 1120 flags UIOB
Esta é a configuração final do ASA que usa hairpinning e NAT estático para obter um efeito de doctoring DNS com duas interfaces NAT.
Configuração final do ASA 7.2(1) |
---|
ciscoasa(config-if)#show running-config : Saved : ASA Version 7.2(1) ! hostname ciscoasa enable password 9jNfZuG3TC5tCVH0 encrypted names dns-guard ! interface Ethernet0/0 nameif outside security-level 0 ip address 172.20.1.2 255.255.255.0 ! interface Ethernet0/1 nameif inside security-level 100 ip address 192.168.100.1 255.255.255.0 ! interface Ethernet0/2 shutdown no nameif no security-level no ip address ! interface Management0/0 shutdown no nameif no security-level no ip address management-only ! passwd 2KFQnbNIdI.2KYOU encrypted ftp mode passive same-security-traffic permit intra-interface access-list OUTSIDE extended permit tcp any host 172.20.1.10 eq www !--- Simple access-list that permits HTTP access to the mapped !--- address of the WWW server. pager lines 24 logging enable logging buffered debugging mtu outside 1500 mtu inside 1500 asdm image disk0:/asdm512-k8.bin no asdm history enable arp timeout 14400 global (outside) 1 interface !--- Global statement for client access to the Internet. global (inside) 1 interface !--- Global statment for hairpinned client access through !--- the security appliance. nat (inside) 1 192.168.100.0 255.255.255.0 !--- The NAT statement defines which traffic should be natted. !--- The whole inside subnet in this case. static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 !--- Static NAT statement mapping the WWW server's real address to a public !--- address on the outside interface. static (inside,inside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 !--- Static NAT statement mapping requests for the public IP address of the !--- WWW server that appear on the inside interface to the WWW server's real address !--- of 192.168.100.10. access-group OUTSIDE in interface outside !--- The ACL that permits HTTP access to the WWW server is applied !--- to the outside interface. route outside 0.0.0.0 0.0.0.0 172.20.1.1 1 timeout xlate 3:00:00 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00 timeout uauth 0:05:00 absolute username cisco password ffIRPGpDSOJh9YLq encrypted http server enable no snmp-server location no snmp-server contact snmp-server enable traps snmp authentication linkup linkdown coldstart telnet timeout 5 ssh timeout 5 console timeout 0 ! class-map inspection_default match default-inspection-traffic ! ! policy-map type inspect dns MY_DNS_INSPECT_MAP parameters message-length maximum 512 policy-map global_policy class inspection_default inspect ftp inspect h323 h225 inspect h323 ras inspect rsh inspect rtsp inspect esmtp inspect sqlnet inspect skinny inspect sunrpc inspect xdmcp inspect sip inspect netbios inspect tftp inspect dns MY_DNS_INSPECT_MAP inspect icmp policy-map type inspect dns migrated_dns_map_1 parameters message-length maximum 512 ! service-policy global_policy global prompt hostname context Cryptochecksum:7c9b4e3aff085ba90ee194e079111e1d : end |
Observação: consulte este vídeo, Hair-pinning no Cisco ASA (somente clientes registrados), para obter mais informações sobre diferentes cenários em que hair-pinning pode ser usado.
Para habilitar a inspeção de DNS (se ela tiver sido desabilitada anteriormente), execute estas etapas. Neste exemplo, a inspeção de DNS é adicionada à política de inspeção global padrão, que é aplicada globalmente por um comando service-policy como se o ASA começasse com uma configuração padrão. Consulte Utilização da Estrutura de Política Modular para obter mais informações sobre políticas de serviço e inspeção.
Crie um mapa de política de inspeção para DNS.
ciscoasa(config)#policy-map type inspect dns MY_DNS_INSPECT_MAP
No modo de configuração do mapa de políticas, entre no modo de configuração de parâmetros para especificar parâmetros para o mecanismo de inspeção.
ciscoasa(config-pmap)#parameters
No modo de configuração de parâmetro de mapa de política, especifique o comprimento máximo da mensagem para que as mensagens DNS sejam 512.
ciscoasa(config-pmap-p)#message-length maximum 512
Saia do modo de configuração de parâmetro de mapa de políticas e do modo de configuração de mapa de políticas.
ciscoasa(config-pmap-p)#exit ciscoasa(config-pmap)#exit
Confirme se o mapa de política de inspeção foi criado conforme desejado.
ciscoasa(config)#show run policy-map type inspect dns ! policy-map type inspect dns MY_DNS_INSPECT_MAP parameters message-length maximum 512 !
Entre no modo de configuração de mapa de políticas para global_policy.
ciscoasa(config)#policy-map global_policy ciscoasa(config-pmap)#
No modo de configuração de mapa de políticas, especifique o mapa de classes padrão da camada 3/4, inspection_default.
ciscoasa(config-pmap)#class inspection_default ciscoasa(config-pmap-c)#
No modo de configuração de classe de mapa de política, especifique que o DNS deve ser inspecionado usando o mapa de política de inspeção criado nas etapas 1-3.
ciscoasa(config-pmap-c)#inspect dns MY_DNS_INSPECT_MAP
Saia do modo de configuração de classe do mapa de políticas e do modo de configuração do mapa de políticas.
ciscoasa(config-pmap-c)#exit ciscoasa(config-pmap)#exit
Verifique se o mapa de políticas global_policy está configurado conforme desejado.
ciscoasa(config)#show run policy-map ! !--- The configured DNS inspection policy map. policy-map type inspect dns MY_DNS_INSPECT_MAP parameters message-length maximum 512 policy-map global_policy class inspection_default inspect ftp inspect h323 h225 inspect h323 ras inspect rsh inspect rtsp inspect esmtp inspect sqlnet inspect skinny inspect sunrpc inspect xdmcp inspect sip inspect netbios inspect tftp inspect dns MY_DNS_INSPECT_MAP !--- DNS application inspection enabled. !
Verifique se a global_policy é aplicada globalmente por uma política de serviço.
ciscoasa(config)#show run service-policy service-policy global_policy global
Execute o comando split-dns no modo de configuração de política de grupo para inserir uma lista de domínios a serem resolvidos através do túnel dividido. Use o não deste comando para excluir uma lista.
Quando não há listas de domínio de tunelamento dividido, os usuários herdam qualquer uma existente na política de grupo padrão. Execute o comando split-dns none para impedir a herança de listas de domínio de tunelamento dividido.
Use um único espaço para separar cada entrada na lista de domínios. Não há limite para o número de entradas, mas a sequência inteira não pode ter mais de 255 caracteres. Você pode usar somente caracteres alfanuméricos, hífens (-) e pontos (.). O comando no split-dns, quando usado sem argumentos, exclui todos os valores atuais, o que inclui um valor nulo criado quando você executa o comando split-dns none.
Este exemplo mostra como configurar os domínios Domain1, Domain2, Domain3 e Domain4 para que sejam resolvidos por meio de tunelamento dividido para a política de grupo chamada FirstGroup:
hostname(config)#group-policy FirstGroup attributes hostname(config-group-policy)#split-dns value Domain1 Domain2 Domain3 Domain4
Use esta seção para confirmar se a sua configuração funciona corretamente.
A Output Interpreter Tool ( somente clientes registrados) (OIT) oferece suporte a determinados comandos show. Use a OIT para exibir uma análise da saída do comando show.
Um método para verificar se o Security Appliance regrava os registros DNS corretamente é capturar os pacotes em questão, conforme discutido no exemplo anterior. Conclua estas etapas para capturar o tráfego no ASA:
Crie uma lista de acesso para cada instância de captura que você deseja criar.
A ACL deve especificar o tráfego que você deseja capturar. Neste exemplo, duas ACLs foram criadas.
A ACL para o tráfego na interface externa:
access-list DNSOUTCAP extended permit ip host 172.22.1.161 host 172.20.1.2 !--- All traffic between the DNS server and the ASA. access-list DNSOUTCAP extended permit ip host 172.20.1.2 host 172.22.1.161 !--- All traffic between the ASA and the DNS server.
A ACL para o tráfego na interface interna:
access-list DNSINCAP extended permit ip host 192.168.100.2 host 172.22.1.161 !--- All traffic between the client and the DNS server. access-list DNSINCAP extended permit ip host 172.22.1.161 host 192.168.100.2 !--- All traffic between the DNS server and the client.
Crie a(s) instância(s) de captura:
ciscoasa#capture DNSOUTSIDE access-list DNSOUTCAP interface outside !--- This capture collects traffic on the outside interface that matches !--- the ACL DNSOUTCAP. ciscoasa#capture DNSINSIDE access-list DNSINCAP interface inside !--- This capture collects traffic on the inside interface that matches !--- the ACL DNSINCAP.
Exibir a(s) captura(s).
Veja como são as capturas de exemplo após a passagem de algum tráfego DNS:
ciscoasa#show capture DNSOUTSIDE 2 packets captured 1: 14:07:21.347195 172.20.1.2.1025 > 172.22.1.161.53: udp 36 2: 14:07:21.352093 172.22.1.161.53 > 172.20.1.2.1025: udp 93 2 packets shown ciscoasa#show capture DNSINSIDE 2 packets captured 1: 14:07:21.346951 192.168.100.2.57225 > 172.22.1.161.53: udp 36 2: 14:07:21.352124 172.22.1.161.53 > 192.168.100.2.57225: udp 93 2 packets shown
(Opcional) Copie a(s) captura(ões) para um servidor TFTP no formato pcap para análise em outro aplicativo.
Os aplicativos que podem analisar o formato pcap podem mostrar detalhes adicionais, como o nome e o endereço IP nos registros DNS A.
ciscoasa#copy /pcap capture:DNSINSIDE tftp ... ciscoasa#copy /pcap capture:DNSOUTSIDE tftp
Esta seção fornece informações que podem ser usadas para o troubleshooting da sua configuração.
Verifique se você tem a inspeção de DNS configurada no Security Appliance. Consulte a seção Configurar Inspeção de DNS.
Se uma conexão não puder ser criada entre o cliente e o servidor WWW, pode ser devido a uma configuração incorreta de NAT. Verifique os logs do Security Appliance em busca de mensagens que indiquem que um protocolo falhou ao criar uma conversão através do Security Appliance. Se tais mensagens aparecerem, verifique se o NAT foi configurado para o tráfego desejado e se nenhum endereço está incorreto.
%ASA-3-305006: portmap translation creation failed for tcp src inside:192.168.100.2/11000 dst dmz:10.10.10.10/23
Limpe as entradas xlate e, em seguida, remova e reaplique as instruções NAT para resolver esse erro.
É possível que você receba esta mensagem de erro devido ao descarte de pacote DNS:
%PIX|ASA-4-410001: UDP DNS request from source_interface:source_address/source_port to dest_interface:dest_address/dest_port; (label length | domain-name length) 52 bytes exceeds remaining packet length of 44 bytes.
Aumente o comprimento do pacote DNS entre 512-65535 para resolver esse problema.
Exemplo:
ciscoasa(config)#policy-map type inspect dns MY_DNS_INSPECT_MAP ciscoasa(config-pmap)#parameters ciscoasa(config-pmap-p)#message-length maximum <512-65535>
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
29-Sep-2006 |
Versão inicial |