이 문서에서는 고정 NAT(Network Address Translation) 문을 사용하여 ASA 5500 Series Adaptive Security Appliance 또는 PIX 500 Series Security Appliance에서 DNS(Domain Name System) 문서화를 수행하는 샘플 컨피그레이션을 제공합니다. DNS 문서화를 사용하면 보안 어플라이언스에서 DNS A 레코드를 재작성할 수 있습니다.
DNS 재작성은 두 가지 기능을 수행합니다.
DNS 클라이언트가 사설 인터페이스에 있을 때 DNS 응답의 공용 주소(라우팅 가능한 주소 또는 매핑된 주소)를 사설 주소(실제 주소)로 변환합니다.
DNS 클라이언트가 공용 인터페이스에 있을 때 사설 주소를 공용 주소로 변환합니다.
참고: 이 문서의 컨피그레이션에는 내부 및 외부의 두 NAT 인터페이스가 포함되어 있습니다. 고정 및 3개의 NAT 인터페이스(내부, 외부 및 dmz)를 사용하는 DNS 문서화의 예는 PIX/ASA: Perform DNS Doctoring with the static Command and Three NAT Interfaces Configuration Example을 참조하십시오.
보안 어플라이언스에서 NAT를 사용하는 방법에 대한 자세한 내용은 PIX에서 PIX/ASA 7.x NAT 및 PAT 문과 Using nat, global, static, conduit, and access-list Commands and Port Redirection (Forwarding)(PIX에서 nat, 전역, 고정, 도관, 액세스 목록 명령 및 포트 리디렉션(포워딩)을 참조하십시오.
보안 어플라이언스에서 DNS 문서화를 수행하려면 DNS 검사를 활성화해야 합니다. DNS 검사는 기본적으로 켜져 있습니다. 꺼진 경우 이 문서의 뒷부분에서 DNS 검사 구성 섹션을 참조하여 다시 활성화합니다. DNS 검사가 활성화되면 보안 어플라이언스는 다음 작업을 수행합니다.
static 및 nat 명령을 사용하여 완료된 컨피그레이션을 기반으로 DNS 레코드를 변환합니다(DNS 재작성). 변환은 DNS 회신의 A-record에만 적용됩니다. 따라서 PTR 레코드를 요청하는 역방향 조회는 DNS 재작성의 영향을 받지 않습니다.
참고: DNS 재작성은 각 A 레코드에 여러 PAT 규칙을 적용할 수 있으며 사용할 PAT 규칙이 모호하므로 PAT(Static Port Address Translation)와 호환되지 않습니다.
최대 DNS 메시지 길이를 적용합니다(기본값은 512바이트이며 최대 길이는 65535바이트). 패킷 길이가 구성된 최대 길이보다 작은지 확인하기 위해 필요한 경우 리어셈블리를 수행합니다. 패킷이 최대 길이를 초과하면 삭제됩니다.
참고: maximum-length 옵션을 사용하지 않고 inspect dns 명령을 실행하면 DNS 패킷 크기가 선택되지 않습니다.
도메인 이름 길이 255바이트, 레이블 길이 63바이트를 적용합니다.
DNS 메시지에서 압축 포인터가 발견되는 경우 포인터에서 참조하는 도메인 이름의 무결성을 확인합니다.
압축 포인터 루프가 있는지 확인합니다.
이 문서의 정보는 ASA 5500 Series Security Appliance 버전 7.2(1)를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 컨피그레이션은 Cisco PIX 500 Series Security Appliance, 버전 6.2 이상에서도 사용할 수 있습니다.
참고: Cisco ASDM(Adaptive Security Device Manager) 컨피그레이션은 버전 7.x에만 적용됩니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참고하십시오.
일반적인 DNS 교환에서는 클라이언트가 URL 또는 호스트 이름을 DNS 서버로 전송하여 해당 호스트의 IP 주소를 확인합니다. DNS 서버는 요청을 수신하고 해당 호스트의 이름-IP-주소 매핑을 조회한 다음 IP 주소가 포함된 A-record를 클라이언트에 제공합니다. 이 절차가 많은 상황에서 잘 작동하지만 문제가 발생할 수 있다. 클라이언트와 클라이언트가 연결하려는 호스트가 모두 NAT 뒤에 있는 동일한 사설 네트워크에 있지만, 클라이언트가 사용하는 DNS 서버가 다른 공용 네트워크에 있는 경우 이러한 문제가 발생할 수 있습니다.
이 시나리오에서는 클라이언트와 클라이언트가 연결하려는 WWW 서버가 모두 ASA의 내부 인터페이스에 있습니다. 동적 PAT는 클라이언트가 인터넷에 액세스할 수 있도록 구성됩니다. 액세스 목록이 있는 고정 NAT는 서버가 인터넷에 액세스할 수 있도록 구성되며, 인터넷 호스트가 WWW 서버에 액세스할 수 있도록 합니다.
이 다이어그램은 이러한 상황을 보여 주는 예입니다. 이 경우 192.168.100.2의 클라이언트는 server.example.com URL을 사용하여 192.168.100.10의 WWW 서버에 액세스하려고 합니다. 클라이언트에 대한 DNS 서비스는 172.22.1.161의 외부 DNS 서버에서 제공합니다. DNS 서버는 다른 공용 네트워크에 있으므로 WWW 서버의 사설 IP 주소를 알지 못합니다. 대신 WWW 서버 매핑된 주소 172.20.1.10을 알고 있습니다. 따라서 DNS 서버는 server.example.com에서 172.20.1.10으로 매핑되는 IP 주소를 포함합니다.
이 상황에서 DNS 문서화 또는 다른 솔루션을 활성화하지 않으면 클라이언트가 IP 주소 server.example.com에 대한 DNS 요청을 보내면 WWW 서버에 액세스할 수 없습니다. 이는 클라이언트가 매핑된 공용 주소(WWW 서버의 172.20.1.10)를 포함하는 A 레코드를 받기 때문입니다. 클라이언트가 이 IP 주소에 액세스하려고 하면 보안 어플라이언스는 동일한 인터페이스에서 패킷 리디렉션을 허용하지 않으므로 패킷을 삭제합니다. DNS 문서화가 활성화되지 않은 경우 컨피그레이션의 NAT 부분은 다음과 같습니다.
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.
DNS 문서화가 활성화되지 않은 경우 ASDM의 컨피그레이션은 다음과 같습니다.
다음은 DNS 문서화가 활성화되지 않은 경우의 이벤트 패킷 캡처입니다.
클라이언트가 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)
ASA에서 DNS 쿼리에 대해 PAT를 수행하고 쿼리가 전달됩니다. 패킷의 소스 주소가 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)
DNS 서버가 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
ASA는 DNS 응답의 목적지 주소 변환을 취소하고 패킷을 클라이언트에 전달합니다. DNS 문서화를 활성화하지 않으면 응답의 Addr은 여전히 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
이 시점에서 클라이언트는 172.20.1.10에 있는 WWW 서버에 액세스를 시도합니다. ASA는 이 통신에 대한 연결 항목을 생성합니다. 그러나 트래픽이 내부에서 외부로 흐르지 못하게 하므로 연결 시간이 초과됩니다. ASA 로그에는 다음이 표시됩니다.
%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
dns 키워드를 사용하는 DNS 문서화는 보안 어플라이언스에 DNS 서버의 클라이언트 응답을 가로채고 재작성할 수 있는 기능을 제공합니다. 올바르게 구성된 경우 보안 어플라이언스는 문제: 클라이언트가 WWW 서버에 액세스할 수 없음 섹션에서 설명한 시나리오의 클라이언트가 연결할 수 있도록 A 레코드를 변경할 수 있습니다. 이 경우 DNS 문서화가 활성화되면 보안 어플라이언스는 A 레코드를 다시 작성하여 클라이언트를 172.20.1.10 대신 192.168.100.10으로 안내합니다. DNS doctoring은 고정 NAT 문에 dns 키워드를 추가할 때 활성화됩니다. DNS 문서화가 활성화된 경우 컨피그레이션의 NAT 부분은 다음과 같습니다.
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.
ASDM에서 DNS 문서화를 구성하려면 다음 단계를 완료하십시오.
Configuration(컨피그레이션) > NAT로 이동하고 수정할 고정 NAT 규칙을 선택합니다. Edit를 클릭합니다.
NAT 옵션...을 클릭합니다.
Translate DNS replies that match the translation rule 확인란을 선택합니다.
OK(확인)를 클릭하여 NAT Options(NAT 옵션) 창을 닫습니다. Edit Static NAT Rule(고정 NAT 규칙 편집) 창에서 나가려면 OK(확인)를 클릭합니다. 컨피그레이션을 보안 어플라이언스로 전송하려면 Apply를 클릭합니다.
다음은 DNS 문서화가 활성화된 경우 이벤트의 패킷 캡처입니다.
클라이언트가 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)
ASA에서 DNS 쿼리에 대해 PAT를 수행하고 쿼리가 전달됩니다. 패킷의 소스 주소가 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)
DNS 서버가 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
ASA는 DNS 응답의 목적지 주소 변환을 취소하고 패킷을 클라이언트에 전달합니다. DNS 문서화가 활성화된 경우 응답의 Addr이 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.
이 시점에서 클라이언트는 192.168.100.10에 있는 WWW 서버에 액세스를 시도합니다. 연결에 성공했습니다. 클라이언트와 서버가 동일한 서브넷에 있으므로 ASA에서 트래픽이 캡처되지 않습니다.
이는 dns 키워드 및 2개의 NAT 인터페이스를 사용하여 DNS 문서화를 수행하기 위한 ASA의 최종 컨피그레이션입니다.
최종 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 |
주의: 고정 NAT를 사용하는 헤어피닝에는 보안 어플라이언스를 통해 클라이언트와 WWW 서버 간의 모든 트래픽을 전송하는 작업이 포함됩니다. 이 솔루션을 구현하기 전에 예상되는 트래픽 양과 보안 어플라이언스의 기능을 신중하게 고려하십시오.
헤어피닝은 트래픽이 도착한 인터페이스와 동일한 인터페이스로 다시 전송되는 프로세스입니다. 이 기능은 보안 어플라이언스 소프트웨어 버전 7.0에 도입되었습니다. 7.2(1) 이전 버전의 경우 헤어핀 트래픽(인바운드 또는 아웃바운드) 중 하나 이상을 암호화해야 합니다. 7.2(1) 이상부터는 이 요구 사항이 더 이상 적용되지 않습니다. 7.2(1)을 사용할 경우 트래픽 인바운드와 트래픽 아웃바운드가 모두 암호화되지 않을 수 있습니다.
고정 NAT 문과 함께 헤어피닝을 사용하여 DNS 문서화와 동일한 효과를 얻을 수 있습니다. 이 메서드는 DNS 서버에서 클라이언트로 반환되는 DNS A 레코드의 내용을 변경하지 않습니다. 대신 이 문서에서 설명한 시나리오와 같이 헤어피닝을 사용할 경우 클라이언트는 DNS 서버에서 반환되는 172.20.1.10의 주소를 사용하여 연결할 수 있습니다.
다음은 헤어핀 및 고정 NAT를 사용하여 DNS 문서화 효과를 얻을 때 컨피그레이션의 관련 부분입니다. 굵게 표시된 명령은 이 출력의 끝에 자세히 설명되어 있습니다.
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 - 이 명령을 사용하면 동일한 보안 레벨의 트래픽이 보안 어플라이언스를 통과할 수 있습니다. permit intra-interface 키워드는 동일한 보안 트래픽이 동일한 인터페이스로 들어오고 나가도록 허용하므로 헤어피닝이 활성화됩니다.
참고: 헤어피닝 및 same-security-traffic 명령에 대한 자세한 내용은 same-security-traffic을 참조하십시오.
global (inside) 1 interface - 보안 어플라이언스를 통과하는 모든 트래픽은 NAT를 거쳐야 합니다. 이 명령은 내부 인터페이스에 들어오는 트래픽이 내부 인터페이스에서 다시 헤어핀될 때 PAT를 거치도록 하려면 보안 어플라이언스의 내부 인터페이스 주소를 사용합니다.
static(inside,inside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255 - 이 고정 NAT 항목은 WWWW 서버의 공용 IP 주소에 대한 두 번째 매핑을 생성합니다. 그러나 첫 번째 고정 NAT 엔트리와 달리 이번에는 주소 172.20.1.10이 보안 어플라이언스의 내부 인터페이스에 매핑됩니다. 그러면 보안 어플라이언스는 내부 인터페이스에서 이 주소에 대해 표시되는 요청에 응답할 수 있습니다. 그런 다음 WWW 서버의 실제 주소로 자신을 통해 요청을 리디렉션합니다.
ASDM에서 고정 NAT로 헤어피닝을 구성하려면 다음 단계를 완료하십시오.
Configuration(컨피그레이션) > Interfaces(인터페이스)로 이동합니다.
창 하단에서 Enable traffic between two or more hosts connected to the same interface 확인란을 선택합니다.
적용을 클릭합니다.
Configuration(컨피그레이션) > NAT로 이동하고 Add(추가) > Add Static NAT Rule(고정 NAT 규칙 추가)...을 선택합니다.
새 정적 변환에 대한 컨피그레이션을 입력합니다.
WWW 서버 정보로 Real Address(실제 주소) 영역을 채웁니다.
WWW 서버를 매핑할 주소 및 인터페이스로 Static Translation 영역을 채웁니다.
이 경우 내부 인터페이스의 호스트가 매핑된 주소 172.20.1.10을 통해 WWW 서버에 액세스할 수 있도록 내부 인터페이스가 선택됩니다.
OK(확인)를 클릭하여 Add Static NAT Rule(고정 NAT 규칙 추가) 창에서 나갑니다.
기존 동적 PAT 변환을 선택하고 Edit를 클릭합니다.
Interface(인터페이스) 풀다운 상자에서 inside(내부)를 선택합니다.
Add(추가)를 클릭합니다.
인터페이스의 IP 주소를 사용하여 PAT(Port Address Translation)라고 표시된 라디오 버튼을 선택합니다. Add(추가)를 클릭합니다.
OK(확인)를 클릭하여 Add Global Address Pool(글로벌 주소 풀 추가) 창을 닫습니다. OK(확인)를 클릭하여 Edit Dynamic NAT Rule(동적 NAT 규칙 편집) 창을 닫습니다. 컨피그레이션을 보안 어플라이언스로 전송하려면 Apply를 클릭합니다.
다음은 헤어피닝이 구성될 때 발생하는 이벤트의 시퀀스입니다. 클라이언트가 DNS 서버를 이미 쿼리하고 WWW 서버 주소에 대한 172.20.1.10의 응답을 받았다고 가정합니다.
클라이언트가 172.20.1.10에 있는 WWW 서버에 연결하려고 시도합니다.
%ASA-7-609001: Built local-host inside:192.168.100.2
보안 어플라이언스는 요청을 확인하고 WWW 서버가 192.168.100.10에 있음을 인식합니다.
%ASA-7-609001: Built local-host inside:192.168.100.10
보안 어플라이언스는 클라이언트에 대한 동적 PAT 변환을 생성합니다. 클라이언트 트래픽의 소스는 이제 보안 어플라이언스의 내부 인터페이스입니다(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
보안 어플라이언스는 자신을 통해 클라이언트와 WWW 서버 간에 TCP 연결을 생성합니다. 각 호스트의 매핑된 주소를 괄호 안에 적어 둡니다.
%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)
보안 어플라이언스의 show xlate 명령은 클라이언트 트래픽이 보안 어플라이언스를 통해 변환되는지 확인합니다.
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)
보안 어플라이언스의 show conn 명령은 클라이언트를 대신하여 보안 어플라이언스와 WWW 서버 간의 연결이 성공했음을 확인합니다. 클라이언트의 실제 주소를 괄호 안에 기록합니다.
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
이는 헤어피닝 및 고정 NAT를 사용하여 두 NAT 인터페이스로 DNS 문서화 효과를 달성하는 ASA의 최종 컨피그레이션입니다.
최종 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 |
참고: 헤어피닝을 사용할 수 있는 여러 시나리오에 대한 자세한 내용은 이 비디오, Cisco ASA(등록된 고객만 해당)를 참조하십시오.
DNS 검사를 활성화하려면(이전에 비활성화한 경우) 다음 단계를 수행합니다. 이 예에서는 DNS 검사가 기본 글로벌 검사 정책에 추가되며, 이는 ASA가 기본 컨피그레이션으로 시작한 것처럼 service-policy 명령으로 전역적으로 적용됩니다. 서비스 정책 및 검사에 대한 자세한 내용은 Modular Policy Framework 사용을 참조하십시오.
DNS에 대한 검사 정책 맵을 만듭니다.
ciscoasa(config)#policy-map type inspect dns MY_DNS_INSPECT_MAP
정책 맵 컨피그레이션 모드에서 매개변수 컨피그레이션 모드를 입력하여 검사 엔진에 대한 매개변수를 지정합니다.
ciscoasa(config-pmap)#parameters
policy-map 매개변수 컨피그레이션 모드에서 DNS 메시지의 최대 메시지 길이를 512로 지정합니다.
ciscoasa(config-pmap-p)#message-length maximum 512
policy-map 매개변수 컨피그레이션 모드 및 policy-map 컨피그레이션 모드를 종료합니다.
ciscoasa(config-pmap-p)#exit ciscoasa(config-pmap)#exit
검사 policy-map이 원하는 대로 생성되었는지 확인합니다.
ciscoasa(config)#show run policy-map type inspect dns ! policy-map type inspect dns MY_DNS_INSPECT_MAP parameters message-length maximum 512 !
global_policy에 대한 policy-map 컨피그레이션 모드로 들어갑니다.
ciscoasa(config)#policy-map global_policy ciscoasa(config-pmap)#
정책 맵 컨피그레이션 모드에서 기본 레이어 3/4 클래스 맵인 inspection_default를 지정합니다.
ciscoasa(config-pmap)#class inspection_default ciscoasa(config-pmap-c)#
policy-map 클래스 컨피그레이션 모드에서 1-3단계에서 생성한 검사 정책 맵을 사용하여 DNS를 검사하도록 지정합니다.
ciscoasa(config-pmap-c)#inspect dns MY_DNS_INSPECT_MAP
policy-map 클래스 컨피그레이션 모드 및 policy-map 컨피그레이션 모드를 종료합니다.
ciscoasa(config-pmap-c)#exit ciscoasa(config-pmap)#exit
global_policy policy-map이 원하는 대로 구성되었는지 확인합니다.
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. !
global_policy가 service-policy에 의해 전역적으로 적용되는지 확인합니다.
ciscoasa(config)#show run service-policy service-policy global_policy global
그룹 정책 구성 모드에서 split-dns 명령을 실행하여 스플릿 터널을 통해 확인할 도메인 목록을 입력합니다. 이 아니요 목록을 삭제하려면 이 명령의 형식을 사용합니다.
스플릿 터널링 도메인 목록이 없는 경우 사용자는 기본 그룹 정책에 있는 모든 항목을 상속합니다. 스플릿 터널링 도메인 목록의 상속을 방지하려면 split-dns none 명령을 실행합니다.
도메인 목록의 각 항목을 구분하려면 단일 공백을 사용합니다. 항목 수에는 제한이 없지만 전체 문자열은 255자를 초과할 수 없습니다. 영숫자, 하이픈(-) 및 마침표(.)만 사용할 수 있습니다. 인수 없이 no split-dns 명령을 사용하면 모든 현재 값이 삭제됩니다. 여기에는 split-dns none 명령을 실행할 때 생성되는 null 값이 포함됩니다.
다음 예에서는 FirstGroup이라는 그룹 정책에 대해 스플릿 터널링을 통해 확인되도록 도메인 Domain1, Domain2, Domain3 및 Domain4를 구성하는 방법을 보여 줍니다.
hostname(config)#group-policy FirstGroup attributes hostname(config-group-policy)#split-dns value Domain1 Domain2 Domain3 Domain4
설정이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
OIT(Output Interpreter Tool)(등록된 고객만 해당)는 특정 show 명령을 지원합니다. OIT를 사용하여 show 명령 출력 분석을 볼 수 있습니다.
보안 어플라이언스가 DNS 레코드를 올바르게 재작성하는지 확인하는 한 가지 방법은 이전 예에서 설명한 것처럼 문제의 패킷을 캡처하는 것입니다. ASA에서 트래픽을 캡처하려면 다음 단계를 완료하십시오.
생성할 각 캡처 인스턴스에 대한 액세스 목록을 생성합니다.
ACL은 캡처할 트래픽을 지정해야 합니다. 이 예에서는 두 개의 ACL이 생성되었습니다.
외부 인터페이스의 트래픽에 대한 ACL:
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.
내부 인터페이스의 트래픽에 대한 ACL:
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.
캡처 인스턴스를 생성합니다.
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.
캡처를 봅니다.
다음은 일부 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
(선택 사항) 다른 애플리케이션에서 분석할 캡처를 pcap 형식으로 TFTP 서버에 복사합니다.
pcap 형식을 구문 분석할 수 있는 애플리케이션은 DNS A-records의 이름 및 IP 주소와 같은 추가 세부 정보를 표시할 수 있습니다.
ciscoasa#copy /pcap capture:DNSINSIDE tftp ... ciscoasa#copy /pcap capture:DNSOUTSIDE tftp
이 섹션에서는 설정 문제 해결에 사용할 수 있는 정보를 제공합니다.
보안 어플라이언스에 DNS 검사가 구성되어 있는지 확인합니다. Configure DNS Inspection 섹션을 참조하십시오.
클라이언트와 WWW 서버 간에 연결을 만들 수 없는 경우 NAT 컨피그레이션 오류 때문일 수 있습니다. 보안 어플라이언스 로그에서 프로토콜이 보안 어플라이언스를 통해 변환을 생성하지 못했음을 나타내는 메시지를 확인합니다. 이러한 메시지가 나타나면 원하는 트래픽에 대해 NAT가 구성되었으며 잘못된 주소가 없는지 확인합니다.
%ASA-3-305006: portmap translation creation failed for tcp src inside:192.168.100.2/11000 dst dmz:10.10.10.10/23
xlate 항목을 지운 다음 이 오류를 해결하기 위해 NAT 문을 제거하고 다시 적용합니다.
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.
이 문제를 해결하려면 DNS 패킷 길이를 512-65535 사이로 늘리십시오.
예:
ciscoasa(config)#policy-map type inspect dns MY_DNS_INSPECT_MAP ciscoasa(config-pmap)#parameters ciscoasa(config-pmap-p)#message-length maximum <512-65535>
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
29-Sep-2006 |
최초 릴리스 |