DNS 확인자 및 요청 포트 필터링

DNS 확인자 및 요청 포트 필터링

DNS 서버에 대한 DNS 증폭 공격 중에 일부 DNS 요청에 104.49.96.196:80. 이것이 스푸핑된 IP라는 것을 이해합니다. 하지만 DNS 요청의 포트 필터링을 고려해도 괜찮습니까? 나는 우리가 1023보다 큰 포트를 기대해서는 안 된다고 생각합니다. 이것이 안전한 가정입니까? 이 경우 DNS 증폭 공격에 응답하지 않고 발견하기 쉬운 승리라고 생각합니다(패킷이 DNS 서버에 도달하고 WAF에 의해 삭제되지 않은 경우).

답변1

아니요, 안전한 가정은 아닙니다. 포트를 필터링하려고 시도하지 마세요. 유용한 결과가 나오지 않습니다. 클라이언트가 로컬 포트를 처리하는 방법은 자체 비즈니스이므로 서버로서 모든 포트에서 트래픽을 얻을 것으로 예상할 수 있습니다. 1024에서의 Unix 분할은 오늘날 기본적으로 더 이상 의미가 없는 과거의 구식 유산입니다.

DNS 증폭을 방지하려는 경우 "표준" 조치(예: 수신하는 모든 트래픽을 실제로 처리해야 하는지 확인하는 것, 즉 개방적이지 않은지 확인) 외에도 요즘 가장 자주 사용되는 방법 중 하나는 RRL입니다. 속도 제한.

보다https://www.infoblox.com/dns-security-resource-center/dns-security-solutions/dns-security-solutions-response-rate-limiting-rrl/주제에 대한 소개와https://www.isc.org/docs/DNS-RRL-LISA14.pdf좀 더 기술적인 프레젠테이션을 원하시면

답변2

DNS 클라이언트의 소스 포트는 > 1023이어야 합니다.

< 1024인 경우 다른 DNS 서버에서 오는 경우 소스 포트 53만 되어야 하지만 그럴 가능성은 없습니다.

확인tcpdump port 53

살펴보면서RFC6056그리고일부 샘플을 사용한 단순화더 나아가서 제대로 작동하는 IP 스택은 49152(첫 번째 임시 포트)보다 낮은 소스 포트를 가져서는 안 된다고 말할 수도 있습니다. 그러나 섹션 3.2는 이에 모순되며 샘플도 마찬가지입니다.

그러나 누구든지 RFC6056을 재정의하는 RFC에 대한 참조를 제공할 수 있을 때까지는 sport <= 1023이 유효하지 않다고 말하는 것이 안전합니다.

어떤 이유로든 요청이 실패하는 경우 클라이언트는 다시 시도하여 성공적인 요청을 받아야 합니다. (실패하더라도 해당 구현을 무시합니다)

관련 정보