DNSSEC 구현
- 8분
조직의 DNS 쿼리 응답 가로채기 및 변조는 일반적인 공격 방법입니다. 악의적인 해커가 Contoso의 DNS 서버에서 응답을 변경하거나 클라이언트 컴퓨터를 자신의 서버로 끌어들이기 위해 스푸핑된 응답을 보내는 경우, Contoso의 중요한 정보에 대한 액세스 권한을 얻을 수 있습니다. 전자상거래 웹 서버 및 메일 서버와 같이 초기 연결에 대해 DNS를 사용하는 모든 서비스는 취약합니다.
DNSSEC란 무엇인가요?
DNSSEC는 DNS 쿼리가 거짓 DNS 응답을 수락하지 못하도록 하는 클라이언트를 보호합니다. 디지털 서명된 영역을 호스트하는 DNS 서버가 쿼리를 받으면 서버는 요청된 레코드와 함께 디지털 서명을 반환합니다. 해결 프로그램 또는 다른 서버는 트러스트 앵커에서 퍼블릭/프라이빗 키 쌍의 퍼블릭 키를 가져온 다음, 응답이 인증된 것이고 변조되지 않았는지 유효성을 검사할 수 있습니다. 이렇게 하려면 서명된 영역 또는 서명된 영역의 부모에 대한 트러스트 앵커를 사용하여 해결 프로그램 또는 서버를 구성해야 합니다.
DNSSEC를 배포하기 위한 대략적인 단계는 다음과 같습니다.
- DNS 영역에 서명합니다.
- 트러스트 앵커의 배포를 구성합니다.
- 클라이언트 컴퓨터에서 NRPT(이름 확인 정책 테이블)를 구성합니다.
리소스 레코드
DNS 응답 유효성 검사는 관리자가 생성한 프라이빗/퍼블릭 키 쌍을 DNS 영역에 연결한 다음, 추가 DNS 리소스 레코드를 정의하여 키를 서명하고 게시하는 방법으로 진행됩니다.
리소스 레코드는 퍼블릭 키를 배포하는 반면, 프라이빗 키는 서버에 유지됩니다. 클라이언트에서 유효성 검사를 요청하면 DNSSEC는 클라이언트에서 응답을 인증할 수 있도록 응답에 데이터를 추가합니다.
다음 표에서는 DNSSEC와 함께 사용되는 추가 리소스 레코드에 대해 설명합니다.
리소스 레코드 | 목적 |
---|---|
RRSIG | DNS 레코드 집합에 대한 서명을 보유합니다. DNS 클라이언트는 이를 사용하여 응답의 인증 기관을 확인할 수 있습니다. 리소스 레코드가 확인되면 검증을 위해 RRSIG(리소스 레코드 서명) 레코드가 전송됩니다. |
DNSKEY | 영역에 대한 퍼블릭 키를 게시합니다. 이를 통해 클라이언트는 DNS 서버가 보유한 프라이빗 키로 생성된 서명의 유효성을 검사할 수 있습니다. |
엔섹 | DNS 응답에 클라이언트에게 제공할 데이터가 없는 경우, NSEC(Next Secure) 레코드는 호스트가 존재하지 않음을 인증합니다. |
NSEC3 | 영역을 열거하여 공격을 방지하는, NSEC 레코드의 해시된 버전입니다. |
DS | 자식 영역에 대한 퍼블릭 키의 해시를 포함하는 위임 레코드입니다. 해당 레코드는 부모 영역의 프라이빗 키로 서명됩니다. 서명된 부모의 자식 영역도 서명된 경우에는, 자식에서 부모로의 DS(위임 서명자) 레코드를 수동으로 추가하여 트러스트 체인을 만들어야 합니다. |
DNS 영역 서명
Windows Server에는 구성 및 서명 프로세스를 간소화하고 온라인 서명을 사용하도록 설정하는 DNS 관리자의 영역 서명 마법사 가 포함되어 있습니다. 마법사에서 영역 서명 매개 변수를 선택할 수 있습니다. 기존 영역에서 매개 변수를 사용하거나 기본값을 사용하는 대신 영역 서명 설정을 구성하도록 선택하는 경우, 마법사를 사용하여 다음과 같은 설정을 구성할 수 있습니다.
- 키 서명 키 옵션
- 영역 서명 키 옵션
- 트러스트 앵커 분포 옵션
- 서명 및 폴링 매개 변수
트러스트 앵커 배포
트러스트 앵커는 공개 키로 표시되는 신뢰할 수 있는 엔터티입니다. TrustAnchors 영역은 특정 영역과 연결된 미리 구성된 퍼블릭 키를 저장합니다. DNS에서 트러스트 앵커는 DNSKEY 또는 DS 리소스 레코드입니다. 클라이언트 컴퓨터는 해당 레코드를 사용하여 트러스트 체인을 생성합니다. 서명된 영역에서 응답의 유효성을 검사하려면 모든 도메인 DNS 서버의 영역에서 트러스트 앵커를 구성해야 합니다. 영역을 호스트하는 모든 DNS 서버에는 RRSIG 레코드의 유효성을 검사하는 데 필요한 정보를 제공하기 위해 동일한 DNSKEY 키 레코드가 있어야 합니다.
이름 확인 정책 테이블
NRPT에는 DNS 쿼리를 보내고 해당 쿼리에서 응답을 처리하는 DNS 클라이언트 동작을 제어하는 규칙이 포함되어 있습니다. 예를 들어, DNSSEC 규칙은 클라이언트 컴퓨터에서 특정 DNS 도메인 접미사에 대한 응답의 유효성 검사를 확인하라는 메시지를 표시합니다. 모범 사례로, 그룹 정책은 NRPT를 구성하는 기본 방법입니다. NRPT가 없으면 클라이언트 컴퓨터는 유효성을 검사하지 않고 응답을 수락합니다.
설정 검토 또는 변경
영역 서명을 완료한 후에는 다음 절차를 사용하여 설정을 검토하거나 변경할 수 있습니다.
- DNS 관리자에서 영역에 대한 상황에 맞는 메뉴를 마우스 오른쪽 단추로 클릭하거나 활성화하고 DNSSEC를 선택한 다음 속성을 선택합니다.
- 영역 이름 영역에 대한 DNSSEC 속성 대화 상자를 사용하여 설정을 검토하고 편집하십시오.
- 완료되면 확인을 선택합니다.
데모
다음 비디오는 DNS 콘솔을 사용하여 Windows Server DNS에서 DNSSEC를 구성하는 방법을 보여줍니다. 프로세스의 주요 단계는 다음과 같습니다.
- 서버 관리자를 연 다음 DNS 관리자를 엽니다.
- 적절한 정방향 조회 영역을 찾고, 영역을 마우스 오른쪽 단추로 클릭하거나 해당 상황에 맞는 메뉴를 활성화하고, DNSSEC를 선택한 다음, 영역 서명을 선택합니다.
- 영역 서명 마법사를 사용하여 프로세스를 완료합니다.
- DNS 관리자에서 신뢰 지점을 확장합니다. DNSKEY 리소스 레코드가 존재하고 해당 상태가 유효한지 확인합니다.
- 그룹 정책 관리를 엽니다.
- 편집할 적절한 GPO를 엽니다.
- 그룹 정책 관리 편집기에서 컴퓨터 구성에서 정책>Windows 설정>이름 확인 정책으로 이동합니다.
- 규칙 만들기 섹션의 접미사 텍스트 상자에 적절한 도메인 접미사를 입력합니다.
- 이 규칙에서 DNSSEC을 사용 설정을 선택하고 DNS 클라이언트가 이름 및 주소 데이터가 DNS 서버에 의해 유효성이 검사되었는지 확인하도록 요구를 선택한 후, 만들기를 선택합니다.