• Tidak ada hasil yang ditemukan

DNS 와 DNS 체계 구축

N/A
N/A
Protected

Academic year: 2023

Membagikan "DNS 와 DNS 체계 구축"

Copied!
162
0
0

Teks penuh

(1)정보보호 보충자료. DNS 와 DNS 체계 구축.

(2) 목차 1. DNS 기본 개념. 2. ISC의 BIND 3. IPv6와 DNSv6 4. DNS 보안 강화. 2.

(3) 1. DNS 기본 개념               . DNS 탄생 배경 DNS 구성 요소와 구조 DNS 프로토콜 도메인(domain)과 존(zone) 자원 레코드 (Resource Record) 도메인 위임 관련 RR : SOA & NS 호스트 주소 관련 RR : A & AAAA 전자우편 서비스 관련 RR : MX 일반적인 DNS 도메인 위임설정 보안이 강화된 DNS 도메인 위임설정 DNS ZONE 관련 확장 – 기존 방법(AXFR) DNS ZONE 관련 확장 – NOTIFY DNS ZONE 관련 확장 – IXFR DNS ZONE 관련 확장 – Dynamic Update DNS 확장 - EDNS0 3.

(4) DNS 탄생 배경  DNS(Domain Name System) : 도메인 이름  네트워크 주소  Name system 중 하나 (URI, IRI, …)  역사적 배경  초기에 숫자 형식의 네트워크 주소 직접 사용  호스트 수가 늘어나면서 기억하기 쉬운 니모닉(호스트 이름) 이용  1970년대 초반 23개 호스트  1970년대 중반 이후 111개 호스트 : hosts.txt 파일을 ftp로 다운받아 이용  1983년 562개 호스트 : 위스콘신 대학에서 DNS 제안  DNS = 체계적인 도메인 이름체계 + 분산구조형 계층적. 도메인 데이터베이스 체계 4.

(5) DNS 구성 요소와 구조(1)  구성 요소  도메인 이름 공간(Domain Name Space) 및 자원 레코드(Resource Record)  네임서버(Name Server)  리졸버(Resolver) Domain name space. application. Resource Records. Name Server. DNS protocol udp 53 or tcp 53. Resolver. cache 5.

(6) DNS 구성 요소와 구조(2)  도메인 이름 공간 : 도메인 이름의 계층적 구조 공간  도메인 이름의 할당과 분배는 전세계적으로, 체계적으로 관리  국내 관리기관 : 한국인터넷진흥원(KISA : 과거 KrNIC)  국제 : InterNIC, APNIC(Asia-pacific NIC) 등.  자원 레코드 : 도메인 이름에 대해 필요한 인터넷 자원 정보를 매핑하는. 수단을 제공.  예: www.example.com 1800 IN A 192.0.2.101.  새로운 타입의 자원 레코드가 계속 정의 중.  네임 서버 : 도메인 트리의 일부분에 해당하는 정보를 지니고 전체 인터넷. 도메인 트리의 한 부분을 구성.  iterative DNS 서버 : 특정 질의에 대해 자신이 소유한 도메인 존의 정보만 그. 응답으로 제공하는 동작을 하는 DNS 서버  recursive DNS 서버 :  authoritative DNS 서버 : 도메인 네임 공간 상의 특정 영역에 대해 관리권한이 위임된 서버. 6.

(7) DNS 구성 요소와 구조(3)  리졸버 : 응용 프로그램과 DNS 간의 인터페이스 역할로서 도메인. 데이터베이스를 검색하는 기능.  전체 도메인 데이터베이스를 검색할 수 있도록 도메인 네임 시스템 검색의 시작점이.   . . 되는 루트 네임서버(root name server)의 IP 주소 정보를 자신의 환경 구성 파일에 저장 동일한 DNS 질의를 짧은 시간 내에 빈번하게 반복하는 것을 방지하기 위해 캐쉬(cache)을 내부에 구현 대부분의 호스트에는 전체 리졸버 기능이 아닌 스터브 리졸버(Stub Resolver) 형태로 구현 스터브 리졸버 : 호스트 내의 응용 프로그램에 프로그래밍 인터페이스를 제공하고 응용 프로그램의 질의 요청이 있는 경우, 시스템에 지정된 리졸버(Resolver) 역할의 네임서버(name server)로 DNS 질의를 요청 스터브 리졸버의 설정 파일 내에는 리졸버 네임 서버의 주소만 저장 (Windows XP에서 설정하는 네임 서버의 주소, UNIX 계열 호스트의 /etc/resolv.conf에 저장되는 주소).  물리적 구현 요소 : 네임서버, 리졸버, 스터브 리졸버. 7.

(8) DNS 프로토콜  네트워크를 통해 DNS 구현요소 간 DNS 질의(DNS query)와.   . . 응답(DNS response)를 수행하기 위한 서버-클라이언트 모델의 응용 계층 프로토콜 네임서버와 리졸버간, 리졸버와 스터브 리졸버간에 사용 TCP 및 UDP 포트 번호 53번 사용 일반적으로 UDP 포트 53을 사용하여 질의와 응답이 이루어지나, DNS 메시지 영역의 길이가 512 바이트를 초과하는 경우, TCP 53번 포트를 사용하는 TCP 연결을 통한 DNS 질의응답이 이루어지는 메커니즘이 존재 일반적으로 TCP를 이용하는 경우는 영역 전체의 데이터를 전송하는 zone transfer. 8.

(9) 도메인(domain)과 존(zone) (1)  도메인 네임공간  인터넷 상에 존재하는 리소스에 대한 네임체계를 어떻게 체계화할 것인가에 대한. 구성방안.  계층적인 도메인 네임 구조  루트 도메인(root domain)으로부터 시작하여 각 서브 도메인으로. 위임(delegation)하는 구조로 형성  루트 도메인은 특수한 도메인으로 모든 도메인의 부모 도메인.  도메인 네임 표현  도메인 네임은 “.”(dot)로 구분된 레이블로 구조화된 이름으로 표시  레이블은 0~63 옥텟의 크기를 가지는 숫자/문자의 조합으로 부여  루트 도메인의 레이블은 널 레이블로 그 길이가 0인 특수한 레이블로 정의  루트가 아닌 다른 노드들은 1~63 옥텟 크기의 레이블을 부여  ASCII 코드 중 “a”에서 “z”까지(또는 “A”에서 “Z”까지)의 문자, 그리고 “0”에서. “9”까지의 숫자, 그리고 기호문자 중 “-”(하이픈)만을 사용  첫 문자에는 “-”이 사용할 수 없음. 9.

(10) 도메인(domain)과 존(zone) (2). 10.

(11) 도메인(domain)과 존(zone) (3) . FQDN(Fully Qualified Domain Name) : 도메인 네임을 루트 도메인으로부터 시작하는 전체 이름의 표기를 사용한 것  최대 255 옥텟의 길이 . . PQDN(Partially Qualified Domain Name) 상위 도메인 네임이 생략된 도메인 네임  www.example.co.kr로 표기하는 경우 www.example.co.kr.example.co.kr.으로 잘못된 해석 . . 최상위 도메인(TLD, Top Level Domain) 루트 노드 다음 계위의 노드  예: com, org, net, kr, jp, int 등  범용 도메인은 gTLD(generic TLD)  국가별 도메인은 ccTLD(country code TLD) .  http://www.iana.org/cctld/cctld-whois.htm에서 확인 가능. . 인터넷 인프라 도메인 : 특수한 도메인으로 ARPA 도메인을 지칭  164.arpa, in-addr.arpa, ip6.arpa, uri.arpa, urn.arpa 등의 하위 도메인 존재. . 2단계 도메인(SLD, Second Level Domain) 최상위 도메인으로부터 분기된 다음 계위(level)의 노드  예: co.kr, or.kr, ne.kr 등 . 11.

(12) 도메인(domain)과 존(zone) (4)  도메인 존(domain zone)  도메인 트리 구조에서 특정 노드와 그 하위 노드를 포함하는 일정한 영역을 지칭  단일 관리자에 의해 관리되는 도메인 네임 영역.  “example.co.kr”  “example.co.kr”이라는 도메인 등록 절차를 마침으로써 해당 도메인에 대한 권한 위임  관리자는 해당 도메인에 속한 노드에 필요에 따라 원하는 레이블을 부여하여 새로운. 도메인 네임을 생성  웹 서버에 대해서는 “www”, 메일 서버에 대해서는 “mail”, 도메인의 DNS 서버에 대해서는 “ns1”과 “ns2"의 레이블을 갖는 노드를 생성, 설정.  .co.kr 도메인  example.co.kr 도메인을 포함하는 도메인  co.kr 도메인 존은 example.co.kr에 대한 위임 설정 관리만을 수행  example.co.kr 도메인이 가지고 있는 도메인 네임에 대한 관리는 안 함. 12.

(13) 자원 레코드 (Resource Record) (1)  도메인 네임과 인터넷 자원 정보를 매핑하여 하나의. 분산 구조형 데이터베이스를 구성하기 위한 수단. 13.

(14) 자원 레코드 (Resource Record) (2)  도메인 네임이 갖는 속성을 표현  하나의 도메인 네임이 다수의 자원 레코드를 가질 수 있음  자원 레코드는 다양한 인터넷 자원 정보를 표시하는 체계로서 추가 확장. 정의될 수 있는 유연한 구조  일반적 구조.  <Name><TTL><Class> <Type><RDATA>  <RDATA>는 각 타입마다 다른 형식인데 일반적으로 <RDLength><RRData> 형태  <Name> : 도메인 네임을 의미하며 데이터를 검색하기 위한 키 인덱스 역할  <TTL> : Time To Live  리졸버의 캐쉬 테이블에 얼마나 오래 존속할 것인지를 결정하는 초 단위의 값  0~2147483647  <Class> : 의미가 없어진 필드로 IN(Internet)만 이용  <Type> : 각 자원 레코드의 유형을 지정하는 필드  A RR : 1  NS RR : 2  SOA RR : 6 등. 14.

(15) 자원 레코드 (Resource Record) (3) TYPE. CODE. A. 1. A host address. 32bit IPv4 주소. NS. 2. An authoritative name server. 네임서버 도메인 네임 지정. MD. 3. A mail destination(Obsolete-useMX). 폐지. MF. 4. A mail forwarder(Obsolete-use MX). 폐지. CNAME. 5. The canonical name for an alias. Alias 도메인 네임 설정 원래 도메인 네임을 매핑. SOA. 6. Marks the start of a zone of authority. Zone의 속성 정보 지정. MB. 7. A mailbox domain name(EXPERIMENTAL). 실험적 구현. MG. 8. A mail group member(EXPERIMENTAL). 실험적 구현. MR. 9. A mail rename domain name(EXPERIMENTAL). 실험적 구현. NULL. 10. A null RR(EXPERIMENTAL). 실험적 구현. WKS. 11. A well known service description. 호스트의 특정 IP주소 및 해당 IP 주소를 통해 제공하는 TCP/ UDP 서 비스 포트정보 지정. PTR. 12. A domain name pointer. 도메인 네임을 매핑함 주로 IP 주소의 도메인네임 지정에 사용. HINFO. 13. Host information. 호스트의 CPU와 OS 정보. MINFO. 14. Mailbox or mail list information (EXPERIMENTAL). 실험적 구현. MX. 15. Mail exchange. 메일서버의 도메인 네임 지정. TXT. 16. Text strings. 문자열 정보를 지정. RP. 17. For Responsible Person. 도메인 네임별 담당자 정보. AFSDB. 18. For AFS DataBase location. AFS DB 위치정보. 19. For X.25 PSDN address. 도메인 네임의 X.25 주소정보. X25 15. 의미. 비고.

(16) 자원 레코드 (Resource Record) (4) TYPE. CODE. ISDN. 20. For ISDN address. RT. 21. For Route Through. NSAP. 22. For NSAP address. NSAP 주소정보. NSAP-PTR. 23. SIG. 24. For security signature. 보안 서명을 저장. KEY. 25. For security key. 보안 키를 저장. PX. 26. X.400 mail mapping information. GPOS. 27. Geographical Position. 도메인 네임의 지리적 위치정보 위도, 경도, 고도. AAAA. 28. IP6 Address. 128 bit IPv6 주소정보. LOC. 29. Location Information. NXT. 30. Next Domain. EID. 31. Endpoint Identifier. NIMLOC. 32. Nimrod Locator. SRV. 33. Server Selection. ATMA. 34. ATM Address. NAPTR. 35. Naming Authority Pointer. KX. 36. Key Exchanger. CERT. 37. CERT. A6. 38. A6 (IPv6 Address). IPv6 Prefix 및 주소정보 - 폐지. DNAME. 39. DNAME. A6과 함께 사용하는 도메인 매핑 정보 - 폐지. 40. SINK. SINK. 16. 의미. 비고 도메인 네임의 ISDN 주소정보.

(17) 자원 레코드 (Resource Record) (5) TYPE. CODE. OPT. 41. OPT. APL. 42. APL. SSHFP. 44. SSH Key Finger print. UINFO. 100. UID. 101. GID. 102. UNSPEC. 103. TKEY. 249. Transaction Key. DNS 질의에만 사용. TSIG. 250. Transaction Signature. DNS 질의에만 사용. IXFR. 251. Incremental transfer. DNS 질의에만 사용. AXFR. 252. Transfer of an entire zone. DNS 질의에만 사용. MAILB. 253. mailbox-related RRs (MB, MG or MR). DNS 질의에만 사용. MAILA. 254. Mailagent RRs (Obsolete - see MX). DNS 질의에만 사용. *. 255. A request for all records. DNS 질의에만 사용. 17. 의미. 비고.

(18) 도메인 위임 관련 RR : SOA & NS (1)  SOA(Start of a zone Of Authority)  도메인 존에 대한 정보를 표시  <Name><TTL><Class><Type=SOA><RDATA>  RDATA : <MNAME><RNAME><SERIAL><REFRESH><RETRY><EXPIRE><MINI MUM>  <MNAME> : 해당 존의 최상위 마스터 네임서버(primary master name server). 도메인 네임을 지정하는 필드.  해당 존에 대한 전적인 관리권한을 지닌 마스터 네임서버  DNS UPDATE와 같은 도메인 네임 및 자원 레코드의 동적 갱신이나 존 데이터 전송. 메커니즘에 있어 중요한 역할  반드시 FQDN으로 표기.  <RNAME> : 해당 존을 관리하는 담당자의 이메일 주소를 표기하는 필드  <SERIAL> : 해당 존의 변경에 따른 버전번호 정보 필드  존 내부의 데이터가 변경될 때마다 <SERIAL> 필드의 버전 번호는 하나 이상 증가  해당 존의 변경 여부를 파악할 수 있는 중요한 정보를 제공  수작업으로 변경 작업을 하는 경우에는 일반적으로 YYYYMMDDnn 의 형식으로 버전 번호를 관리  YYYY=년도, MM=월, DD=일, nn=일련번호. 18.

(19) 도메인 위임 관련 RR : SOA & NS (2)  <REFRESH>, <RETRY>, <EXPIRE> : 존에 대한 정보를 갱신하는 메커니즘에. 있어서의 타이머 시간 정보를 지정  <REFRESH> : 슬레이브 네임서버가 해당 존에 대한 변경 여부를 확인하는 주기  슬레이브 네임서버는 <REFRESH>에 지정된 주기로 마스터 네임서버에 대하여 대상. 존(zone)의 SOA 리소스 레코드를 질의하여 <SERIAL> 버전이 자신이 알고 있는 <SERIAL> 버전을 기준으로 갱신 여부를 확인.  <RETRY> : <REFRESH>에 의한 갱신 시도가 실패한 경우, 다시 존에 대한 갱신을. 시도하는 타이머 시간.  <RETRY> 값은 <REFRESH> 값보다는 작은 값.  <EXPIRE> : 슬레이브 네임서버가 최상위 마스터 네임서버로 대상 존에 대한 갱신. 여부 확인에 실패한 경우, 슬레이브에 존재하는 동일 존의 복사본을 어느 정도 시간만큼 유효한 것으로 유지할 것인가에 대한 설정 값.  <RETRY>나 <MINIMUM> 값보다 큰 값으로 설정하며 일반적으로 권장하는 설정값은. 2주~4주 정도.  <MINIMUM> : 존에 속한 모든 자원 레코드의 디폴트 TTL(default TTL) 값을 지정  리졸버의 캐쉬에 리소스 레코드를 저장, 존속시키는 기간으로 사용  약 1~5일의 기간 설정 권장.  하나의 존에 반드시 하나의 SOA 레코드 지정. 19.

(20) 도메인 위임 관련 RR : SOA & NS (3).  NS(authoritative Name Server)  특정 도메인 존이 어느 네임서버에 위임되어 설정되어 있는지를 표시  <Name><TTL><Class><Type=NS><RDATA>  RDATA : <NSDNAME>  <NSDNAME> : NS 레코드를 소유한 <Name>의 도메인 존을 가지고. 있는 네임서버의 도메인 네임을 지정  FQDN의 도메인 네임을 설정  NS 레코드는 해당 존이 실제로 위치한 네임 서버를 도메인 네임으로 지정.  NS RR의 2가지 용도.  상위 도메인 존에서 위임되는 도메인 존의 네임서버 지정  NS RR과 네트워크 주소를 알려주는 A RR을 같이 저장.  해당 존의 SOA 레코드와 함께 해당 존의 네임 서버 지정.  SOA의 <MNAME>에 저장된 것이 마스터 서버이고 나머지는 슬레이브 서버  존 관리 동작(동적 갱신, 갱신 통보(NOTIFY), 존 데이터 전송 등)에 이용. 20.

(21) 도메인 위임 관련 RR : SOA & NS (4) co.kr <Name=example.co.kr.><TTL><Class><Type=NS><NSDNAME=ns1.example.co.kr.> <Name=example.co.kr.><TTL><Class><Type=NS><NSDNAME=ns2.example.co.kr.> <Name=ns1.example.co.kr.><TTL><Class><Type=A><ADDRESS=192.0.2.11> <Name=ns1.example.co.kr.><TTL><Class><Type=A><ADDRESS=192.0.2.12>. 위임. example.co.kr <Name=example.co.kr.><TTL><Class><Type=SOA><MNAME=ns1.example.co.kr.> <RNAME><SERIAL><REFRESH><RETRY><EXPIRE><MINIMUM> <Name=example.co.kr.><TTL><Class><Type=NS><NSDNAME=ns1.example.co.kr.> <Name=example.co.kr.><TTL><Class><Type=NS><NSDNAME=ns2.example.co.kr.> <Name=ns1.example.co.kr.><TTL><Class><Type=A><ADDRESS=192.0.2.11> <Name=ns2.example.co.kr.><TTL><Class><Type=A><ADDRESS=192.0.2.12>. 21.

(22) 호스트 주소 관련 RR : A & AAAA  A RR : IPv4 주소 정보  <Name><TTL><Class=IN><Type=A><RDATA>  <RDATA> : <Address> 32 비트 IPv4 주소  AAAA RR : IPv6 주소 정보  <Name><TTL><Class=IN><Type=AAAA><RDATA>  <RDATA> : <Address> 128 비트 IPv6 주소  특정 도메인 네임에 대한 A 타입의 질의는 해당 도메인이. 소유한 도메인  임의의 여부는 파악 22. A RR만 응답하고, AAAA 타입의 질의에 대해서는 해당 네임이 소유한 AAAA RR 정보만 응답 도메인 네임이 IPv4 또는 IPv6 주소를 갖고 있는지의 A 타입의 질의와 AAAA 타입의 질의를 모두 수행하여.

(23) 전자우편 서비스 관련 RR : MX  메일 교환(Mail Exchange)을 의미하며 메일 서버의 정보  <Name><TTL><Class><Type=MX><RDATA>  <RDATA> : <PREFERENCE><EXCHANGE>  <PREFERENCE> : 우선순위를 지정하는 필드로 뒤에 지정되는 메일 서버에 대한 선호도를 지정  외부에서 메일을 전송하는 메일 서버는 가장 값이 적은 <PREFERENCE> 필드. 값을 갖는 자원 레코드의 메일서버 도메인 네임을 선택  다수의 메일 서버를 운영하면서 우선순위 설정이 가능.  <EXCHANGE> : 메일서버의 도메인 네임을 지정.  MX 레코드에 대한 질의는 MX 레코드와 MX 레코드에 지정된. 메일서버 도메인 네임의 IP 주소를 추가 정보로 응답. example.co.kr <Name=example.co.kr.><TTL><Class><Type=MX><PREFERENCE=10> <EXCHANGE=mail.example.co.kr.> <Name=mail.example.co.kr.><TTL><Class=IN><Type=A><ADDRESS=192.0.2.21> 23.

(24) 일반적인 DNS 도메인 위임설정 (1) Kr. co.kr zone example.co.kr.. co.kr. Name server. Resolution 방향. NS ns1.example.co.kr.. recursive Name server. co example.co.kr.. NS ns2.example.co.kr.. example.co.kr.. NS ns3.example.co.kr.. 위임 Name Server 재시. 위임. Name server ns1.example.co.kr.. DNS 질의. example Master Name Server. example.co.kr. zone example.co.kr.. SOA ns1.example.co.kr.. example.co.kr.. NS ns1.example.co.kr.. Name server ns2.example.co.kr.. …. Master name server. example.co.kr.. NS ns2.example.co.kr.. Slave name server. example.co.kr.. NS ns3.example.co.kr.. Slave name server. Slave Name Server. ZONE TRANSFER. 24. example Name server ns3.example.co.kr. Slave Name Server. example.

(25) 일반적인 DNS 도메인 위임설정 (2)  도메인 co.kr.  example 노드를 생성하고 이 노드의 도메인 네임에 대해 NS RR 설정  현재 example.co.kr.에서는 3개의 네임서버를 사용 중이며, 각각을 NS RR로 설정  도메인 example.co.kr.  SOA 리소스 레코드의 <MNAME> 필드로 해당 도메인 존의 최상위 마스터 네임서버의 정보를 지정  현재 example.co.kr.에서는 3개의 네임서버를 사용 중이며, 각각을 NS RR로 설정  NS1이 마스터 서버로 동작하며, 나머지 서버는 슬레이브로 동작하여 Dynamic Update, Notify, Zone Transfer 등 구현. 25.

(26) 보안이 강화된 DNS 도메인 위임설정 (1) Kr co.kr zone. co.kr. Name server. Resolution 방향. recursive Name server. co example.co.kr.. NS. ns2.example.co.kr.. example.co.kr.. NS. ns3.example.co.kr.. 위임 Name Server 재시 Name server ns1.example.co.kr.. 위임. DNS 질의. example Master Name Server. example.co.kr. zone example.co.kr.. SOA ns1.example.co.kr.. Name server ns2.example.co.kr.. ….. example.co.kr.. NS. ns1.example.co.kr.. example.co.kr.. NS. ns2.example.co.kr.. Slave name server. example.co.kr.. NS. ns3.example.co.kr.. Slave name server. Master name server Slave Name Server. ZONE TRANSFER. 26. example Name server ns3.example.co.kr. Slave Name Server. example.

(27) 보안이 강화된 DNS 도메인 위임설정 (2)  도메인 존 example.co.kr.의 최상위 마스터 네임서버가 상위 도메인  .  . co.kr.에서 NS 레코드로 지정되어 있지 않은 구성 리졸버에 의한 통상적인 리졸루션 절차에 있어서는 ns2.example.co.kr. 서버와 ns3.example.co.kr. 서버를 참조 도메인 존의 관리측면에 있어서는 ns1.example.co.kr. 서버에서 관리가 이루어지며 나머지 네임서버 ns2.example.co.kr.과 ns3.example.co.kr. 서버가 ns1.example.co.kr.의 마스터 존의 내용을 복사하여 DNS 서비스를 제공 최상위 마스터 네임서버가 방화벽 내부에 존재하고 외부 인터넷으로부터의 접근이 보안적 측면에서 차단되도록 설정하는 경우에 해당 Dynamic Update 메커니즘에서 마스터 네임서버에 직접 접근이 불가능하므로 슬레이브 네임서버로 DNS Dynamic Update 요청을 하고 해당 슬레이브 네임서버는 마스터 네임서버로 요청을 전달하는 방식으로 동작. 27.

(28) DNS ZONE 관련 확장 – 기존 방법(AXFR) (1)  도메인 존을 2개 이상의 네임서버로 마스터 존과 이 마스터. 존의 복사본인 슬레이브 존을 설정하는 구성이 가능  슬레이브 네임서버가 마스터 네임서버로 접근하여 마스터 존이 갱신되었는지의 여부를 확인하는 절차를 주기적으로 수행 (SOA RR에서 <REFRESH> 정의)  마스터 존의 SOA 레코드 <SERIAL> 필드 버전번호가 슬레이브 존의 <SERIAL> 번호보다 증가한 것을 확인한 경우, 마스터 네임서버에 대해 존 전송(zone transfer) 요청  AXFR ZONE TRANSFER : TCP 53번 포트를 사용하여 해당 도메인 존의 모든 내용을 전송. 28. MCC Laboratory.

(29) DNS ZONE 관련 확장 – 기존 방법(AXFR) (2) name server ns1.example.co.kr.. name server ns2.example.co.kr. example. Master Name Server. name server ns3.example.co.kr. example. Slave Name Server DNS Query Example.co.kr.SOA?. example Slave Name Server. Example.co.kr.zone SOARR <REFRESH> expire. UDP 53 DNS Query Response Example.co.kr.SOA <SERIAL>….. UDP 53 DNS Query Response example.co.kr. AXFR <RR List> TCP 53. TCP 53. SOARR <SERIAL> check. zone의 모든 RR 전송. example.co.kr. zone update. DNS Query example.co.kr. SOA ? UDP 53. 29. example.co.kr. zone SOA RR<REFRESH > expire.

(30) DNS ZONE 관련 확장 – NOTIFY (1)  기존 방법에서는 마스터 존의 갱신이 있은 후 최대. <REFRESH>시간의 지연이 발생  마스터 네임서버가 마스터 존에 대한 수정 및 갱신이 발생한 경우, 그 존의 <SERIAL> 버전 번호를 증가시킨 후 SOA 레코드 정보를 모든 슬레이브 네임서버로 NOTIFY 메시지로 통보  모든 슬레이브 네임서버는 마스터 존에 대한 갱신이 발생한 시점에 마스터 존의 SOA 레코드 <SERIAL> 버전번호를 체크  도메인 존에 대한 갱신이 모든 슬레이브 네임서버로 신속한 전파와 반영이 가능 30.

(31) DNS ZONE 관련 확장 – NOTIFY (2) name server ns1.example.co.kr.. name server ns2.example.co.kr. example. Master Name Server example.co.kr. zone RR DATA update SOA RR <SERIAL> ++. example Slave Name Server. DNS Query (NOTIFY) example.co.kr SOA <SOA RR> DNS Query Response (NOTIFY) example.co.kr SOA. UDP 53 UDP 53 UDP 53 UDP 53 TCP 53 TCP 53. name server ns3.example.co.kr. example Slave Name Server. UDP 53. UDP 53. UDP 53 UDP 53. DNS Query example.co.kr SOA ? DNS Query example.co.kr SOA RR Data. DNS Query example.co.kr SOA ? DNS Query Response example.co.kr SOA RR Data. DNS Zone Transfer (AXFR/IXFR). example.co.kr. zone update DNS Zone Transfer (AXFR/IXFR) example.co.kr. zone update. 31.

(32) DNS ZONE 관련 확장 – IXFR (1)  슬레이브 네임서버의 요청으로 모든 내용을 전송하는. AXFR과는 달리 마스터 네임서버에서 마스터 존의 변경된 요소 부분만 전송하는 메커니즘(NOTIFY와 같이 이용)  전송 DNS 메시지에서 <SOA 레코드><변경된 리소스 레코드><SOA 레코드>의 구조로 변경내역 데이터만 전송하여 슬레이브 네임서버가 해당 레코드의 변경 내역만 반영  UDP 포트 53번 / TCP 포트 53번 포트를 선택적으로 이용  IXFR 존 전송요청을 슬레이브 네임서버가 지원하지 못하는 경우에는 슬레이브 네임서버에서 동일한 존에 대해 AXFR 존 전송 요청. 32.

(33) DNS ZONE 관련 확장 – IXFR (2) name server ns1.example.co.kr.. name server ns2.example.co.kr. example. Master Name Server example.co.kr. zone RR DATA update SOA RR <SERIAL> ++. name server ns3.example.co.kr. example. Slave Name Server. DNS NOTIFY. example Slave Name Server. UDP 53. UDP 53. DNS Query & Response zone SOA ? UDP 53 UDP 53. TCP 53. TCP 53. TCP 53. TCP 53. UDP 53 DNS Query example.co.kr. IXFR slave name server <SOA RR> DNS Query Response example.co.kr. IXFR <RR DATA Updated Liists>. 갱신된 RR 리스트만 전송함 SLAVE 서버의 SOA <SERIAL>을 참조하여 해당 <SERIAL> 버전까지의 갱신 RR 리스트 전송. example.co.kr. zone update DNS Query example.co.kr. IXFR slave name server <SOA RR> DNS Query Response example.co.kr. IXFR <RR DATA Updated Lists>. example.co.kr. zone update. 33.

(34) DNS ZONE 관련 확장 – Dynamic Update (1)  네임서버에 대해 원하는 도메인 네임에 대한 자원 레코드의 생성, 삭제. 요청을 함으로써 도메인 존에 대한 동적 갱신이 가능  진행 과정.  대상 도메인 존이 설정되어 있는 마스터 네임서버의 위치를 파악하기 위한 절차  변경 대상 도메인 네임에 대해 SOA 타입 질의  변경 대상 도메인 네임과 자원 레코드에 대한 변경 절차  DNS 질의 메시지 헤더 플래그의 동작코드(operation code)를 Dynamic Update (5)로 설정하고 존 섹션(zone section)과 업데이트 섹션(update section)에 각각 수정 대상 도메인 존(zone), 수정 자원 레코드 내용으로 채워 해당 존의 마스터 네임서버로 전달.  마스터 네임서버에 직접 접근이 불가능한 경우  슬레이브 네임서버에게 dynamic update 요구 전달  슬레이브 네임서버에서 마스터 네임서버에게 전달  반영 결과가 슬레이브 네임서버를 통해 제공.  보안에 대한 고려 필요. 34.

(35) DNS ZONE 관련 확장 – Dynamic Update (2) kr co.kr. name server recursive name server. co 위임. name server ns1.example.co.kr.. Master Name Server. Host. (1) DNS Query new.example.co.kr SOA ? DNS Query Response <example.co.kr SOA RR>. example. (2) DNS DYNAMIC UPDATE new.example.co.kr. 180 IN A 10.0.0.100. name server ns2.example.co.kr.. Slave Name Server. example name server ns3.example.co.kr.. DNS Dynamic Update new.example.co.kr. 생성의 경우. 반드시 primary master name server에 update. <new.example.co.kr. 180 IN A 10.0.0.100> RR을 example.co.kr. zone의 master zone에 update.. ZONE TRANSFER. Slave Name Server. 35. example DNS Dynamic Update에 의한 변경 사항은 Zone Transfer에 의해 각 name server에 반영..

(36) DNS 확장 - EDNS0  DNS의 한계를 극복하기 위해 확장된 옵션 RR  하나의 예로서, DNS는 UDP 메시지로 질의 응답할 때, DNS. 메시지 크기가 512 바이트를 초과할 수 없다는 한계  네임서버에서 DNS 응답을 할 때, 512 바이트를 초과하는 DNS 메시지가 생성되었다면, 네임서버는 DNS Header flag 중 TC(Truncation) 플래그를 1로 세팅하여 응답  TC 플래그가 세팅된 DNS 응답메시지를 받은 호스트는 이 응답 메시지를 폐기하고 동일한 내용의 DNS 질의를 TCP 53을 사용하여 재질의  EDNS0의 각 필드 중 buffer size를 지정하는 필드가 있으며, buffer size를 512 바이트 이상의 값, 즉 1024 byte, 2048 byte 등으로 지정하는 경우, 512 바이트 이상의 DNS 응답 메시지를 UDP로 수신 가능 36.

(37) 2. ISC의 BIND               . ISC 소개 WWW.ISC.ORG 초기화면 OARC 소개 OARC.ISC.ORG 초기화면 Bind 8.x Bind 9.x Bind 설치 과정 Bind 설정하기 db.DOMAIN 파일 설정 db.ADDR 파일 설정 Bind 환경 설정 파일 영역 데이터 파일에서의 축약 사용 Bind 운영 Bind 관련 FAQ dig 사용법 37.

(38) ISC 소개  양질의 핵심 소프트웨어, 프로토콜, 운영 절차를 개발하고. 유지함으로써 인터넷의 하부구조를 지원하기 위한 비영리 공익 집단  현재 ISC가 지원하고 있는 소프트웨어  BIND  DHCP.  INN  OpenReg.  Operations Analysis and Research Center (OARC)  DNS를 지원하기 위해 2003년 10월 결성  주기적으로 ISC Internet Domain Survey를 발표  BIND는 전세계 DNS 서버의 70% 이상 점유(2004년 기준)  설치 대수 2위 Microsoft DNS Server 21.7%. 38.

(39) WWW.ISC.ORG 초기 화면. 39.

(40) OARC 소개 (1)  설립목적과 배경  루트 네임서버 운영자들과 선도 연구자들이 모여 신뢰할 수 있는 플랫폼을 구축하는 것이 목적  DNS의 신뢰성 있는 운영은 인터넷의 지속적인 운영을 위한 중요한 요구사항이며, DNS가 중단되면 인터넷 또한 중단되는 중요한 상황임에도 불구하고, DNS를 계속적으로 작동하게 하는 어떠한 공식적인 메커니즘이 존재하지 않다는 인식에서 출발  역할  정보의 공유와 분석을 위한 포럼과 플랫폼 제공  글로벌 DNS에 대한 공격 또는 위기상황이 나타나면 이에 대한 정보 공유를 위한 중립적 메커니즘 제공  구성원들 간의 글로벌 DNS의 운영의 이해를 위한 정보 공유  더욱 안전하고 신뢰성 있는 글로벌 하부구조 제공 40.

(41) OARC 소개 (2)  OARC의 기능  DNS와 관련된 공격이나 치명적인 사건에 대한 정보를 DNS 운영자 집단에게 신속히. 전파하고 공유할 수 있는 신뢰할 수 있는 플랫폼 제공.  ISC로부터의 여과된 채널을 통해 조기경고, 공격, 글로벌 DNS의 다른 고장에 대한 지속적인. 분석 제공  입력 데이터를 분석하여 사고 상황과 이에 대한 가능한 해결방법(solution)에 대한 전문가 의견 제공.  주요 네임서버의 부하와 성능을 측정 발표  DNS 구현이나 망 요소들의 테스트  DNS 성능에 대한 장기적인 분석  최종 사용자나 개발업체들에게 관련 중요 정보를 제공하는 교육 홍보 기능.  주요 참여자  루트, TLD, 혹은 상용 DNS 서버의 운영자  DNS 소프트웨어나 망 장비 개발자  주요 정부 및 법 관련 기관  DNS에 관심이 많거나 전세계의 DNS 정보 흐름과 상태에 관심이 많은 연구자. 41.

(42) dig 사용법 (1)  dig (Domain Information Groper) 개요  BIND DNS 배포 패키지에 기본적으로 포함된 DNS 진단용 유틸리티  DNS lookup 유틸리티의 일종  널리 사용되어 왔던 nslookup을 대체  nslookup에 비해 dig이 DNS의 추가 표준사항을 충실히 반영한 진단 도구.  DNS 네임서버 구성과 도메인 설정이 완료된 후, 인터넷 일반 사용자의. 입장에서 설정한 도메인네임에 대한 DNS 질의 응답이 정상적으로 이루어지는지 확인 점검  ISP 네트워크 관리자가 ADSL/VDSL 가입자의 장애현상에 대한 원인파악을 위해 DNS 네임서버 문제 여부 진단  Unix나 Linux 계열 OS에는 dig이 포함, OS 설치 시에 기본적 설치  Windows 계열 OS 경우, BIND DNS 설치패키지를 다운로드 후 설치 필요. 42.

(43) dig 사용법 (2)  도메인네임에 대한 질의  형식 : dig [@server] [name] [type]  server  DNS 질의를 할 대상 네임서버  네임서버의 도메인네임(domain name) 또는 IP 주소 지정  IP 주소 지정의 경우 IPv4 주소 또는 IPv6 주소 지정 가능.  name  질의 대상 도메인 네임  지정하지 않은 경우 : 루트 도메인(.)에 대해서 질의.  type  질의 타입  지정하지 않은 경우  name이 지정되지 않은 경우: 루트 도메인(.)의 NS 타입 질의  name이 지정된 경우: 지정된 도메인네임의 A 타입 질의. 43.

(44) dig 사용법 (3)  사용 예:. [root@lily 13u1]# dig mmu.ac.kr A ; <<>> DiG 9.8.4-P1-RedHat-9.8.4-3.P1.fc16 <<>> mmu.ac.kr A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41848 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;mmu.ac.kr.. IN. A. ;; ANSWER SECTION: mmu.ac.kr. 3600. IN. A. ;; ;; ;; ;;. 44. Query time: 0 msec SERVER: 203.232.248.5#53(203.232.248.5) WHEN: Mon Apr 29 10:28:19 2013 MSG SIZE rcvd: 43. 202.30.49.100.

(45) dig 사용법 (4)  IP 주소(IPv4, IPv6)에 대한 역변환 질의 형식 : dig [@server] -x ip_address -x ip_address  역변환 질의 대상 IP 주소 지정  IPv4의 경우: in-addr.arpa. 도메인네임으로 변환 후 질의  IPv6의 경우: ip6.arpa. 도메인네임으로 변환 후 질의. 45.

(46) dig 사용법 (5)  사용 예: IPv4 주소 역변환 # dig -x 203.232.252.110. ; <<>> DiG 9.8.4-P1-RedHat-9.8.4-3.P1.fc16 <<>> -x 203.232.252.110 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4037 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0. ;; QUESTION SECTION: ;110.252.232.203.in-addr.arpa. IN. PTR. ;; ANSWER SECTION: 110.252.232.203.in-addr.arpa. 3600 IN. PTR. ;; ;; ;; ;;. 46. Query time: 0 msec SERVER: 203.232.248.5#53(203.232.248.5) WHEN: Mon Apr 29 10:29:42 2013 MSG SIZE rcvd: 74. lily.mmu.ac.kr..

(47) dig 사용법 (6) . 사용 예: IPv6 주소 역변환. # dig -x 2001:6b0:1:ea:a00:20ff:fe8f:708f. ; <<>> DiG 9.8.4-P1-RedHat-9.8.4-3.P1.fc16 <<>> -x 2001:6b0:1:ea:a00:20ff:fe8f:708f ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51837 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;f.8.0.7.f.8.e.f.f.f.0.2.0.0.a.0.a.e.0.0.1.0.0.0.0.b.6.0.1.0.0.2.ip6.arpa. IN PTR. ;; ANSWER SECTION: f.8.0.7.f.8.e.f.f.f.0.2.0.0.a.0.a.e.0.0.1.0.0.0.0.b.6.0.1.0.0.2.ip6.arpa. 3600 IN PTR renskav.stacken.kth.se. ;; AUTHORITY SECTION: a.e.0.0.1.0.0.0.0.b.6.0.1.0.0.2.ip6.arpa. 3600 IN NS ns.stacken.kth.se. ;; ADDITIONAL SECTION: ns.stacken.kth.se. ns.stacken.kth.se. ;; ;; ;; ;;. 47. 2047 5646. Query time: 1232 msec SERVER: 203.232.248.5#53(203.232.248.5) WHEN: Mon Apr 29 10:30:36 2013 MSG SIZE rcvd: 187. IN IN. A AAAA. 130.237.234.17 2001:6b0:1:ea::100.

(48) dig 사용법 (7)  dig 질의결과 출력내용 분석  dig 출력내용은 DNS 메시지의 Header, Question Section, Answer Section, Authority      . Section, Addition Section의 구조에 맞추어 출력 끝 부분에 dig이 첨가하는 부가적인 정보로써 DNS 응답소요 시간, DNS 응답서버 정보, DNS 메시지 사이즈 정보 등을 출력 ; <<>> DiG 9.2.3 <<>> www.nic.or.kr A ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2  opcode: DNS 응답 메시지의 operation code  QUERY : Standard Query  .  . 48. IQUERY STATUS NOTIFY UPDATE. : Inverse Query (현재는 사용 않음) : Server Status Request : DNS Notify Message : DNS Dynamic Update Message.

(49) dig 사용법 (8)  status: DNS 응답메시지의 RCODE(Response Code) 표시  NOERROR : No Error [Standard Query]  FORMERR : Format Error [Standard Query]  SERVFAIL : Server Failure [Standard Query]  NXDOMAIN : Non-Existent Domain [Standard Query]  NOTIMP : Not Implemented [Standard Query]  REFUSED : Query Refused [Standard Query]  YXDOMAIN : Name Exists when it should not [DNS UPDATE]  YXRRSET : RR Set Exists when it should not [DNS UPDATE]  NXRRSET : RR Set that should exist does not [DNS UPDATE]  NOTAUTH : Server Not Authoritative for zone [DNS UPDATE]  NOTZONE : Name not contained in zone [DNS UPDATE]  BADVERS : Bad OPT Version [EDNS0]  id: DNS transaction ID를 표시  flags: DNS Header Section의 flag 필드 값 표시  qr : Query/Response bit (set = Response)  rd : Recursion Desired (set = Recursion Desired)  ra : Recursion Available (set = Recursion Available, Server)  tc : Truncation (set = Message is truncated)  aa : Authoritative Answer (set = Authoritative Answer)  ad : 확장 flag, Authentic Data  cd : 확장 flag, Checking Disabled. 49.

(50) dig 사용법 (9)    . QUERY: DNS Query Section의 RR 개수 (항상 1) ANSWER: DNS Answer Section의 RR 개수 AUTHORITY: DNS Authority Section의 RR 개수 ADDITIONAL: DNS Additional Section의 RR 개수.  ;; QUESTION SECTION:  ;www.nic.or.kr..  ;; ANSWER SECTION:  www.nic.or.kr. 1772  ;; AUTHORITY SECTION:  nic.or.kr. 1798  nic.or.kr. 1798  ;; ADDITIONAL SECTION:  ns1.nic.or.kr. 1791  ns2.nic.or.kr. 1798 . 50. IN IN IN IN IN IN. A A NS NS A A. 202.30.50.90 ns2.nic.or.kr. ns1.nic.or.kr. 202.30.50.51 220.73.220.113.

(51) dig 사용법 (10)  ;; QUESTION SECTION: DNS 질의 내용을 표시  ;; ANSWER SECTION: DNS 질의 사항에 대한 DNS 응답 RR을.  ;;  ;;  ;;  ;;. 표시  ;; AUTHORITY SECTION: DNS 응답 RR이 속한 도메인 존의 NS RR 정보  ;; ADDITIONAL SECTION: 부가적인 RR 정보를 표시. Query time: 100 msec SERVER: 202.31.190.222#53(202.31.190.222) WHEN: Wed Jun 23 19:18:52 2004 MSG SIZE rcvd: 115.  ;; Query time: DNS 질의 메시지 발송시점에서 응답시점까지의. 소요시간  ;; SERVER: DNS 응답 메시지를 보내온 질의응답 네임서버  ;; WHEN: DNS 응답 메시지를 받은 시점의 date & time  ;; MSG SIZE rcvd: 응답 받은 DNS 메시지의 size 표시 (byte 단위). 51.

(52) 3. IPv6와 DNSv6  IPv6 개요  DNSv6 개요  IPv6 DNS 시스템 구성을 위한 사전 검토 사항  IPv6 DNS 설치 및 구동  IPv6 DNS FAQ  IPv6 Socket Programming  IPv6 DNS 이용 Programming 예제  Dual stack IPv6 server의 서비스 제공  UNIX 계열에서 수신된 IPv4/IPv6 데이터그램 처리  UNIX 계열에서 요청된 IPv4/IPv6 데이터그램 처리 52.

(53) IPv6 개요 (1)  IPv6 탄생 배경  1980년대 후반 주소 고갈 문제 예상  초기에는 주소 필드의 확장만 논의했으나, 아무리 사소한 수정이라도 전체 망 구조에 큰 영향을 미친다는 사실을 깨닫고 근본적인 수정에 착수  IPv6 주소는 IPv4 주소 길이의 4배인 128비트로 43억× 43억× 43억× 43억 개의 주소 제공이 가능. (지구상의 모든 인간이 10억개의 노드로 이루어진 개인 망을 가질 때, 이러한 지구와 같은 행성 50억× 50억 개를 연결 가능)  IPv6의 개선 분야  확장된 주소  간소한 헤더 형식  개선된 확장과 옵션 지원  흐름 라벨링  인증과 비밀성 제공 53. MCC Laboratory.

(54) IPv6 개요 (2) 32 bit. IPv4 Header. 4 bit. 4 bit. Ver. HELN TOS Identification. TTL HLEN TOS 헤더 길이. = Header Length = Type of Service = 20 octets(bytes) + options. Ver. IPv6 Header. 8 bit. 16 bit. Total Length flags. Fragment Offset Header checksum Protocol Source IP Address Destination IP Address. Traffic Class Payload Length. Flow Level Next Header Hop Limit. Source IP Address. Destination IP Address 헤더 길이. 54. = 40 octets(bytes).

(55) DNSv6 개요 (1)  IPv6를 지원하기 위한 변화와 문제점  ip6.arpa. 도메인 추가.  각 레이블은 8 bit 단위의 16진수 표기 단위 이용  예: 2001:2b8:3b:1::100의 경우  0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.b.3.0.0.8.b.2.0.1.0.0.2.ip6.arpa..  IPv6 주소를 지정할 수 있는 신규 RR 정의 : AAAA RR 존 파일 (zone file) 표기 www.example.co.kr. 1800 IN A. 192.0.2.101. www.example.co.kr. 1800 IN AAAA. 2001::2b8:3b::100. A 리소스 레크드 포맷 Name. Type. Class. TTL. 010000011…10101 Data Length. Address 32 bit. AAAA 리소스 레크드 포맷 Name. Type. Class. TTL. 0100000101…0100010101 Data Length. Address 128 bit. 55.

(56) DNSv6 개요 (2)  리졸버에 의한 비재귀적 질의(iterative query)에 대해 네임서버 NS. RR과 glue RR 응답 시 IPv4 주소의 A RR과 IPv6 주소의 AAAA RR을 모두 포함하여 응답  특정 도메인 네임의 IP 주소를 파악하기 위해서 A 타입 DNS 질의와 AAAA 타입 DNS 질의를 각각 수행하여 응답을 파악  하나의 도메인 네임에 대한 A 타입 DNS 질의는 A RR만 응답  하나의 도메인 네임에 대한 AAAA 타입 DNS 질의는 AAAA RR만 응답.  각 호스트가 IPv4/IPv6 듀얼스택 호스트로 서비스하고 있는 경우. 다수의 A RR과 AAAA RR이 네임에 지정됨으로써 DNS 응답 메시지의 길이가 512 바이트를 초과하는 경우 발생  TCP를 사용한 DNS 질의절차로 전환하는 메커니즘을 유발  DNS 질의상의 지연과 네임서버 시스템 부하 증가 문제.  리졸버의 캐쉬 관리에서 IPv6 주소의 AAAA RR로 인해 소요되는 메모리. 증가  IPv6 Socket API 사용 필요. 56.

(57) DNSv6 개요 (3)  IPv6의 도입에 따른 DNS 변화  도메인 데이터베이스의 확장  AAAA RR 도입  리졸버의 입장에서는 IPv4 주소와 IPv6 주소가 공존하는 도메인 데이터베이스에서 임의의 도메인 네임에 대한 네트워크 주소정보를 파악하기 위해서는 A 타입 리소스 레코드에 대한 DNS 질의와 AAAA 타입 리소스 레코드에 대한 DNS 질의를 각각 수행  IPv6의 도입으로 인해 IPv6 주소를 갖는 네임서버가 존재하게 되며 네임서버로의 위임 설정이 IPv6 주소로 설정되는 경우가 존재  상위 도메인에는 위임되는 도메인에 대한 글루 레코드(glue record) 정보로써 필요한 네임서버의 IPv4 주소와 IPv6 주소를 각각 A 타입 레코드와 AAAA 타입 레코드로 설정  DNS의 기반 네트워크 환경에 IPv6 네트워크 적용  상당한 기간 동안 IPv4와 IPv6가 공존하는 상태의 네트워크 환경에서 DNS가 설치, 운영될 예정  기존의 IPv4와 새로운 IPv6 영역 모두에게 보편적으로 동일한 DNS 서비스를 제공하여야 하는 요구사항  DNS 도메인 네임공간이 IPv4와 IPv6 영역에 의해 분할되는 일이 발생하지 않도록 하는 문제가 가장 중요  DNS 네임서버에 존재하는 도메인 데이터베이스의 트리 구조 상에 상호 연결성이 파괴될 위험 상존. 57.

(58) DNSv6 개요 (4) IPv4 -> IPv6 전환 단계에서의 주요 이슈. 58.

(59) DNSv6 개요 (5) DNS 도메인 네임공간의 연속성 유지 문제. 59.

(60) DNSv6 개요 (6) IPv6 only 리커시브 네임서버의 리졸루션 불능문제. 60.

(61) DNSv6 개요 (7) IPv4 only 리커시브 네임서버의 리졸루션 불능문제. 61.

(62) DNSv6 개요 (8) IPv4 및 IPv6 환경에서의 DNS 체계 구성방안. 62.

(63) DNSv6 개요 (9)  EDNS0 도입  루트 도메인의 IPv6 주소를 지정한 위임설정은 512 바이트로 제한된 DNS 메시지 크기 제한에 의해 기술적 문제 발생  이에 대한 해결책 중 하나가 EDNS0  DNS 프로토콜의 확장을 지정하는 필드 중에는 UDP 전송가능 크기를 512 바이트 이상으로 지정하여 1024 바이트 또는 2048 바이트 등으로 지정  현실적으로는 전 세계 모든 리졸버와 네임서버가 EDNS 기능을 지원하지 는 않고 있다는 점이 문제점  IPv6 프로토콜 변환방식으로 인한 문제  DNS 서버 시스템과는 직접적으로 무관  DNS 질의에 대한 변환기능을 사용하는 전환기술이 존재하고 이에 DNS 메커니즘을 활용하기 때문에 관련된 사항  NAT-PT 네트워크나 RTR 네트워크를 구성하는 경우 이에 대한 사항을 시스템 OS 별로 사전에 확인할 필요성 존재 63.

(64) IPv6 DNS 시스템 구성을 위한 사전 검토 사항.  네트워크  IPv6 네트워크 구성 여부 결정  IPv6 연동방식 결정  IPv6 주소 확보 방식 결정  DNS 서버시스템  IPv6 지원 플랫폼 확인  IPv6 주소 설정 방식 검토  IPv6 tunnel 지원 항목 확인  DNS Software  IPv6 인터페이스 지원여부 확인  IPv6 확장 DNS 구현여부 확인  기타 IPv6 관련 제한사항 확인  IPv6 전환기술  Pv6 전환기술 사용여부 결정  DNS-ALG 적용 필요여부 결정 64.

(65) IPv6 DNS 설치 및 구동 (1) . IPv6 인터페이스에 대해 DNS 서비스를 제공해야 하므로 이에 대한 설정을 named.conf 파일에 추가 options { directory "/var/named/"; pid-file "/var/run/named.pid"; listen-on-v6 { any;}; }; zone "0.0.127.in-addr.arpa" { type master; file "named.local"; };. zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "localhost.ipv6.zone"; }; zone "." { type hint; file "root.cache"; }; zone "example.co.kr" { type master; file "example.co.kr.zone"; };. 65.

(66) IPv6 DNS 설치 및 구동 (2)  IPv6 루프백 주소 '::1/128'에 대한 리버스(reverse) 도메인 존. 파일 설정. 파일 명 : 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. ip6.arpa $ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int. $TTL 180 @ IN SOA localhost. root.localhost. ( 2003071502 ;Serial 21600 ;Refresh ( 6 hours) 1800 ;Retry (30 minutes) 1209600 ;Expire (14 days) 86400) ;Minimum ( 1 day) IN NS rootdns.dnsv6.or.kr. IN. 66. PTR. localhost..

(67) IPv6 DNS 설치 및 구동 (3) . IPv6 DNS 도메인 구성. IPv6 주소가 포함된 example.co.kr. 존 파일 $ORIGIN example.co.kr. $TTL 86400 @ IN SOA ns1.example.co.kr. admin.example.co.kr. ( 2003082809 ; serial 21600 ; Refresh (6 hours) 1800 ; Retry (30 min) 1209600 ; expire (14 days) 86400 ; mininum (1 day) ) IN NS ns1 IN NS ns2 IN MX 10 mail ns1 ns1 ns2 ns2. IN IN IN IN. A 192.0.2.11 AAAA 2001:3b8:2a::100 A 192.0.2.12 AAAA 2001:3b8:2a::200. www IN A 192.0.2.101 www IN A 192.0.2.102 www IN AAAA 2001:2b8:2a:1:a00:20ff:fed1:3e21 mail IN A 192.0.2.21. 67.

(68) IPv6 DNS 설치 및 구동 (4)  IPv6 주소가 포함된 example.co.kr.의 리버스 존 파일. $ORIGIN a.2.0.0.8.b.2.0.1.0.0.2.ip6.arpa. $TTL 180 @ IN SOA ns1.example.co.kr. admin.example.co.kr. ( 2003071501 ;Serial 21600 ;Refresh ( 6 hours) 1800 ;Retry (30 minutes) 1209600 ;Expire (14 days) 86400) ;Minimum ( 1 day) IN NS ns1.example.co.kr. IN NS ns2.example.co.kr. $ORIGIN 0.0.0.0.a.2.0.0.8.b.2.0.1.0.0.2.ip6.arpa. 0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR 0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR. ns1.example.co.kr. ns2.example.co.kr.. $ORIGIN 1.0.0.0.a.2.0.0.8.b.2.0.1.0.0.2.ip6.arpa. 1.2.e.3.1.d.e.f.f.f.0.2.0.0.a.0 IN PTR www.example.co.kr. 68.

(69) IPv6 DNS 설치 및 구동 (5)  리버스 존 파일 named.conf에 반영 zone "a.2.0.0.8.b.2.0.1.0.0.2.ip6.arpa." { type master; file "2001.2b8.2a.ip6.rev.zone"; };. 69.

(70) IPv6 DNS FAQ (1)  IPv6 인터페이스를 가지고 있는 호스트를 추가하려면?  영역 파일에 AAAA RR을 이용하여 매핑 정보 입력 예: host-v6.example.co.kr. IN AAAA 124:4567:89ab:cdef:123:4567:89ab:cdef 리버스 존 파일(f.e.d.c.b.a.9.8.7.6.5.4.3.2.1.0.ip6.arpa)에 PTR RR 추가.  네임 서버가 IPv6 인터페이스를 통해 들어온 질의를 처리 하도록 하려면?  named.conf 파일 설정 예: options { directory "/var/named" listen-on-v6 { any; }; } 포트 번호 설정 예: options { directory "/var/named" listen-on-v6 port 1053 { any; }; }. 70.

(71) IPv6 DNS FAQ (2)  특정 IPv6 주소로부터 질의를 보내도록 네임 서버를. 설정하려면 ?.  질의를 보낼 때 이용할 IPv6 주소와 포트 설정 가능 예: options { directory "/var/named" query-source-v6 address 222:10:2521:1:210:4bff:fe01:d32; } 예: options { directory "/var/named" query-source-v6 address 222:10:2521:1:210:4bff:fe01:d32 port 5555; }. 71.

(72) IPv6 Socket Programming (1)  Socket Address 구조체의 변화  일반적인 Socket 구조체. struct sockaddr { uint8_t sa_len; sa_family_t sa_family; /* address family : AF_xxx */ char sa_data[14]; /* protocol specific address */ };.  IPv4 Socket 구조체. struct in_addr { in_addr_t s_addr; }; struct sockaddr_in { uint8_t sin_len; /* length of structure */ sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* 16-bit TCP or UDP port number */ struct in_addr sin_addr; /* 32-bit IPv4 address */ char sin_zero[8]; /* unused */ };. 72.

(73) IPv6 Socket Programming (2)  IPv6 Socket 구조체 struct in6_addr { uint8_t s6_addr[16]; /* IPv6 address */ }; struct sockaddr_in6 { /* 4.3BSD-based system */ sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* set of interfaces for a scope */ }; struct sockaddr_in6 { /* 4.4BSD-based system */ uint8_t sin6_len; /* length of this struct */ sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* set of interfaces for a scope */ };. 73.

(74) IPv6 Socket Programming (3) IPv4 와 IPv6 소켓 구조체 비교. 74.

(75) IPv6 Socket Programming (4)  소켓 주소 호환을 위한 새로운 자료구조 struct sockaddr_storage : 특정 IP 버전에 종속되지 않는 프로그램 작성을 위하여 sockaddr_storage의 사용이 권고 /* * Desired design of maximum size and alignment */ #define _SS_MAXSIZE 128 /* Implementation specific max size */ #define _SS_ALIGNSIZE (sizeof (int64_t)) /* Implementation specific desired alignment */. 75.

(76) IPv6 Socket Programming (5) /* * Definitions used for sockaddr_storage structure paddings design. */ #define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (sa_family_t)) #define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (sa_family_t) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) struct sockaddr_storage { sa_family_t ss_family; /* address family */ /* Following fields are implementation specific */ char __ss_pad1[_SS_PAD1SIZE]; /* 6 byte pad, this is to make implementation /* specific pad up to alignment field that */ /* follows explicit in the data structure */ int64_t __ss_align; /* field to force desired structure */ /* storage alignment */ char __ss_pad2[_SS_PAD2SIZE]; /* 112 byte pad to achieve desired size, */ /* _SS_MAXSIZE value minus size of ss_family */ /* __ss_pad1, __ss_align fields is 112 */ }; 76.

(77) IPv6 Socket Programming (6) /* * Definitions used for sockaddr_storage structure paddings design. */ #define _SS_PAD1SIZE (_SS_ALIGNSIZE (sizeof (uint8_t) + sizeof (sa_family_t)) #define _SS_PAD2SIZE (_SS_MAXSIZE (sizeof (uint8_t) + sizeof (sa_family_t) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) struct sockaddr_storage { uint8_t ss_len; /* address length */ sa_family_t ss_family; /* address family */ /* Following fields are implementation specific */ char __ss_pad1[_SS_PAD1SIZE]; /* 6 byte pad, this is to make implementation /* specific pad up to alignment field that */ /* follows explicit in the data structure */ int64_t __ss_align; /* field to force desired structure */ /* storage alignment */ char __ss_pad2[_SS_PAD2SIZE]; /* 112 byte pad to achieve desired size, */ /* _SS_MAXSIZE value minus size of ss_len, */ /* __ss_family, __ss_pad1, __ss_align fields is 112 */ };. 77.

(78) IPv6 Socket Programming (7)  Socket 주소 관련 API 변화.  기존의 Socket 주소 관련 함수 #include <arpa/inet.h> in_addr_t inet_addr(const char *strptr); int inet_aton(const char *strptr, struct in_addr *addrptr); char *inet_ntoa(struct in_addr inaddr);.  호스트 이름들을 얻기 위한 함수 #include <netdb.h>. struct hostent *gethostbyname (const char *hostname); struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; #define h_addr h_addr_list[0]. 78.

(79) IPv6 Socket Programming (8) hostent 구조체. 79.

(80) IPv6 Socket Programming (9) . 추가된 소켓 주소 관련 함수 #include <sys/socket.h> #include <netdb.h> int getaddrinfo (const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res); void freeaddrinfo(struct addrinfo *ai); char *gai_strerror(int error);. struct addrinfo { int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST, .. */ int ai_family; /* AF_xxx */ int ai_socktype; /* SOCK_xxx */ int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ socklen_t ai_addrlen; /* length of ai_addr */ char *ai_canonname; /* canonical name for nodename */ struct sockaddr *ai_addr; /* binary address */ struct addrinfo *ai_next; /* next structure in linked list */ }; int getnameinfo (const struct sockaddr *sa, socklen_t salen, char *node, socklen_t nodelen, char *service, socklen_t servicelen, int flags);. 80.

(81) IPv6 Socket Programming (10) addr_info 구조체. 81.

(82) IPv6 Socket Programming (11)  getaddrinfo( ) : 호스트 이름과 서비스 이름을 받아 소켓 주소와 그와. 연관된 정보들 반환  freeaddrinfo( ) : getaddrinfo 함수가 돌려주는 addrinfo 구조체를 해제시키기 위해 추가  getnameinfo( ) : 소켓 주소를 받아 노드 이름과 서비스 이름 반환  IPv4의 inet_addr( ), inet_ntoa( ) 함수에 대응하는 두 개의 함수 inet_pton( ), inet_ntop( ) 추가  #include <arpa/inet.h>  int inet_pton(int af, const char *src, void *dst);.  const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);  #define INET_ADDRSTRLEN. 16  #define INET6_ADDRSTRLEN 46. 82.

(83) IPv6 Socket Programming (12)  추가된 socket 주소 테스트 매크로  #include <netinet/in.h>       . int int int int int int int. IN6_IS_ADDR_UNSPECIFIED (const struct in6_addr *); IN6_IS_ADDR_LOOPBACK (const struct in6_addr *); IN6_IS_ADDR_MULTICAST (const struct in6_addr *); IN6_IS_ADDR_LINKLOCAL (const struct in6_addr *); IN6_IS_ADDR_SITELOCAL (const struct in6_addr *); IN6_IS_ADDR_V4MAPPED (const struct in6_addr *); IN6_IS_ADDR_V4COMPAT (const struct in6_addr *);.     . int int int int int. IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *); IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *); IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *); IN6_IS_ADDR_MC_ORGLOCAL (const struct in6_addr *); IN6_IS_ADDR_MC_GLOBAL (const struct in6_addr *);. 83.

(84) IPv6 Socket Programming (13)  IPv6 TCP Program header file  sample6.h #include #include #include #include #include. <stdio.h> <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h>. #define SERV_TCP_PORT 6000 #define SERV_HOST_ADDR "fe80::250:8bff:fe94:bf13" #define LOOPBACK_ADDR "::1" 84.

(85) IPv6 Socket Programming (14)  IPv6 TCP Client Program Sample #include "sample6.h". main(int argc, char *argv[]) { int sockfd; struct sockaddr_in6 serv_addr; bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin6_family = AF_INET6; inet_pton(AF_INET6,SERV_HOST_ADDR, &serv_addr.sin6_addr); /* inet_pton(AF_INET6,LOOPBACK_ADDR, &serv_addr.sin6_addr); */ /* IPv6 loopback */ serv_addr.sin6_port = htons(SERV_TCP_PORT); if ( (sockfd = socket(AF_INET6, SOCK_STREAM, 0)) < 0) fprintf(stderr, "client: can't open stream socket"); /* 이하 생략 */. 85.

(86) IPv6 Socket Programming (15) . IPv6 TCP Server Program Sample #include "sample6.h" main(int argc, char *argv[]) { int sockfd, newsockfd, clilen, childpid; struct sockaddr_in6 cli_addr, serv_addr; if ( (sockfd = socket(AF_INET6, SOCK_STREAM, 0)) < 0) fprintf(stderr,"server: can't open stream socket"); bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin6_family = AF_INET6; serv_addr.sin6_addr = in6addr_any; serv_addr.sin6_port = htons(SERV_TCP_PORT); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) fprintf(stderr,"server: can't bind local address"); listen(sockfd, 5); /* 이하 생략 */. 86.

(87) IPv6 Socket Programming (16)  UNIX 계열에서 getaddrinfo() 이용 예제 #include #include #include #include #include #include. <ctype.h> <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h> <netdb.h>. main(int argc, char *argv[]) { struct addrinfo hints, *result; struct addrinfo *tmp; int err_code; if (argc < 3) { fprintf(stderr, "usage : %s hostname service [6|4]\n", argv[0]); exit(1); }. 87.

(88) IPv6 Socket Programming (17) memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; if (isalpha(argv[1][0])) { hints.ai_flags = AI_CANONNAME; } else { hints.ai_flags = AI_NUMERICHOST; } if (argc > 3) { if (strcmp(argv[3], "6") == 0) { hints.ai_family = AF_INET6; } else { hints.ai_family = AF_INET; } } else { hints.ai_family = AF_UNSPEC; }. 88.

(89) IPv6 Socket Programming (18) if (err_code = getaddrinfo(argv[1], argv[2], &hints, &result)) { fprintf(stderr, "error in getaddrinfo() : %s\n", gai_strerror(err_code)); exit(2);. } if (result->ai_canonname) { printf("canonnical name : %s\n", result->ai_canonname); } for(tmp = result->ai_next; tmp; tmp = tmp->ai_next) { printf("canonnical name : %s\n", result->ai_next->ai_canonname); } }. freeaddrinfo(result);. 89.

(90) IPv6 Socket Programming (19)  IP 버전에 독립적인 UNIX TCP 클라이언트 #include #include #include #include #include #include #include. <stdio.h> <ctype.h> <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h> <netdb.h>. #define MAXLINE 1024 int main(int argc, char *argv[]) { struct addrinfo hints, *result; struct addrinfo *tmp; int err_code; int sockfd; char buf[MAXLINE]; int n;. 90.

(91) IPv6 Socket Programming (20) if (argc < 3) { fprintf(stderr, "usage : %s hostname port_no\n", argv[0]); exit(1); } memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; if (isalpha(argv[1][0])) { hints.ai_flags = AI_CANONNAME; } else { hints.ai_flags = AI_NUMERICHOST; } hints.ai_family = AF_UNSPEC; if (err_code = getaddrinfo(argv[1], argv[2], &hints, &result)) { fprintf(stderr, "error in getaddrinfo() : %s\n", gai_strerror(err_code));. 91.

(92) IPv6 Socket Programming (21) exit(2); } print_addr_info(result); for (tmp = result; tmp; tmp = tmp->ai_next) { if ((sockfd = socket(tmp->ai_family, tmp->ai_socktype, tmp->ai_protocol)) <= 0) { fprintf(stderr, "error in socket()\n"); } else { err_code = connect(sockfd, tmp->ai_addr, tmp->ai_addrlen); if (err_code < 0) { fprintf(stderr, "error in connect()\n"); } else { /* client process */ /* 키보드 입력을 소켓을 통해 서버로 전달 */ /* 소켓으로 온 서버 응답을 화면에 출력 */. 92.

(93) IPv6 Socket Programming (22) while(fgets(buf, MAXLINE, stdin)) { write(sockfd, buf, strlen(buf)); n = read(sockfd, buf, MAXLINE); if (n <= 0) { fprintf(stderr, "end of connection or read error\n"); break; } else { buf[n] = '\0'; fputs(buf, stdout); } }. } break; /* 정상적인 연결이므로 반복 탈출 */. } /* 연결이 안 된 경우 다음 주소로 다시 시도 */. }. } freeaddrinfo(result); close(sockfd);. 93.

(94) Dual stack IPv6 server의 서비스 제공. 94.

(95) UNIX 계열에서 수신된 IPv4/IPv6 데이터그램 처리. 95.

(96) UNIX 계열에서 요청된 IPv4/IPv6 데이터그램 처리. 96.

(97) 4. DNS 보안 강화            . DNS 보안 위협 분석 DNSSEC 관련 주요 용어 정의 DNSSEC 구성 요소 및 기본 구조 기존 Security-Oblivious DNS와의 공존체계 DNSSEC과 EDNS0의 UDP payload size NSEC RR 관련 문제 DNSSEC에서의 서명 및 검증 DNSSEC RR 포맷 및 기능 도메인에 대한 DNSSEC 적용 DNSSEC 응답사례에 대한 분석 현 시점에서 DNSSEC 도입 시 문제점 TSIG, SIG(0) 97.

(98) DNS 보안 위협 분석 (1)  배경  1993년 28th IETF 회의에서 처음 논의  28th IETF 회의 합의 사항  일부 참여자가 DNS 데이터가 권한이 없는 사용자에게도 공개되는. 문제를 방어하기를 제안했으나 DNS 데이터 자체가 ‘public’이므로 이에 대한 대책은 강구하지 않기로 결정  일부 참여자가 접근 제한에 기반을 둔 DNS 클라이언트와 서버의 인증에 관심을 보였으나 이것도 DNSSEC의 영역 밖으로 합의  DNSSEC에서 제공하고자 하는 보안 서비스  데이터 무결성(integrity)  데이터 근원지 인증(authentication).  앞서 언급한 서비스는 디지털 서명으로 가능하리라고 결론.  채널 보안을 지원하는 TKEY, TSIG 메커니즘은 DNSSEC과는. 별도로 추진. 98.

(99) DNS 보안 위협 분석 (2)  알려진 위협  패킷 가로채기 (Packet Interception)  가장 간단한 공격유형으로, ‘monkey-in-the-middle’ 공격 등이 대표적  원인 : DNS가 전체 질의/응답 메시지를 주고받을 때, 전혀 암호화되지 않은 UDP 패킷을 사용하기 때문  TSIG나 IPSec과 같은 채널 보안 메커니즘을 이용할 수 있으나 DNS 메시지당 처리 비용이 커지고 홉마다 이를 확인하려면 전체 비용이 급격히 커지는 문제 : 종단간 데이터 무결성을 확인하는 DNSSEC을 적용하면 적절한 비용에 가능  DNSSEC을 적용해도 DNS 메시지 헤더의 수정에 취약하므로 다음 방법 적용 고려  DNSSEC 서명 확인 작업 수행  TSIG 이용  패킷마다 재서명.  ID 추측과 질의 예측 (ID Guessing and Query Prediction)  DNS 헤더의 ID 필드는 16비트로 구성되고 DNS 서비스가 잘 알려진 포트를 이용하므로, 대입법(Brute force search)을 통해서 값 추측 가능  ID외에도 QNAME과 QTYPE을 같이 추측해야 공격이 가능  서버에 대한 인증 메커니즘으로 방어 가능. 99.

(100) DNS 보안 위협 분석 (3)  이름 체인 (Name Chaining)  “캐쉬 오염(cache poisoning)” 공격이라고 부르는 이름기반 공격의 일부  공격자가 피 공격자의 캐쉬에 특정 RRs를 위․변조하여 악의적인 데이터를 공급함으로써 잠재적으로 DNS 이름을 기반으로 하는 뒤이은 오퍼레이션들에 대한 잘못된 판단을 유발  신뢰받는 서버로 위장 (Betrayal By Trusted Server)  패킷 가로채기 공격의 변형  신뢰받는 서버가 사고나 혹은 의도된 조작으로 인해 리졸버나 다른 서버로부터 신뢰를 상실하게 되는 것  서비스 거부 (Denial of Service)  일반적인 네트워크 서비스와 동일하게 DoS에 취약  도메인 이름에 대한 인증 된 거부 (Authenticated Denial of Domain Names)  지속적으로 잘못 입력되는 이름에 대한 RR을 캐쉬(Neg Cache)하는 경우 악의적인 목적에 의해 존재하는 도메인 이름에 대해서 속임수의 의미를 갖는 NULL 응답은 캐쉬 오염 등의 추가적 취약성까지 발생  와일드카드(Wildcards)  와일드카드를 이용하는 도메인 이름에 대한 데이터 무결성과 근원지 인증 문제. 100.

(101) DNS 보안 위협 분석 (4)  DNSSEC의 약점  구현하기에 복잡하고 매우 조심스럽게 코딩해야 하는 어려운 경우들이 존재  DNS 응답 패킷의 크기 증가 -> DoS 공격의 증폭기 역할을 할 가능성이 큼  DNSSEC 응답의 확인 과정은 리졸버의 작업 부하를 증가  DNSSEC의 신뢰 모델도 계층적 구조 : 루트와 해당 도메인 네임 사이의 어느 한 존에서 문제가 발생하면 결국 전체의 신뢰가 깨짐  루트에서의 키 갱신 설정(rollover)이 어려움  DNSSEC 서명 생성과 이를 이용한 확인 작업 사이에는 느슨한 시간 동기 메커니즘이 필요  존에서의 와일드카드 RR 존재는 인증을 더욱 복잡하게 함  DNSSEC을 적용하더라도 신뢰받는 서버로 위장하는 공격 등에는 취약. 101.

(102) DNSSEC 관련 주요 용어 정의(1)  네임서버, 리졸버 관련 용어  Security-Oblivious Name Server :.  DNSSEC을 인식하지 못하는 일반 name server.  Security-Aware Name Server :.  DNSSEC 표준사항을 인식하는 name server  구현 요건:  DNS 질의 수신 (기본 DNS 기능)  DNS 응답 송출 (기본 DNS 기능)  EDNS0 메시지 크기 확장 옵션 지원  DO bit 지원  DNSSEC RR 및 메시지 헤더 bit 지원.  Authoritative name server만을 의미하는 것이 아니라,. Recursive name server의 name server 기능부분도 포함.  Security-Oblivious Resolver :.  DNSSEC을 인식하지 못하는 일반 resolver. 102.

(103) DNSSEC 관련 주요 용어 정의(2)  Security-Aware Resolver :  DNSSEC 표준사항을 인식하는 resolver  구현 요건:  DNS 질의 송출 (기본 DNS 기능)  DNS 응답 수신 (기본 DNS 기능)  EDNS0 메시지 크기 확장 옵션 지원  DO bit 지원  DNSSEC RR 및 메시지 헤더 bit 지원.  stub-resolver 포함.  Security-Aware Stub Resolver :  DNSSEC 표준사항을 인식하는 stub-resolver  Non-Validating Security-Aware Stub Resolver :  Security-Aware Stub Resolver 중에서 자신 스스로 서명 검증(validation)을 수행하지 않고, Security-Aware Recursive 네임서버에 서명 검증을 의존하는 stub-resolver.  구현요건:  DNS 질의 송출 (기본 DNS 기능)  DNS 응답 수신 (기본 DNS 기능)  Security-aware Recursive 네임서버와 적절한 secured channel 설정 가능. 103.

(104) DNSSEC 관련 주요 용어 정의(3)  Validating Security-Aware Stub Resolver :  Security-Aware Stub Resolver 중에서 자신 스스로 서명 검증(validation)을. 수행하는 stub-resolver.  용어 "Validating Stub Resolver"와 동일.  Recursive Name Server :  “Name Server 기능”과 “Resolver" 기능이 결합된 요소  사용자 단말의 DNS 질의를 수신하는 포트 53에 binding 되어 있는 ‘name server'. 기능과 name server가 참조하는 cache를 관리하고 업데이트하는 ’resolver' 기능으로 구성  사용자 단말의 stub-resolver와 통신하는 기능은 Recursive Name Server의 ‘name server' 기능.  Security-Oblivious Recursive Name Server :  DNSSEC을 인식하지 못하는 일반 recursive name server.  Security-Aware Recursive Name Server :  Security-Aware Name Server와 Security-Aware Resolver 기능으로 구성된 DNS. 요소  “a Security-Aware Name Server that offers recursive service”라고도 표기 104.

(105) DNSSEC 관련 주요 용어 정의(4)  Zone 및 위임 포인트 관련 용어  Unsigned Zone :  DNSSEC을 적용하지 않은 일반 도메인 존  Signed Zone :  도메인 존 내의 RR set들이 서명되고, DNSKEY, RRSIG, NSEC RR과 경우에 따라 DS RR을 가지고 있는, DNSSEC이 적용된 도메인 존  Zone Apex :  자식 존(child zone)에서의 존 도메인 네임(zone domain name)  자식 존 입장에서의 'zone cut'  예: or.kr 존에서 nida.or.kr 존으로 위임받는 경우, nida.or.kr 존에 SOA RR로 설정된 nida.or.kr 도메인 네임이 ‘Zone Apex’  Delegation Point :  부모 존에서 자식 존으로 위임하는 자식 존의 존 도메인 네임(zone domain name)  부모 존 입장에서의 ‘zone cut’  예: or.kr 존에서 nida.or.kr 존으로 위임하는 경우, or.kr 존에 설정된 nida.or.kr 도메인 네임이 ‘Delegation Point’. 105.

(106) DNSSEC 관련 주요 용어 정의(5)  Authoritative RRset :  특정 존(zone) 내에서, 그 도메인 네임이 Zone Apex 이하, 그리고 자식 존으로. 위임되는 zone cut 이상의 영역에 속하는 경우, 이 도메인 네임의 RR set을 ‘authoritative’ RR set이라고 함.  DNSSEC Public Key 관련 용어  Authentication Key :  Security-Aware Resolver가 검증(verification)한 Public Key로써 Resolver가 DNS. 데이터 인증(authentication)에 사용하게 되는 Public Key  Authentication Key에는 다음의 2가지가 있음 Zone Signing Key (ZSK)  Key Signing Key (KSK) .  Zone Signing Key (ZSK) :  존(zone)을 서명한 Private Key에 대응하는 Authentication Key (Public Key)  ZSK의 대응 Private Key는 도메인 존이 “소유하는” 모든 도메인 네임의 RR set을. 대상으로 서명  도메인 존이 소유하지 않는, Delegation Point에 해당하는 자식 도메인 네임의 NS RR set은 서명하지 않음 106.

(107) DNSSEC 관련 주요 용어 정의(6)  Key Signing Key (KSK) :  대상 존(zone)의 하나 또는 여러 개의 Authentication Key를 서명한 Private Key에. 대응하는 Authentication Key (Public Key)  KSK의 대응 Private Key는 도메인 존의 ZSK 데이터를 갖는 DNSKEY RR set을 서명.  Trust Anchor :  Resolver에 설정되는 DNSKEY RR 또는 DNSKEY RR의 DS RR 해쉬(hash) 데이터  Validating Secure-Aware Resolver는 이 Public Key(DNSKEY RR의 KSK) 또는. hash(DS RR의 hash data)를 DNS 응답 메시지의 서명된 데이터에 대한 인증체인(authentiacation chain)을 구축하는 출발점(starting point)으로 사용  Validating Resolver는 이 Trust Anchor의 초기값을 DNS 프로토콜을 사용하지 않고, 별도의 보안 적용된 방식을 사용하여 설정해야 함.  Authentication Chain :  DNS Public Key(DNSKEY RR) RR set과 Delegation Signer (DS) RR set이 교대로. 순서 지어 형성하는 서명된 데이터의 체인(chain)으로써, 각 체인은 다음 체인을 보증하는 역할을 함. 107.

(108) DNSSEC 구성 요소 및 기본 구조 Security-Oblivious Recursive Name Server Security-Oblivious Name Server. Security-Oblivious Resolver Port 53. Security-Oblivious Name Server. Security-Oblivious Stub Resolver. Port 53. DNSSEC 적용. Security-Aware Stub Resolver Validating Security-Aware Stub Resolver. Security-Aware Recursive Name Server. Security-Aware Name Server. 108. Security-Aware Resolver Port 53. Security-Aware Name Server. Port 53. Security-Aware Stub Resolver Non-Validating Security-Aware Stub Resolver.

(109) 기존 Security-Oblivious DNS와의 공존체계(1)  기존 Security-Oblivious DNS와 Security-. Aware DNS는 공존 가능  Security-Aware DNS 구성요소는 SecurityOblivious DNS 구성요소를 인지하고 이들과 통신하는 경우, Security-Oblivious DNS 질의응답 절차에 따라 동작  Resolver의 DNS 질의 메시지에 EDNS0 "DNSSEC OK" flag bit(DO bit)의 세팅 여부에 의해 Security-Aware Resolver 여부를 판별하고 응답 방식 결정, 처리 109.

(110) 기존 Security-Oblivious DNS와의 공존체계(2) Security-Oblivious Recursive Name Server Security-Oblivious Name Server. Security-Oblivious Resolver Port 53. Security-Oblivious Name Server. Security-Oblivious Stub Resolver. Port 53. Security-Aware Stub Resolver Validating Security-Aware Stub Resolver. Security-Aware Recursive Name Server. Security-Aware Name Server. 110. Security-Aware Resolver Port 53. Security-Aware Name Server. Port 53. Security-Aware Stub Resolver Non-Validating Security-Aware Stub Resolver.

Referensi

Dokumen terkait

With the continuing efforts in the use of policy for security and access control, the recognition of the need for and the standardization of the Internet domain name service

Judul yang penulis ajukan adalah “ANALISIS KINERJA KEUANGAN DENGAN MENGGUNAKAN RATIO RETURN ON ASSET (ROA) DAN RETURN ON EQUITY (ROE) PADA PT.BANK RAKYAT