DNSSEC(Domain Name System Security Extensions)는 DNS 응답의 유효성을 검사할 수 있게 하여 DNS(Domain Name System) 프로토콜에 보안을 추가하는 확장 집합입니다. DNSSEC는 원본 인증, 데이터 무결성 및 인증 거부 기능을 제공합니다. DNSSEC를 사용하는 DNS 프로토콜은 특히 DNS 스푸핑 공격과 같은 특정 유형의 공격을 받을 위험이 줄어듭니다.
DNSSEC 작동 방법
DNSSEC를 지원하는 권한 있는 DNS 서버에서 사용되는 경우 DNS 영역은 영역 서명 프로세스를 사용하는 DNSSEC로 보호할 수 있습니다. DNSSEC를 사용하여 영역에 서명하면 DNS 쿼리 및 응답의 기본 메커니즘을 변경하지 않고 유효성 검사 지원이 영역에 추가됩니다.
DNS 응답의 유효성 검사는 DNS 응답에 포함된 디지털 서명을 사용하여 수행됩니다. 이들 디지털 서명은 영역 서명 중에 생성되어 영역에 추가되는 DNSSEC 관련 리소스 레코드에 포함됩니다.
핵심 DNSSEC 확장은 다음 RFC(Request for Comment)에 지정되어 있습니다.
다음 그림에서는 영역 서명 전 및 후에 contoso.com 영역에서 DNS 리소스 레코드의 예를 보여 줍니다.
이러한 각 리소스 레코드에 대한 자세한 내용은 DNSSEC 리소스 레코드를 참조하세요.
DNSSEC 리소스 레코드
다음 표에서는 DNSSEC와 함께 사용되는 리소스 레코드 종류를 보여 줍니다.
| 리소스 레코드 종류 | Description |
|---|---|
| RRSIG(리소스 레코드 서명) | DNSSEC를 통해 생성된 서명은 RRSIG 레코드에 포함됩니다. 각 RRSIG 레코드는 이 레코드가 디지털 서명을 제공하는 영역의 또 다른 레코드와 일치합니다. 확인자가 이름에 대한 쿼리를 발급하면 응답에서 하나 이상의 RRSIG 레코드가 반환됩니다. |
| NSEC(Next Secure) | NSEC 레코드는 DNS 이름이 없음을 증명하는 데 사용됩니다. NSEC 레코드를 사용하여 DNS 이름이 없다고 믿도록 DNS 클라이언트를 속이는 스푸핑 공격을 방지합니다. |
| NSEC3(Next Secure 3) | NSEC3은 영역 걷기를 방지하는 NSEC의 대체 또는 대안입니다. 영역 탐색은 영역의 모든 이름을 검색하기 위해 NSEC 쿼리를 반복하는 프로세스입니다. Windows Server 2012 이상 운영 체제를 실행하는 DNS 서버는 NSEC 및 NSEC3을 모두 지원합니다. 영역에는 NSEC 또는 NSEC3 중 하나를 사용하여 서명할 수 있지만, 두 방법을 모두 사용할 수는 없습니다. |
| NSEC3PARAM(Next Secure 3 매개 변수) | NSEC3PARAM 레코드는 존재하지 않는 DNS 이름에 대한 응답에 포함할 NSEC3 레코드를 확인하는 데 사용됩니다. |
| DNSKEY(DNS 키) | DNSKEY 리소스 레코드는 서명을 확인하는 데 사용되는 공개 암호화 키를 저장합니다. DNSKEY 레코드는 DNS 서버에서 유효성 검사 프로세스 중에 사용됩니다. DNSKEY 레코드는 ZSK(영역 서명 키) 또는 KSK(키 서명 키)에 대한 공개 키를 저장할 수 있습니다. |
| DS(위임 서명자) | DS 레코드는 위임을 보호하는 데 사용되는 DNSSEC 레코드 종료입니다. DS 레코드는 자식 영역에 대한 인증 체인을 빌드하는 데 사용됩니다. |
DS 레코드를 제외하고 이러한 모든 레코드는 DNSSEC로 서명될 때 자동으로 영역에 추가됩니다. DS 레코드는 자식 영역에 대한 보안 위임을 만들기 위해 부모 영역에 수동으로 추가할 수 있는 특수 레코드입니다. 예를 들어 contoso.com 영역에는 secure.contoso.com에 대한 DS 레코드가 포함될 수 있습니다. 그러나 이 레코드는 부모 영역에서 만들거나 자식 영역에서 만든 다음 부모 영역으로 전파해야 합니다. DS 레코드는 영역에 서명할 때 자동으로 만들어지지 않습니다.
NSEC 또는 NSEC3 레코드는 영역 서명 중에 자동으로 영역에 추가됩니다. 그러나 서명된 영역에 NSEC 및 NSEC3 레코드가 둘 다 포함될 수는 없습니다. 영역에 추가되는 레코드 종류(NSEC 또는 NSEC3)는 영역 서명을 구성하는 방법에 따라 달라집니다. 이전 예제에서 영역은 NSEC3을 사용하여 서명됩니다.
트러스트 앵커
DNSKEY 및 DS 리소스 레코드를 트러스트 앵커 또는 트러스트 지점이라고도 합니다. 서명된 영역에 대한 DNS 응답의 DNSSEC 유효성 검사를 수행할 모든 권한 없는 DNS 서버에 트러스트 앵커를 배포해야 합니다. DNS 서버가 도메인 컨트롤러에서 실행되는 경우 트러스트 앵커는 AD DS(Active Directory Domain Services)의 포리스트 디렉터리 파티션에 저장되며 포리스트의 모든 도메인 컨트롤러로 복제할 수 있습니다. 독립 실행형 서버에서 트러스트 앵커는 TrustAnchors.dns라는 파일에 저장됩니다.
Windows PowerShell을 사용하여 Get-DnsServerTrustAnchor 명령을 사용하여 영역에 대한 신뢰 앵커를 볼 수 있습니다. 서버에서 현재 신뢰 지점을 모두 보려면 Get-DnsServerTrustPoint PowerShell 명령을 사용합니다. Windows Server 2012 이상 운영 체제를 실행하는 DNS 서버도 보안 지점 컨테이너의 DNS 관리자 콘솔 트리에 구성된 신뢰 앵커를 표시합니다.
다음 단계
DNSSEC에서 리소스 레코드를 사용하여 DNS 응답의 유효성을 검사하고 보호하는 방법에 대한 자세한 내용은 DNS 응답 유효성 검사를 참조하세요.