DNS & BIND 19 Summer Made by loopy
1. DNS
1. DNS DNS 란? DNS(Domain Name Service) 도메인이름과 IP 주소를매칭시키는시스템 사람이읽을수있는도메인이름과실제컴퓨터에서쓰이는 IP 주소를상호변환 DNS 자체는서버가아니라, 이러한시스템을의미함 (DNS 를운영하는서버를 DNS 서버, 혹은네임서버 (Name Server) 라고함 ) ex) 전화번호를직접입력해서전화를거는것 IP 주소로연결 ex) 전화번호부에등록된이름으로전화를거는것 도메인이름으로연결 ex) 이예시에서전화번호부가 DNS 와유사한역할을한다
1. DNS DNS 란? DNS 는분산형데이터베이스시스템을사용 DNS 는도메인이름공간 (Domain Name Space), 리소스레코드 (Resource Record), 네임서버 (Name Server), 리졸버 (Resolver) 로구성되어있다
1. DNS Domain Name Space Domain Name Space 란? DNS 가저장 / 관리하는계층적데이터베이스로, 최상위에 Root 가존재하고그아래로모든 * 호스트가트리구조로이루어져있음 같은레벨에서는레이블 ( 이름 ) 이유일해야함 계층구조는 Root, TLD(Top Level Domain), SLD(Second Level Domain), 서브도메인등으로이루어져있음 * 호스트 : Domain Name Space 트리에서의 Node 를의미
1. DNS Domain Name Space
1. DNS Domain Name Space 의계층 Root 도메인계층 가장상위에존재하는특수한계층으로, 모든도메인네임은 root 의도메인네임으로시작한다 도메인네임공간의분배와할당은 ICANN 에의해 root 도메인에서가장처음으로이루어진다 최상위 domain 으로전세계 13 개뿐이고, 다른나라에서는미러서버를운영한다. 미국 10 개, 네덜란드, 노르웨이, 일본각각한개 우리나라의경우미러서버가 3 개있다. ( 한국인터넷진흥원, kt, 한국인터넷연동센터 ) 도메인네임으로 null 혹은 (.) 을사용한다
1. DNS Domain Name Space 의계층 최상위도메인계층 (TLD, Top Level Domain) root 도메인계층의하위에해당하는계층으로 1 단계도메인으로도불린다 국가에할당된도메인과국제적업체에할당된도메인으로크게분류된다 국가코드최상위도메인 (Country Code Top Level Domain, cctld) 최상위도메인네임은국가를나타내며, 하위도메인들은그국가조직의성격을나타내는도메인네임 ( 레이블 + 상위노드의도메인네임 ) 을사용 일반최상위도메인 (Generic Top Level Domain, gtld) 국가단위가아닌, 국제적단위로사용되는도메인들을일반최상위도메인 전세계를기준으로비영리, 상업적, 지역별등의목적에따른분류로나누어진다
1. DNS Domain Name Space 의계층
1. DNS Domain Name Space 의계층 2 단계도메인계층 (SLD, Second Level Domain) 최상위도메인으로부터분류된도메인이위치하는계층으로도메인을등록하고자하는조직이나국가에속하는기관의성격으로분류된다 상위도메인이 gtld 인경우 조직이나개인을최종사용자로볼수있고, 원하는호스트네임 ( 레이블 ) 을사용하여도메인네임을할당받는다 (ex. naver.com) 상위도메인이 cctld 인경우 호스트와조직의성격을나타내는도메인이위치한다 (ex. ac.kr, co.kr 등 )
1. DNS Domain Name Space 의계층 3 단계도메인계층 (Third Level Domain or Sub Domain) 상위도메인이 cctld 인경우 3 단계도메인의특성을가진도메인으로조직이나개인에서도메인을등록, 즉최종사용자의도메인이정의된다 (ex. google.co.kr) 상위도메인이 gtld 인경우 (= 서브도메인계층 ) 서브도메인으로의특성을가진도메인으로최종사용자가필요에따라서만든하위도메인 여러대의 Web Server 를목적에따라서도메인을구별하는등의목적으로사용된다 (ex. www.naver.com, sports.naver.com 등 ) 서브도메인계층 : 마지막에위치하는도메인계층으로, 3 단계도메인계층과동일한기능
1. DNS Domain Name Space 의계층
1. DNS Resource Record Resource Record 란? 도메인과관련된정보를가지고있는 *Record 리소스레코드로정의되어지지않는다면, domain name space 에정의되어있어도해당도메인네임에매치되는 IP 주소를알수없기때문에접속이불가능하다 Resource Record 의유형에는 A(Address), NS(Name Server), CNAME(Canonical Name), SOA(Start of Authority) 등다양하다 *Record : 데이터베이스에서데이터를가지고있는항목, row 와동일한의미
1. DNS Resource Record 의구성 Resource Record 의구성 이름 (Name) 레코드의이름또는소유자. Root 도메인혹은하위도메인일수있음 유형 (Type) 레코드의유형. ex) A, NS, CNAME, SOA 등 클래스 (Class) 각 resource record 의유형집합. TCP/IP 의 class 는 IN( 텍스트코드 ) 혹은 1 TTL(Time-to-Live) 로컬에저장된레코드사본이업데이트또는삭제되어야하는빈도. 기본값은 1 시간 데이터 (Resource data) 레코드의데이터로, 레코드의유형에따라다르다
1. DNS Name Server / Resolver 네임서버 (Name Server) 란? 영문도메인을 IP 주소로 mapping 시켜주는서버 Resolver 란? 프로그램의 request 를네임서버에대한 *query 형태로번역하고그 query 에대한 response 를프로그램에적절한형태로변경 Name Server 에요청을보내고, 그응답을해석하여정보를돌려준다 *query : 데이터베이스에정보를요청하는것
1. DNS Name Server / Resolver
1. DNS DNS Spoofing DNS Spoofing DNS 서버로보내는질문을가로채서변조된결과를보내주는것 해킹방법 네트워크에 DNS 서버로보내지는패킷이있는지확인한다. 원래목적지가자신이아닌패킷은읽지않지만, 설정을변경해서모든패킷을읽어오게한다 DNS 서버로보내지는패킷이있다면, 그것을보낸 PC 에게자신이원하는변조된 IP 를전송한다. 보통은공격자가 DNS 서버보다물리적으로가까이있으므로공격자가보낸패킷이 DNS 서버가보낸정상적인패킷보다먼저도착하고, 나중에온정상적인패킷은버려진다. PC 는변조된 IP 로접속을하게된다. 네이버에접속한다고가정한다면, 피해자는정상적으로 www.naver.com 을입력했는데공격자의웹서버로접속이되는것이다. 만약이사이트가겉보기로는네이버와유사한사이트이고, 사용자가여기에서로그인을시도한다면?
1. DNS Zone File Zone Name Server 가관리하는영역 Zone File DNS zone 을나타내는 text file [name] [TTL] [class] [type] [data] 형식으로구성된다
1. DNS Zone File 예시 /etc/bind 폴더내에 zone file 들이저장되어있음
2. BIND
2. BIND BIND 란? BIND 란? BIND(Berkeley Internet Name Domain) 는 BSD 기반의 UNIX 시스템을위해설계된 DNS 소프트웨어이다 1980 년대초 UC Berkeley 대학원생 4 명이모여서만든소프트웨어 현재까지 BIND 가사실상의 standard DNS server BIND 9 버전이사용되고있고, BIND 10 버전 (bundy) 은현재개발중 named(name daemon) 으로도종종불린다
2. BIND Master-Slave Server 같은내용인여러 DNS 서버를운영할때, 한서버를 master 로지정하고다른서버들이 master 서버로부터데이터를가져오도록하는구조 요청이한서버에만집중되지않도록적절하게부하를분산시킨다 각 slave 에대한 master 를영역에따라바꿔줄수도있고 master 를사용할수없게될경우 Secondary master 를지정하여이것을 master slave 로써사용할수있다.
2. BIND BIND 설치 BIND 설치 : sudo apt-get install bind9 BIND 실행 : sudo service bind9 start (or sudo /etc/init.d/bind9 start) BIND 중지 : sudo service bind9 stop (or sudo /etc/init.d/bind9 stop) BIND 재실행 : sudo service bind9 restart (or sudo /etc/init.d/bind9 restart)
2. BIND BIND 명령어 DNS 정보확인 nslookup (name server lookup) Domain name 을입력하면그주소에대한 ip 주소와기타정보등을알려준다 설치 : sudo apt-get install dnsutils 사용법 : nslookup [ Domain Name ] (ex. nslookup ara.sparcs.org) whois WHOIS 서버에서 domain 정보를찾아주는소프트웨어로써 domain 에대한정보가아주자세하게나오고등록자에대한정보도나온다 설치 : sudo apt-get install whois 사용법 : whois [ Domain Name ] (ex. whois naver.com)
2. BIND BIND 명령어 DNS 정보확인 dig (domain information grouper) DNS name server 에질의하기위한네트워크관리명령줄인터페이스툴 nslookup 보다상세한정보를여러 option으로설정가능 Option으로레코드의 type을지정해줄수있다 any, soa, a, hinfo, mx, txt 등
2. BIND BIND 설정파일 BIND 설정파일 /etc/host.conf : ip 를찾을때순서를정해주는파일 order : 붙여진순서대로 DNS를찾는다. host, bind, nis 를사용할수있다. multi : on/off. on으로 /etc/hosts에둘이상의 ip 주소를등록하게허용할수있다. alert : on/off. on 으로 spoof 시도가 log되게할수있다. nospoof : on/off. on으로 spoof 시도를막지만느려지게된다. trim : domain name을인수취급하게한다.
2. BIND BIND 설정파일 BIND 설정파일 /etc/resolv.conf 네임서버에쓸 Dns를저장해둔다 domain, search, nameserver 옵션을이용하여구현을할수있다 /etc/bind/db.~ Zone file의 RR type 정보를기록해둔다. /etc/bind/named.conf zone file의 db위치, 타입에관한정보들을설정한다.
감사합니다 Made by loopy