Co to jest otwarty program rozpoznawania nazw DNS i jak mogę chronić mój serwer przed niewłaściwym użyciem przez hakerów?

15

Nie mam najsilniejszego doświadczenia w dziedzinie bezpieczeństwa komputerowego, ale wczoraj jeden z serwerów mojej firmy został zamknięty przez naszego hosta.

Jest to serwer, któremu przypisano publiczny adres IP, na którym hostuję kilka aplikacji usług internetowych, w tym strony internetowe i interfejsy API. Powiedziano mi, że na moim serwerze „działa otwarty resolver dns, który służy do przekazywania ataku typu„ odmowa usługi ”na podmiot zewnętrzny”.

Co to znaczy? Jak działa ten atak? Jak mogę chronić mój system przed takim wykorzystywaniem?

W moim konkretnym przypadku serwer, o którym mowa, znajduje się w systemie Windows Server 2012 i obsługuje DNS dla domeny Active Directory.

JSideris
źródło
Jeśli poinformujesz nas, z którego serwera DNS korzystasz, ktoś prawdopodobnie powie dokładnie, którą konfigurację musisz ustawić i w jaki sposób. Bez tych informacji po prostu odgadłem BIND i wszystkie prywatne przestrzenie adresów IP, ponieważ BIND jest najczęstszym serwerem DNS, a prywatne przestrzenie adresowe są bezpieczne. Prawdopodobnie zechcesz również zezwolić na żądania rekurencyjne z zewnętrznych bloków adresów, jeśli dotyczy.
HopelessN00b
@ HopelessN00b Dziękuję, twoja odpowiedź była bardzo przydatna. Nie używam BIND (mój host również założył, że jestem i zapewnił mi kilka poleceń do uruchomienia); Mam skonfigurowany serwer DNS jako rolę w IIS. To interesujące, nie skonfigurowałem ręcznie serwera DNS i nie jestem pewien, czy rozumiem, dlaczego nawet tego potrzebuję. Co się psuje, jeśli zostanie wyłączone?
JSideris
Nie wyłączaj DNS w środowisku Windows. Prawdopodobnie zepsujesz Active Directory. Daj mi znać, która wersja systemu Windows Server, i mogę (prawdopodobnie) edytować niektóre zrzuty ekranu, aby pokazać, jak zabezpieczyć skrzynkę DNS systemu Windows.
HopelessN00b
W porządku. Właśnie założyłem Active Directory w ten weekend. Jest to standard Windows Server 2012.
JSideris

Odpowiedzi:

28

„Otwarty program rozpoznawania nazw DNS” to serwer DNS, który jest w stanie rozwiązywać rekurencyjne wyszukiwania DNS dla każdego w Internecie. Przypomina to otwarty przekaźnik SMTP, ponieważ prosty brak uwierzytelnienia umożliwia złośliwym stronom trzecim rozpowszechnianie swoich ładunków przy użyciu niezabezpieczonego sprzętu. W przypadku otwartych przekaźników SMTP problem polega na tym, że przekazują spam. W przypadku otwartych programów rozpoznawania nazw DNS problemem jest to, że umożliwiają one atak typu „odmowa usługi” znany jako atak DNS Amplification.

Sposób działania tego ataku jest dość prosty - ponieważ Twój serwer rozwiąże rekurencyjne zapytania DNS od kogokolwiek, osoba atakująca może spowodować, że weźmie on udział w DDoS, wysyłając do serwera rekurencyjne zapytanie DNS, które zwróci dużą ilość danych, znacznie większą niż oryginalny pakiet żądania DNS. Podszywając się (podszywając) pod swój adres IP, kierują ten dodatkowy ruch na komputery swoich ofiar zamiast na własne, i oczywiście będą wysyłać jak najwięcej zapytań tak szybko, jak to możliwe, na twój serwer i inne otwarte DNS resolwery mogą znaleźć. W ten sposób ktoś ze stosunkowo małą rurą może „wzmocnić” atak typu „odmowa usługi”, wykorzystując całą przepustowość swojej rury, aby skierować znacznie większy ruch na swoje ofiary.

ArsTechnica napisał przyzwoity artykuł na temat ostatniego ataku DDoS na DNS Amplification przeciwko Spamhausowi i warto go szybko przeczytać, aby uzyskać podstawy (i dobrą grafikę wzmocnienia).

Najprostszym sposobem ochrony systemu przed nadużyciami w ten sposób jest ograniczenie adresów, na których serwer będzie przeprowadzał rekurencyjne wyszukiwania do lokalnych podsieci. (Specyfika zależy oczywiście od używanego serwera DNS).


Na przykład, jeśli korzystałem z BIND 9 i chciałem po prostu zapobiec rekursji DNS z adresów zewnętrznych, użyłbym następującego kodu w mojej konfiguracji:

options {
    directory "/var/named/master";
    allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/12; };

Ten wiersz kodu mówi mojemu serwerowi BIND, aby przetwarzał tylko rekurencyjne żądania DNS dla lokalnego adresu sprzężenia zwrotnego (który, jak sądzę, mógłbym / powinienem ustawić na lokalny blok sprzężenia zwrotnego, cały / 8) i 3 prywatne przestrzenie adresowe IPv4.


W przypadku systemu Windows Server 2012, z którego korzystasz, masz następujące opcje.

1. Oddziel swój serwer DNS od serwera IIS.

  • Przynajmniej w idealnym świecie nie ma powodu, aby korzystać z DNS na tym samym urządzeniu co IIS.
    • Umieść DNS na wewnętrznym polu, które nie jest NATed, aby świat zewnętrzny nie mógł się do niego dostać, i pozwól IIS rezydować na zewnętrznym polu, do którego może dostać się reszta świata. Możesz użyć reguł podwójnego bazowania lub zapory, aby selektywnie zezwolić na dostęp do serwera DNS z serwera IIS.

2. Blokuj zewnętrzne żądania DNS za pomocą zapory ogniowej, takiej jak wbudowana zapora systemu Windows.

  • Ku mojemu zdziwieniu, Windows DNS nie pozwala na ograniczenie adresów, do których honorowane są rekurencyjne żądania DNS, więc jest to właściwie zalecana metoda firmy Microsoft.
  • wprowadź opis zdjęcia tutaj
    • Wybierz reguły DNS (TCP i UDP), przejdź do Remote IP addresssekcji i dodaj podsieci używane w sieci LAN, a także wszelkie publicznie dostępne adresy IP serwerów, które potrzebują dostępu do Active Directory. Podobnie jak w przykładzie BIND, prywatnymi przestrzeniami adresów IPv4 są 127.0.0.0/8 10.0.0.0/8 192.168.0.0/16i 172.16.0.0/12.

3. Wyłącz rekurencję .

  • Naprawdę nie jestem pewien, jaki będzie to miało wpływ na twoje środowisko, ponieważ tak naprawdę nie określiłeś, jak DNS i AD są skonfigurowane w twoim środowisku, a zatem jest to ostatnia opcja.
  • wprowadź opis zdjęcia tutaj
    1. Otwórz Menedżera DNS.
    2. W drzewie konsoli kliknij prawym przyciskiem myszy odpowiedni serwer DNS, a następnie kliknij polecenie Właściwości.
    3. Gdzie?
    4. DNS / odpowiedni serwer DNS
    5. Kliknij kartę Zaawansowane.
    6. W Opcjach serwera zaznacz pole wyboru Wyłącz rekurencję, a następnie kliknij OK.
      • Ponieważ mamy środowisko obejmujące wiele lasów i używamy do tego warunkowego przesyłania dalej, nie zamierzam zaznaczać tego pola. To może być również coś do rozważenia.
Beznadziejny
źródło
Doskonała odpowiedź!
Fred the Magic Wonder Dog
Idealne, dobrze udokumentowane rozwiązanie :).
JSideris
2
Zatem w jaki sposób 8.8.8.8 lub 1.1.1.1 zapobiegają otwarciu się resolverów?
LinuxBabe