답변:
첫째, 이런 종류의 공격은 제목에서 알 수 있듯이 DNS 자체를 대상으로하지 않습니다. 물론 DNS 서버에 추가로드가 발생하지만 주된 목적은 다른 사람을 DDoS하는 것입니다. 잘못된 서버 구성으로 인해 상황이 악화 될 수 있지만 결국이 문제는 DNS 및 UDP 설계, 사실상 상태 비 저장 통신 프로토콜에 내재되어 있습니다.
기본적으로 다음과 같이 작동합니다. 공격자는 일반 (DNS) 쿼리를 (DNS) 서버로 보냅니다. 이러한 쿼리는 대상 시스템에서 시작된 것처럼 표시됩니다. DNS 서버는 이제 쿼리에 응답하여 해당 주장의 원점 인 피해자 에게 응답을 보냅니다 . 이것이 반사 공격 이라고하는 이유 입니다.
이것은 엽서에서 발신자 주소를 신뢰할 수있을뿐만 아니라 상태 비 저장 통신의 소스 (DNS over UDP)를 확인할 수 있기 때문에 가능합니다. 서버는 쿼리가 합법적인지 또는 그러한 공격의 일부인지를 결정할 방법이 없습니다. DNS는 여기에 가장 많은 수의 서버가 있기 때문에 가장 널리 사용되는 프로토콜이며이를 사용하기 위해 많은 기술적 통찰력이나 특별한 장비가 필요하지 않습니다.
상황을 악화시키고 공격 효율을 높이 려면 증폭 부분을 살펴보십시오 . 공격자의 트래픽 크기가 결과 트래픽과 같으면 큰 영향을 미치지 않습니다. 침입자의 유일한 이점은 자신의 주소가 DNS 서버 뒤에 숨겨져 있다는 것입니다. 발신자 주소를 직접 위조 할 수 있으므로 DNS를 통해 다시 라우팅 할 필요는 없습니다. 그러나 DNS가 대답하기 때문에 DNS가 여기에서 인기가있는 또 다른 이유 는 질문보다 훨씬 클 수 있습니다 . 사용 된 정확한 쿼리에 따라 다양한 숫자를 찾을 수 있지만 서버가 재귀 쿼리 를 수행하기에 충분히 친숙하다면 최대 1:60 까지 올라갈 수 있습니다.당신을 위해. 따라서 공격자는 많은 악의적 인 트래픽을 생성하기 위해 자신의 통제하에 많은 컴퓨터가 필요하지 않습니다.
공개 인터넷에서 수백, 수천 개의 "공개"DNS 서버를 쉽게 찾을 수 있으므로, 자신이 알고있는 각 개방형 DNS 서버가 대상에 대해 60 배로 증폭 된 쿼리를 반영 할 경우 공격자가 얼마나 적은 작업을하는지 신속하게 계산할 수 있습니다. 처음에 말했듯이, 이것을 대처하는 좋은 방법은 없습니다. 당연히 많은 DNS 서버는 구성 오류로 인해 모든 사람에게 개방되어 있지만 열려서는 안됩니다. 그러나 개방형 서버는 개방형 서버가 있어야합니다. 왜냐하면 그것이 목적이기 때문입니다.
요청이 공격의 일부인지 여부를 알 수 없지만 유일한 옵션은 더 이상 서버를 실행하지 않는 것입니다. 속도 제한 및 기타 장난감으로 바이올린을 칠 수는 있지만 완전히 제거 할 수는 없습니다. 재미있게 DNS를 제공하는 경우 요청의 소스 IP를 블랙리스트에 추가 할 수 있습니다. 그러나 규모가 크면 피해자에게 더 많은 피해를 줄 것입니다. DNS 서버에서 볼 수있는 것은 피해자의 주소뿐입니다. 회사가 제공자의 DNS를 통해 공격을 받고 있고 제공자가 회사의 DNS 서비스를 중단하기로 결정했다고 가정 해보십시오. 공격자는이를 서비스 거부 와 관련된 독보적 인 보너스 점수로 평가할 수 있습니다 .
어쨌든 이러한 공격은 하루 종일 발생하며 인터넷의 "배경 소음"으로 간주됩니다. 공용 (재귀) DNS 서버를 설정하면 임의의 공격에 참여하는 데 오래 걸리지 않습니다. 물론 dns 루트 서버와 같은 대규모 인프라가 증폭에 잘못 사용되는 경우 상황이 나빠질 수 있지만 이러한 경우 공격이 "정상"수준으로 내려갈 때까지 개인이 사전 대책을 취합니다.
지금까지 가르침에 대해. 마지막으로 귀하의 질문에 대답하십시오 :
제한없이 쿼리에 응답하면 서버가 취약하다는 것을 알고 있습니다. 기간. 재귀 쿼리를 제공하는 경우 서버는 공격자에 대해 언급 된 1:60 비율을 생성 할 수 있습니다. 비 재귀 만 제공하는 경우 나쁘지 않지만 여전히 ...
그래서...
allow-recursion
및 allow-query
지시문을 살펴보십시오.allow-recursion
"없음"으로 설정된 재귀가 전혀 필요 하지 않습니다..
iptables -A INPUT -p udp --dport 53 --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP
이제이 점을 염두에두고 가야합니다. 지금도 서버에 악의적 인 트래픽이있을 수 있지만 숙면을 취하지 않는 양은 아닙니다.