내 DNS 서버가 20mbps를 밀고 있습니다. 왜 그렇습니까?


22

EC2에서 DNS 서버를 실행 중이며 어제 청구 대시 보드를 확인하고 이번 달에 1.86TB의 사용 된 데이터를 발견했을 때 어제 약 20mbps를 추진하고있었습니다. 그것은 작은 프로젝트 랩에 대한 큰 청구서입니다. 나는 성능 저하를 눈치 채지 못했고 이전에 트래픽 임계 값을 설정하지 않았지만 지금은 대역폭 요금이 $ 200 이상이 들었습니다.

누군가가 내 DNS 서버를 증폭 공격의 일부로 사용한 것 같습니다. 그러나 나는 방법에 대한 손실이 있습니다.

구성은 다음과 같습니다.

// BBB.BBB.BBB.BBB = ns2.mydomain.com ip address

options {
        listen-on port 53 { any; };
//      listen-on-v6 port 53 { ::1; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-transfer { BBB.BBB.BBB.BBB; };
        allow-query-cache { BBB.BBB.BBB.BBB; };
        allow-query { any; };
        allow-recursion { none; };

        empty-zones-enable no;
        forwarders { 8.8.8.8; 8.8.4.4; };

        fetch-glue no;
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "mydomain.com" IN {
        type master;
        file "zones/mydomain.com";
        allow-transfer { BBB.BBB.BBB.BBB; localhost; };
};

이 구성이 주어지면 로컬에서 호스팅하지 않는 영역에 대한 쿼리에 응답하지 않아야합니까? 이 서버는 일부 도메인의 SOA이지만 다른 서버가 조회하는 데는 사용되지 않습니다 (모두 OpenDNS 또는 Google에 대해 해결 함). 여기에 어떤 지시가 잘못 되었습니까, 아니면 잊고 있습니까? 내 로그 (63MB 이상)는 다음으로 가득 차 있습니다.

client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied

9
이것은 귀하의 질문에 대한 답변은 아니지만 청구 알림 docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/…를
Tim

RFC 7873을 지원하지 않는 모든 클라이언트에 대해 강제로 TCP로 폴백 할 수 있습니까?
kasperd

1
BIND의 속도 제한
Rui F Ribeiro

@RuiFRibeiro 신뢰할 수있는 DNS 서버의 속도 제한이 유용 할 수 있습니다. 그러나 속도 제한 자체는 DoS 공격에서 악용 될 수있는 약점이 될 수 있습니다. 공격자가 속도 제한을 사용하여 신뢰할 수있는 서버에서 호스트 된 도메인에 대한 쿼리를 사용하여 되풀이를 넘치면 해당 되풀이의 합법적 인 사용자는 더 이상 공격을 받고있는 도메인의 레코드를 확인할 수 없습니다. 광범위하게 배포되지 않은 NSEC / NSEC3적극적으로 사용 하면 이러한 공격을 완화 할 수 있습니다 .
kasperd

답변:


19

서버가 권위있는 쿼리에만 응답하도록 설정되어 있어도 증폭 공격에 여전히 사용될 ANY수 있습니다. 영역 루트에 대한 쿼리는 영역 루트가 경향이 있기 때문에 상당히 무거운 UDP 응답을 트리거 할 수 있습니다 많은 레코드, 특히 SPF / DKIM / DNSSEC 관련 레코드

시스템에서 일어나는 일일 수 있습니다 tcpdump. 확인에 사용하십시오 . 그들이 증폭 공격에 권위있는 기록을 사용하고 있다면, 가장 좋은 방법은 단순히 새로운 IP로 옮기고 따르지 않기를 희망하는 것입니다. 존 루트 기록을 변경하여 덜 효과적인 증폭 벡터로 만들거나 구현하십시오 응답 속도 제한 (BIND가 지원하는 경우).


그들은 내 영역을 쿼리하지 않습니다 ... 내 서버가 전혀 응답하지 않고 이러한 영역을 삭제해서는 안됩니까?
Russell Anthony

4
@RussellAnthony보고있는 로그 항목의 경우 로그 항목이 삭제되고 있다고 생각합니다. 그러나 공격 트래픽이 성공하면 로그 항목이 생성되지 않으므로 로그 측면에서 대역폭 사용이 보이지 않습니다. 공격이 여전히 진행 중이면 (여전히 새로운 로그 항목을 가져 오는가?) ANY이 실패한 쿼리와 함께 성공적인 쿼리 가 많이있을 것입니다.
Shane Madden

2
추가 rate-limit { responses-per-second 1; };되었고 트래픽이 상당히 줄어든 것 같습니다. bind 자체가 RRL 자체에서 발생할 수 있다는 것을 알지 못했습니다.
Russell Anthony

1
실제로 신뢰할 수있는 레코드에 대한 쿼리를 보내는 경우 도메인 이름을 알아야합니다. 이 경우 새 IP로 이전해도 합법적 인 사용자만큼 빨리 새 IP 주소를 찾을 수 있으므로 도움이되지 않을 것입니다.
kasperd

6
속도 제한이 DoS 공격 경로로 바뀌지 않도록하십시오. 공격자가 응답 제한을 모두 사용하면 합법적 인 캐시 (예 : OpenDNS 및 Google)도 사용자 이름을 확인하지 못할 수 있습니다.
Jonas Schäfer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.