개방형 DNS 되풀이를 실행하든 신뢰할 수있는 DNS 서버를 실행하든 문제는 동일하며 가능한 대부분의 솔루션도 동일합니다.
최고의 솔루션
DNS 쿠키 는 DNS 서버에 클라이언트 IP 주소가 스푸핑되지 않았 음을 증명하기 위해 클라이언트가 쿠키를 보내도록 요구하는 방법을 제안하는 표준입니다. 첫 번째 조회에는 추가 왕복 1 회가 소요되며 이는 솔루션이 제공 할 수있는 가장 낮은 오버 헤드입니다.
이전 고객을위한 대체
DNS 쿠키는 아직 표준화되지 않았으므로 현재와 향후 몇 년간 구형 클라이언트를 지원해야합니다.
DNS 쿠키 지원없이 클라이언트의 제한 요청을 평가할 수 있습니다. 그러나 속도 제한으로 인해 공격자가 DNS 서버를보다 쉽게 수행 할 수 있습니다. 일부 DNS 서버에는 신뢰할 수있는 DNS 서버 전용으로 설계된 속도 제한 기능이 있습니다. 재귀 해결 프로그램에 대해 요청하므로 이러한 속도 제한 구현이 적용되지 않을 수 있습니다. 설계상의 속도 제한은 서버의 병목 현상이되므로 공격자는 속도 제한이없는 경우보다 합법적 인 요청을 제거하기 위해 트래픽을 적게 보내야합니다.
속도 제한의 한 가지 장점은 공격자가 DNS 요청으로 DNS 서버를 과도하게 사용하는 경우 서버에 ssh하고 상황을 조사 할 수있는 용량이 남아있을 가능성이 높다는 것입니다. 또한 속도 제한은 주로 많은 요청을 보내는 클라이언트 IP에서 요청을 삭제하도록 설계 될 수 있으며, 이는 스푸핑 클라이언트 IP에 액세스 할 수없는 공격자로부터 DoS로부터 사용자를 보호하기에 충분할 수 있습니다.
이러한 이유로 실제 용량에서 약간의 속도 제한은 실제로 증폭으로부터 보호하지 않더라도 좋은 생각 일 수 있습니다.
TCP 사용
UDP에 대한 응답이 너무 크다는 오류 코드를 전송하여 클라이언트가 TCP를 사용하도록 할 수 있습니다. 여기에는 몇 가지 단점이 있습니다. 두 번의 추가 왕복이 필요합니다. 그리고 일부 잘못된 클라이언트는이를 지원하지 않습니다.
두 번의 추가 왕복 비용은이 방법을 사용하는 첫 번째 요청으로 만 제한 될 수 있습니다.
클라이언트 IP가 확인되지 않으면 DNS 서버는 잘린 응답을 보내 클라이언트가 TCP로 전환하도록 할 수 있습니다. 잘린 응답은 증폭을 제거하는 요청 (또는 클라이언트가 EDNS0을 사용하고 응답이 사용하지 않는 경우 더 짧음)만큼 짧을 수 있습니다.
TCP 핸드 셰이크를 완료하고 연결에서 DNS 요청을 보내는 클라이언트 IP는 일시적으로 화이트리스트에 올릴 수 있습니다. 허용 된 IP는 UDP 쿼리를 보내고 최대 512 바이트 (EDNS0를 사용하는 경우 4096 바이트)의 UDP 응답을받습니다. UDP 응답이 ICMP 오류 메시지를 트리거하면 IP가 화이트리스트에서 다시 제거됩니다.
블랙리스트를 사용하여이 방법을 되돌릴 수도 있습니다. 이는 클라이언트 IP가 기본적으로 UDP를 통해 쿼리 할 수 있지만 ICMP 오류 메시지로 인해 블랙리스트를 해제하려면 TCP 쿼리가 필요한 IP가 블랙리스트에 있음을 의미합니다.
모든 관련 IPv4 주소를 다루는 비트 맵을 444MB의 메모리에 저장할 수 있습니다. IPv6 주소는 다른 방법으로 저장해야합니다.
DNS 서버가이 방법을 구현했는지 여부는 알 수 없습니다.
또한 일부 TCP 스택은 증폭 공격에서 악용 될 수 있다고보고되었습니다. 그러나 이는 DNS뿐만 아니라 모든 TCP 기반 서비스에 적용됩니다. 이러한 취약점은 TCP 스택이 SYN 패킷에 응답하여 둘 이상의 패킷을 보내지 않도록 수정 된 커널 버전으로 업그레이드하여 완화해야합니다.