DNS DDOS 공격 - 로그를 이해하고 싶습니다.

DNS DDOS 공격 - 로그를 이해하고 싶습니다.

DOOS 공격(대체로 감염되지 않음)의 일부로 현재 다음 형식의 로그 메시지가 표시됩니다.

<DATE> client <EXTERNAL-IP>#3074 (<NAME>): query: <SAME-NAME> IN RRSIG + (<ONE-OF-MY-IPs>)

DNS 로그를 읽어보니 이것이 < EXTERNAL-IP >에서 오는 쿼리이고 그 결과가 < ONE-OF-MY-IPs >로 전송되는 것으로 나타났습니다. 그 맞습니까?

우리는 곧 업그레이드될 이전 BIND를 실행하고 있지만 이 쿼리가 실제로 수행하는 작업이 무엇인지 이해하고 싶었습니다(많은 쿼리가 전송되었습니다).

편집: 또한 결과를 다른 IP로 보내기 위해 어떻게 구조화할 수 있는지 알고 있으면 좋을 것입니다.

답변1

BIND 쿼리 로그 형식

Alan Clegg(ISC)를 팔로우하고 계셨나요?BIND 로깅에 대한 슬라이드? 16페이지에는 다음과 같이 나와 있습니다.틀리게:

응답이 전송되는 주소(괄호 안)

BIND 9 관리자 참조 매뉴얼에서는 실제로 이 주소가질문전송되었습니다. 즉DNS 서버의 IP 주소. 매뉴얼 구조는 읽기도 참조하기도 쉽지 않으므로 관련 문서의 전체 경로는 다음과 같습니다.

  • 참조 설명서 버전 9.14.11에서,
    • 5장. BIND 9 구성 참조,
      • 구성 파일 문법,

더 명확한 형식과 강조점은 내 것입니다.

  1. 쿼리 로그 항목은 먼저 클라이언트 개체 식별자를 @0x<hexadecimal-number>형식으로 보고합니다.
  2. 다음으로 클라이언트의 IP 주소와 포트 번호를 보고합니다.
  3. 쿼리 이름, 클래스 및 유형.
  4. 다음으로 보고한다
  • Recursion Desired 플래그가 설정되었는지 여부( +설정된 경우, -설정되지 않은 경우)
  • 쿼리가 서명되었는지 여부( S)
  • EDNS 버전 번호( )와 함께 EDNS가 사용 중인지 여부 E(#),
  • TCP가 사용되었는지 여부( T),
  • DO(DNSSEC Ok) 설정 여부( D),
  • CD(CheckingDisabled)가 설정되어 있는지( C),
  • 유효한 DNS Server COOKIE가 수신되었는지 여부( V)
  • 유효한 서버 COOKIE가 없는 DNS COOKIE 옵션이 존재하는지 여부( K).
  1. 그 후 쿼리가 전송된 대상 주소가 보고됩니다.
  2. 마지막으로 클라이언트 쿼리에 CLIENT-SUBNET 옵션이 있는 경우 형식으로 대괄호 안에 포함됩니다 [ECS address/source/scope].

그래서:

info: client @0xf00 203.0.113.88#3074 (example.com): query: example.com IN RRSIG + (192.0.2.1)
  • 203.0.113.88#3074클라이언트의 IP 주소와 포트입니다.
  • example.com쿼리 이름, IN클래스 및 RRSIG유형(RFC 4034, 3)
  • +클라이언트에게 재귀를 요청했다고 알려줍니다.
  • 192.0.2.1쿼리가 전송된 DNS 서버의 IP 주소입니다.

DNS 증폭 공격 및 이를 완화하는 방법

이 로그 항목에는 DDoS 공격의 징후가 없습니다.그 자체로, 응답은 클라이언트로 다시 전송됩니다 203.0.113.88#3074. 클라이언트 IP 주소가 스푸핑된 경우증폭 공격RRSIG원래 쿼리보다 훨씬 큰 쿼리 에 대한 응답에 관한 것입니다 .

...공격자는 대상(피해자)의 주소로 설정된 쿼리의 소스 IP 주소를 사용하여 UDP DNS 쿼리를 반사 확인자로 전송하도록 합니다. 반사 서버는 재귀 쿼리를 처리하고 응답을 쿼리가 발생했다고 생각하는 IP 주소입니다. 스푸핑된 원본으로 인해 응답은 실제로 대상으로 전송됩니다. - -

요청되지 않은 DNS 응답은 대상 컴퓨터에 도달하면 삭제되지만, 도달할 때쯤에는 대상 컴퓨터에서 네트워크 리소스와 CPU 시간의 작은 부분을 소비하게 됩니다.

상황에 따라 이를 완화하려면 다음을 수행하십시오.

개방형 재귀 이름 서비스 없음

권한 있는 이름 서버는 재귀적 이름 서비스를 제공해서는 안 됩니다. 이 요구 사항은 "RD" 비트 세트를 사용하여 기관 관할권 외부로 쿼리를 보내 테스트됩니다.

이것이라면재귀적이름 서버를 사용하려면 이 서비스를 사용하도록 허용되어야 하는 자신의 네트워크에만 액세스를 제한하세요. 이는 allow-query또는 를 사용하여 수행할 수 있습니다 allow-recursion.

allow-recursion

이 서버를 통해 재귀 쿼리를 수행할 수 있는 호스트를 지정합니다. 가 allow-recursion설정되지 않은 경우 allow-query-cache설정된 경우 사용되고, 그렇지 않은 경우 allow-query설정된 경우 사용되며, 그렇지 않은 경우 기본값( localnets; localhost;)이 사용됩니다.

RRL이 이를 방어할 수 있도록 하려면 named.conf다음 rate-limit절을 편집하고 전역 옵션에 추가하십시오.

options {
         … 
          rate-limit {
              responses-per-second 10;
          };
      };

이에 대해서는 공식 문서에서 더 자세히 설명됩니다.options명령문 정의 및 사용법:응답 속도 제한. 거기에서 찾을 수 있습니다

- why and how to use `slip` to truncate responses (done by default with value `2`)
- use `qps-scale` to tighten defenses during attacks.

관련 정보