Korzystam z serwera DNS w EC2, który wczoraj przepychał około 20 Mb / s, kiedy sprawdziłem pulpit rozliczeniowy i znalazłem w tym miesiącu 1,86 TB używanych danych. To duży rachunek dla mojego małego laboratorium projektowego. Nigdy wcześniej nie zauważyłem spadku wydajności i nie zawracałem sobie głowy konfigurowaniem progów ruchu, ale teraz to zrobiłem, ponieważ kosztowało mnie to 200 USD + opłat za przepustowość.
Wygląda na to, że ktoś użył mojego serwera DNS w ramach ataku wzmacniającego, ale brakuje mi tego.
Konfiguracja jest poniżej.
// 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; };
};
Biorąc pod uwagę tę konfigurację, NIE powinienem odpowiadać na zapytania dotyczące stref, których nie hostuję lokalnie, prawda? Ten serwer jest SOA dla kilku domen, ale nie służy do wyszukiwania innych moich serwerów (wszyscy rozstrzygają przeciwko OpenDNS lub Google). Jaką dyrektywę tutaj popełniłem, czy o której zapomniałem? Moje logi (63 MB +) są pełne:
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
źródło
Odpowiedzi:
Nawet jeśli twój serwer jest ustawiony tak, aby odpowiadał tylko na autorytatywne zapytania, tak jak twoje, nadal można go użyć do ataku wzmacniającego -
ANY
zapytania skierowane przeciwko pierwiastkowi strefy mogą wyzwalać dość ciężką odpowiedź UDP, ponieważ root strefy zwykle ma wiele rekordów, szczególnie z SPF / DKIM / DNSSEC.Prawdopodobnie dzieje się to w twoim systemie - użyj,
tcpdump
aby potwierdzić. Jeśli używają twoich autorytatywnych rekordów w ataku wzmacniającym, najlepszym rozwiązaniem będzie po prostu przejście do nowego adresu IP i mam nadzieję, że nie nadążą, zmień rekordy główne strefy, aby uczynić go mniej skutecznym wektorem wzmocnienia lub zaimplementuj ograniczenie wskaźnika odpowiedzi (jeśli BIND to obsługuje).źródło
ANY
obok tych, które nie powiodły się, jest kilka udanych zapytań.rate-limit { responses-per-second 1; };
i wydaje się, że znacznie zmniejszyło ruch. Nie wiedziałem, że bind może RRL od wewnątrz siebie.