[server] DNS 재귀가 안전하지 않지만 내부 응용 프로그램에 필요합니까?

Windows Server 2008 관리에서 서버는 일부 도메인에 대해 DNS (이름 서버)를 호스트하고 공개적으로 액세스 할 수있는 일부 응용 프로그램을 호스팅합니다.

보안 검색 결과 재귀 쿼리를 허용하기 때문에 DNS 구성이 안전하지 않은 것으로 나타났습니다.

재귀 쿼리를 비활성화하려고 시도했지만 몇 가지 문제가 발생했습니다 (로컬 앱에서 보낸 전자 메일이 배달되지 않았으며 타사 사이트에 연결하는 로컬에서 실행중인 앱이 연결의 도메인 이름을 확인할 수 없음 등). 따라서 서버 자체에서 시작된 DNS 요청은 재귀 쿼리에 의존하여 작동합니다.

서버에서 시작된 DNS 쿼리가 작동하도록 허용하면서 서버에서 호스팅 된 DNS에 의한 재귀 쿼리를 비활성화하는 방법이 있습니까? 로컬 DNS 서버에서 재귀 쿼리를 비활성화하고 네트워크 설정에서 나가는 DNS를 외부 (예 : 8.8.8.8)로 설정하여 나가는 DNS 쿼리가 먼저 도착 하고이 서버의 DNS는 끝날 수 있는지 궁금합니다. 실제로 로컬로 호스트하는 도메인에 대해 쿼리를받습니다.

시간 내 줘서 고마워!



답변

전체 인터넷에 재귀 조회 기능을 제공하지 않는 것이 좋습니다. 따라서 DNS 서버가 신뢰할 수있는 쿼리에만 응답하도록 DNS 서버를 구성하는 것은 Good Thing TM 입니다.

표면적으로는 마지막 단락에서 얻은 결론이 좋은 것 같습니다 . 재귀 조회를 제공 할 권한 있는 DNS 서버를 사용하도록 서버의 자체 TCP / IP 설정을 구성하십시오 . DNS 서버 프로세스는 서버 컴퓨터의 NIC에서 TCP / IP 설정에 구성된 DNS 서버를 특히 사용하지 않습니다. 대신 DNS 서버 구성에 따라 요청을 전달하거나 루트 힌트를 사용합니다.

서버에서 실행중인 응용 프로그램이 도메인을 쿼리하려고하면 해당 컴퓨터에서 실행중인 DNS 서버가 요청에 대한 권한을 갖습니다. 궁극적으로 해당 컴퓨터에서 실행중인 DNS 서버 프로세스에 요청하면 쿼리에 응답합니다.


답변

서버에서 시작된 DNS 쿼리가 작동하도록 허용하면서 서버에서 호스팅 된 DNS에 의한 재귀 쿼리를 비활성화하는 방법이 있습니까?

Microsoft의 DNS 서버가 아닌 것은 없습니다.

ISC의 DNS 서버 인 BIND를 사용하면 뷰가있는 항목을 처리 할 수 ​​있습니다. Microsoft의 DNS 서버에는 그러한 메커니즘이 없습니다. 따라서 지정된 Microsoft DNS 서버 인스턴스의 경우 공용 콘텐츠 DNS 서버인지 사이트 로컬 프록시 DNS 서버 인지 선택해야 합니다. 그것은 사물을 피할 수 없으며 다른 DNS 클라이언트에 대해 다른 종류의 서버 인 것처럼 가장합니다.

보안 테스트 서비스 / 도구는 매우 옳습니다. 그것은 이다 프록시 서비스를 제공하지에 가장 좋은 방법 – 어떤 프록시 서비스의 종류 : 그것을 할 HTTP 프록시 서비스, 프록시 서비스 또는 SMTP 전송 서비스 DNS – 자신의 사이트 outwith 인터넷의 나머지 부분을. 당신은 매우 해야별도의 서버를 : 콘텐츠 DNS 서버는 인터넷에있는 모든 사람에 등록했다고 도메인 이름에 대한 공용 DNS 데이터를 게시; LAN / 조직의 컴퓨터를 대신하여 조직 / LAN의 컴퓨터에서만 액세스 할 수있는 로컬 쿼리 DNS 서버. Microsoft의 DNS 서버에서는 이것이 쉽지 않습니다.

그것은 것 , 특히 컴퓨터가 도메인 컨트롤러 인 경우에 어렵다. 인터넷 전체에서이 시스템에 직접 연결할 수 있다고 명시되어 있습니다. 이러한 시스템이 도메인 컨트롤러 인 경우 지금 네트워크 조직을 다시 생각해야합니다 . 프록시 DNS 서비스뿐만 아니라 수많은 내부 서비스를 대중에게 노출시킬 수 있습니다. 이것이 도메인 컨트롤러가 아니라는 가정에 대해 작업 해 봅시다.

도메인 컨트롤러가 아니며 구성원 서버 일 뿐이 므로 컴퓨터 의 DNS 클라이언트 가 컴퓨터의 자체 DNS 서버 (또는 초기에 다른 도메인 컨트롤러의 DNS 서버)를 프록시로 사용해야한다는 요구 사항이 없습니다. DNS 서비스 (도메인 컨트롤러의 경우) 그럴 경우 컴퓨터의 DNS 서버에서 프록시 DNS 서비스를 해제 할 수 없습니다. 다행히도 도메인 컨트롤러가 아니며 DNS 클라이언트는 자체가 아닌 프록시 DNS 서비스를 위해 다른 컴퓨터를 사용할 수 있습니다.

그러나 구성원 서버 시스템의 DNS 클라이언트는 여전히 내부 프록시 DNS 서버 를 사용해야합니다 . ISP, Google 또는 Active Directory가 LAN에서 사용중인 모든 DNS 데이터를 모르는 다른 회사에서 제공 한 것과 같은 외부 DNS 서버를 가리킬 수는 없습니다 . 그러나 머신의 DNS 클라이언트가 하나 이상의 도메인 컨트롤러에있는 DNS 서버를 가리킬 수 있습니다. 이것은 매우 간단하며 결국 LAN의 모든 워크 스테이션 에서 이미 수행중인 작업입니다 . 구성원 서버 의 DNS 클라이언트는 모든 워크 스테이션의 DNS 클라이언트처럼 구성 하면됩니다 .

컴퓨터의 DNS 클라이언트가 프록시 DNS 서비스를 위해 컴퓨터에서 실행되는 DNS 서버를 사용하지 않는 경우, 어떤 형태의 프록시 DNS 서비스도 제공하지 않도록 Microsoft의 DNS 서버를 구성하기 만하면됩니다.

추가 자료


답변

Evan이 자신의 답변에서 언급했듯이 응용 프로그램은 서버에서 DNS 서버 구성 요소와 완전히 독립적 인 DNS 클라이언트 구성 요소를 사용해야합니다. DNS 서버 구성 요소는 재귀를 수행하지 않도록 구성하여 신뢰할 수있는 DNS 영역에 대해서만 제출 된 쿼리에 응답 할 수 있습니다.

응용 프로그램은 관련 NIC의 TCP / IP 속성에 구성된 DNS 서버를 사용할 수 있으며 재귀를 수행 할 모든 DNS 서버 (예 : Google의 DNS 서버)를 사용하도록 구성 할 수 있습니다. 관련 NIC의 TCP / IP 속성에 구성된 DNS 서버는 동일한 서버에서 실행되는 DNS 서버를 가리킬 필요가 없습니다.


답변

최근에 같은 문제가 발생했으며 DNS 서버가 증폭 공격에 사용되었습니다. 그러나 다른 내부 서버에 대해서는 계속 재귀를 사용해야합니다.

Cisco 라우터가있는 경우 가능한 해결 방법은 다음과 같습니다. 외부 DNS를 Cisco 7200VXR 라우터로 옮기고 특정 DNS 영역에만 응답하도록 구성했습니다. 내부 DNS 서버를 쿼리하므로 두 곳에서 모든 것을 입력 할 필요가 없습니다.

다음은 내가 사용한 Cisco 구성의 스 니펫입니다.

ip dns view default
 dns forwarder 192.168.0.xx (internal DNS server)
 domain round-robin

ip dns view-list default
 view default 1
  restrict name-group 1

ip dns name-list 1 permit abc.com
ip dns name-list 1 permit def.com
ip dns name-list 1 permit anyotherdomainthatyouhost.com
ip dns name-list 1 permit 3.2.1.in-addr.arpa (needed for reverse PTR lookups)

interface fastethernet0/0 (the interface where the IP address is that will host DNS)
 ip dns view-group default
 ip address 1.2.3.4 secondary (use the public facing IP you will use to host DNS)

ip dns server

또한 다음과 같은 액세스 목록으로 라우터에 DNS 패킷을 허용하는 것을 잊지 마십시오.

permit udp any host 1.2.3.4 eq domain


답변