
공개적으로 액세스할 수 있는 네임서버가 있습니다.두 개의 도메인에 대한 권한 있는 이름 서버입니다..
현재 서버는 ANY
isc.org, Ripe.net 및 이와 유사한 가짜 유형 요청으로 넘쳐납니다.알려진 분산 DoS 공격).
서버는 BIND를 실행하고 allow-recursion
이러한 요청이 거부되도록 내 LAN으로 설정했습니다. 이러한 경우 서버는 루트 서버를 참조하는 섹션 authority
으로 만 응답합니다.additional
응답을 전혀 보내지 않고 이러한 요청을 완전히 무시하도록 BIND를 구성할 수 있습니까?
답변1
동일한 문제에 직면하여 모든 재귀 요청을 무시하기로 결정했습니다. 모든 확인자는 내 서버를 신뢰할 수 있는 서버로 사용하려고 할 때 비재귀 쿼리를 보냅니다. 내 경우에는 잘못 구성된 클라이언트와 공격자만이 재귀 쿼리를 사용합니다.
불행하게도 나는 BIND가 그렇게 하도록 하는 방법을 찾지 못했지만 iptables가 당신에게 충분할 경우를 대비해 나는 다음을 사용했습니다.
iptables -t raw -I PREROUTING -i eth0 -p udp --destination-port 53 \
-m string --algo kmp --from 30 \
--hex-string "|01000001000000000000|" -j DROP
답변2
나는 시도할 것이다:
zone "." {
type redirect;
allow-query "none";
}
클라이언트를 루트 서버로 참조하는 응답은 "리디렉션" 영역에 의해 제어됩니다. 그러면 해당 항목에 응답하지 말라고 알려야 합니다.
이는 Bind9 문서에 암시되어 있습니다.http://ftp.isc.org/isc/bind9/cur/9.9/doc/arm/Bv9ARM.ch06.html#id2592674
"none"
로컬 서브넷으로 교체할 수도 있습니다 .
이미 zone "."
선언이 있는 경우 추가하기만 하면 됩니다 allow-query "none";
.
답변3
문자열 isc.org를 차단하거나 이에 대한 16진수 문자열을 차단하려고 했습니까?
이것은 나에게 효과적이었습니다.
iptables -A INPUT -p udp -m string --hex-string "|03697363036f726700|" --algo bm -j 삭제
답변4
기본 아이디어는 바인딩이 DNS 응답을 Refused로 분류한 다음 iptables를 사용하여 Refused를 자동으로 무시되도록 변환하도록 합니다.
Refused는 명명된.conf 옵션 섹션에서 쉬운 부분입니다.
allow-recursion { none;};
또는 물론 로컬 예외에 대해 선호하는 ACL...
다음 미친 iptables 마술은 필요에 따라 "-o eth0"을 조정하거나 제거합니다. 이 명령은 UDP 이전의 표준 20바이트 IPv4 레이어 헤더를 가정합니다.
iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --from 30 --to 32 --hex-string "|8105|" --algo bm -j DROP
다음 비트가 설정된 DNS 응답의 플래그 필드에 대한 키입니다.
- DNS 응답
- 재귀 쿼리
- 응답 코드가 거부됨
테스트를 위한 피드백을 얻기 위해 규칙이 일치할 때 디버그 "응답 전송 오류: 호스트에 연결할 수 없음"에서 바인드를 실행하는 로그 메시지가 확인되었습니다.
이 모든 것이 다소 무의미한 작업임을 인정해야 합니다. 증폭이 없으면 공격자는 TCP SYN을 쉽게 반영할 수 있습니다. 결국 DNS는 TCP를 사용하거나 Eastlake의 DNS 쿠키를 배포하는 것 외에는 실행 가능한 솔루션이 없어 중단되었습니다.