외로운 Nova의 작업실

정보보안기사 필기 - 34(DHCP와 DNS보안) 본문

Certification/정보보안기사

정보보안기사 필기 - 34(DHCP와 DNS보안)

Nova_ 2022. 12. 28. 10:39

- 호스트 설정과 호스트 설정 프로토콜

<통신 방법>

다른 망과 통신을 하기위해서는 아래와 같은 정보가 필요합니다.

  • 컴퓨터의 주소
  • 컴퓨터의 해당 서브넷 마스크
  • 라우터의 IP주소
  • 네임서버의 IP주소

<호스트 설정 프로토콜 종류>

RARP : MAC을 IP로 변환시키는 프로토콜로 4가지중 ip만 제공하므로 오늘날 사용하지않습니다.

BOOTP(bootstrap) : IP주소를 포함하여 4가지를 모두 제공하지만 정적인 프로토콜입니다.

DHCP : 처음으로 부팅한 컴퓨터나 디스크가 없는 컴퓨터에게 4가지 정보를 제공하기위해 설계된 프로토콜입니다.

 

<DHCP>

DHCP(dynamic host protocol)은 UDP 기반 프로토콜이며 서버가 네트워크 클라이언트에게 IP주소를 실시간으로 부여할 수 있도록 합니다. 응용 계층의 프로그램입니다. 아래는 DHCP 동작 절차입니다.

 

- DNS

DNS(domain name system)은 사람이 기억하기 힘든 ip를 이름으로 사용하기위해 이름을 ip로 바꿔주는 서버입니다. 아래는 관련 용어입니다.

도메인 : 트리의 관점으로 기준 노드의 하위 트리를 기준 노드의 도메인이라합니다.

영역 : 책임의 관점으로 책임지고 ip로 변경해줘야하는 책임의 영역입니다.

zone 파일 :  개별 도메인에대한 DNS 정보가 설정되어 있는 파일로 /etc/named.conf 파일의 directory 지시자에 설정된 디렉터리에 존재해야하며 하나의 도메인에대해서 하나의 zone 파일을 만들어주는 것이 일반적입니다.

 

<DNS record type>

  • A(address) : 32비트 IP주소입니다. dns의 본질이며 AAAA는 128비트 주소 유형입니다.
  • NS(name server) : dns 네임 서버의 네임을 나타내니다. 
  • CNAME(canonical name) : 내부 네임은 수정하면서도 사용자는 변하지않는 별칭을 사용하게 함으로 DNS 구조의 내부 변경을 숨기는데 이용합니다.
  • SOA(start of authoruty) : dns 존의 시작을 표시하는데 사용하며 dns 존에대한 중요한 정보를 제공합니다. 
  • PTR(pointer) : 네임 공간의 다른 위치를 가리키는 포인터입니다.
  • MX(mail exchange) : 도메인으로 오는 이메일을 처리하는 장비의 이름을 명시합니다.
  • TXT(text) : 도메인과 관련해 저장해야할 임의의 문자를 나타냅니다.
  • ANY  : 도메인에대한 모든 레코드 질의시에 주로 이용합니다.
  • AXFR(authority zone transfer) : 존 버전에 상관없이 무조건 존 전송 요청합니다.
  • IXFR(incremental zone transfer) : 존 버전을 비교하여 상위 버전일 경우 전송 요청합니다.

<루트 서버>

루트 서버는 전체 트리를 영역으로 가지는 서버로 자신의 권한을 다른 서버들에게 이양하고 자신은 잉러한 서버들에대한 참조를 가지게됩니다. 현재 13개의 루트 서버가 있으며 전세계에 분산되어있습니다.

 

<일차 및 이차 서버>

DNS는 일차서버와 이차서버 두가지를 정의합니다. 일차 서버는 자신이 권한을 가지는 영역에대한 파일을 가지고 이는 영역 파일에대한 생성, 관리, 갱신에대한 책임을 가지며 로컬 디스크에 영역 파일을 저장힙니다. 이차 서버는 일차 및다른 이차 서버로부터 영역에관한 완전한 정보를 수신하여 파일을 저장하는 서버로 일차 서버로부터 갱신된 파일을 받아 저장합니다. 즉, 이차서버는 영역파일을 생성하지도 갱신하지도 않습니다.

 

< 존 전송>

마스터 네임 서버와 슬레이브 서버 관계에서 슬레이브 서버를 정기적으로 갱신하는 것은 매우 중요합니다. 왜냐하면 마스트 네임 서버는 다른 슬레이브 서버로 부터 아무때나 갱신할 수 있기 때문입니다. 만약 정기적으로 갱신하지않는다면 슬레이브서버는 결국 유효하지 않은 정보만 가지게되어 더이상 신뢰하기 힘들어질 것입니다.

 

<DNS 동작 방식>

  • 해석기 :  호스트는 이름을 주소로 매핑하기원하면 해석기라고 불리는 DNS 클라이언트를 호출합니다. 해석기는 가장 가까운 DNS 서버에 접속합니다. 만약 서버가 정보를 가지고 있으면 해석기에대한 응답을 줄 수 있으나 그렇지 않으면 해석기가 다른 서버를 참조하게하거나 다른 서버가 이 정보를 제공하도록 요구합니다. 이후 해석기는 정보를 찾았다면 해석한후 최종적으로 요청한 프로세스에게 전달합니다.
  • 재귀적 해석(recursive) : 정보가 서버에 없는 경우 서버는 실제 클라이언트 대신 스스로 클라이언트가 되어 다른 서버에게 새로운 요청을 보내는 방법으로 답변을 찾습니다.
  • 반복적 해석(iterative) : 정보가 서버에 없는 경우 서버는 요청에대한 답변 또는 해당 정보를 가지고 있거나 그정보에 좀 더 가까운 다른 서버의 네임으로 응답합니다.

<DNS 변환 과정>

  • 1순위 캐싱 : dns 서버는 다른서버에게 매핑 정보를 요청하고 응답을 수신하면 이정보를 클라잉너트에게 전달하기위해 캐시 메모리에 저장합니다. 이때 캐싱은은 해석 속도를 높일 수 있지만 오랫동안 캐싱 정보를 가지고 있다면 클라이언트에게 잘못된 매핑 정보를 보낼 수 있습니다.
  • 2순위 /etc/hosts 파일 : /etc/hosts 파일은 도메인/호스트명과 ip 주소 매핑정보를 담고 있는 파일로 네임서버에 질의하기전에 먼저 참조되는 파일입니다. 파밍등의 공격은 hosts 파일을 변조하는 사례가 있기때문에 주의가 필요합니다. 특히 윈도우에서는 hosts.ics 파일이 있습니다.
  • 3순위 DNS 서버 : 재귀적 서버가 처리해주거나 존에대해 책임을 지는 authoritative dns 서버가 처리해줍니다.

 

<DNS 유틸리티>

DNS lookup(질의) 유형에는 순방향 룩업과 역방향 룩업이 있습니다. 순방향은 네임을 주소로 바꾸는 것이고 역방향은 주소를 네임으로 변환하는 것입니다. 아래는 유틸리티의 종류입니다.

 

<nslookup 유틸리티>

DNS 진단 유틸리티중 오래전 부터 쓰인 nslookup(name server lookup)입니다. 아래는 문법입니다.

nslookup <호스트> [서버]

 

<dig 유틸리티>

dig는 가장 단순한 형태로 실행되었을 경우 host 명령보다 훨씬 풍부한 정보를 제공하고 다양한 옵션과 기능이 있습니다. 기본 네임서버이외의 다른 네임 서버를 사용하려면 서버이름앞에 @을 붙입니다.

dig [@서버] [호스트] [유형] [질의옵션]

 

<host 유틸리티>

host 유틸리티는 nslookup 비대화형 모드에서 수행되는 것과 같은 단순 요청에 쓰이는 경우가 많습니다.

host [호스트] [서버]

 

<whois 명령어>

whois 서버를 통해 도메인의 정보등을 조회할 수 있습니다. 해당 도메인이 다른 사람에 의해 사용 중인지 여부를 체크하는 용도로 많이 사용합니다.

 

- DNS 보안

<DNS 보안 위협>

  • 공격자는 사용자가 접속하는 사이트의 이름이나 성질을 살피기 위해 DNS 서버의 응답을 읽어볼 수 있습니다. 따라서 DNS 메시지의 비밀성을 보장해야합니다.
  • 공격자는 중간에서 서버의 응답을 읽은 뒤 이를 변경하거나 완전히 새로운 위조 응답을 만들어 공격자가 원하는 사이트로 가도록 할 수 있습니다. 따라서 인증 및 메시지 완전 무결성을 보장해야합니다.
  • 공격자는 대량 트래픽 공격을 할 수 있습니다. 따라서 dos 공격에대한 방지책을 세워야합니다.

<DNS 스푸핑>

DNS 스푸핑은 DNS 응답을 조작하거나 DNS 서버의 캐시 정보를 조작하여 희생자가 의도하지 않은 주소로 접속하게 만든느 공격을 말합니다. 공격 방법에따라 크게 2가지로 나눌 수 있습니다.

  • 스니핑을 이용한 DNS 스푸핑 : 희생자가 DNS 질의를 수행하면 공격자가 이를 스니핑하여 정상 응답보다 빠르게 희생자에게 조작된 웹사이트 IP정보를 담은 DNS 응답을 보내 조작된 주소로 접속하게 만드는 공격기법입니다. 스니핑을 탐지하여 막을 수 있고, 중요한 사이트는 hosts 파일에 등록해서 막을 수 있습니다.
  • DNS cache posoning 공격 : DNS 서버의 캐시정보를 조작하는 공격입니다. 공격자는 root dns로 위장하여 다수의 조작된 DNS 응답을 DNS에게 보내고 DNS는 캐시에 저장하고 이를 질의하는 사용자를 조작된 주소의 사이트로 접속하게합니다. 소프트웨어를 최신버전으로 유지하고 재귀적 질의를 허용하지않고 제한하여 막을 수 있습니다. 또한 인증과 전자서명을 지원하는 DNSSEC 기술을 사용하고 캐싱서비스를 통해 dos공격을 방지합니다.

- DNS 서버 보안 설정

<네임서버 주요 구성 파일>

/etc/names.conf : 각 도메인들에대한 zone 파일 정보들을 갖고 있습니다.

/usr/sbin/named : bind 데몬 파일입니다.

/sur/sbin/names-checkconf : named.conf 파일을 검사하는 유틸리티입니다.

/etc/host.conf : resolver의 옵션을 가지고 있는 파일로 host 파일을 먼저 검색할건지 dns에 쿼리를 먼저할건지 순서를 정합니다.

/etc/resolv.conf : 시스템에서 사용할 네임서버의 주소를 가지고 있습니다.

 

</etc/host.conf>

어디에서 먼저 찾을 것인지를 결정하는 파일로 아래는 예문입니다.

#cat /etc/host.conf
order hosts, bind
  • hosts : /etc/hosts 파일을 지칭합니다.
  • bind : DNS를 의미합니다.

 

 

 

 

 

 

 

 

 

Comments