Zapobieganie atakom wykorzystującym DNS

Serwery DNS to element infrastruktury IT, któremu często poświęca się mniej uwagi, niż należy. W efekcie pozostają w nim luki umożliwiające przekierowanie całego ruchu do podstawionych serwerów. A przecież cały system jest tak bezpieczny, jak jego najsłabsze ogniwo.

Kiedy w sierpniu 2013 r. strona amerykańskiego magazynu New York Times zniknęła z Internetu, administratorzy zachodzili w głowę, w jaki sposób serwery zostały zhakowane. Okazało się, że wcale nie były. Włamywacze, grupa Syrian Electronic Army (SEA), zauważyli, że łatwiejsze niż przełamanie zabezpieczeń serwerów NYT jest zmanipulowanie systemu DNS. Zmiana mapowania domeny nytimes.com na inny adres IP umożliwiła SEA skierowanie całego ruchu do tej domeny do serwerów kontrolowanych przez włamywaczy. Atak pokazał, jak prawdziwa jest powiedzenie: zabezpieczenia są tak silne, jak ich najsłabsze ogniwo. W tym przypadku okazał się nim system DNS, a konkretnie ta jego część będąca poza kontrolą wydawnictwa.

Jeśli haker znajdzie sposób, aby DNS zwracał podmieniony adres IP, użytkownicy będą trafiali, bez żadnego ostrzeżenia, na podmienioną stronę. Ten sam problem dotyczy poczty elektronicznej. U podłoża problemu leży domyślna konfiguracja serwerów DNS. Administratorzy często zaniedbują jej zmianę, nie widząc w DNS zagrożenia.

Zobacz również:

Techniki włamań

Jest kilka sposobów, aby wprowadzić do systemu DNS nieprawidłowe wpisy. Jednym z nich jest cache poisoning. Ta technika polega na umieszczeniu fałszywych informacji w pamięci cache serwera będącego częścią systemu DNS. Typowym sposobem wstrzyknięcia fałszywego wpisu jest udzielenie serwerowi będącemu niżej w hierarchii serwerów DNS fałszywej odpowiedzi na żądanie podania źródłowego adresu IP. Jeśli taka odpowiedź trafi do serwera zanim otrzyma on prawdziwą odpowiedzią, ma szansę zostać umieszczona w pamięci cache. W efekcie na każde kolejne zapytanie do tego serwera dotyczące danej domeny zostanie podana błędna odpowiedź.

Każdy wpis ma swój okres ważności (TTL, Time To Live), po którym jest usuwany, a dany serwer DNS ponownie wysyła żądanie do autorytatywnego serwera DNS, aby otrzymać aktualne parametry. Maksymalna wartość parametru TTL jest konfigurowana przez administratora, a wybór optymalnej wartości wymaga zbalansowania między bezpieczeństwem a wydajnością serwera. Domyślnie serwery DNS mają ustawioną tę wartość na 7 dni (BIND) lub 24 godziny (Microsoft DNS).

Z punktu widzenia włamywacza lepsze efekty daje podmiana wpisów w autorytatywnych serwerach DNS. To wymaga jednak uzyskania dostępu do takiego serwera, wykorzystując luki w jego zabezpieczeniach. Ewentualnie można pójść nieco prostszą drogą, którą obrali hakerzy z SEA.

Serwer DNS może działać wewnątrz organizacji lub w zewnętrznej organizacji, np. u rejestratora domen, na zlecenie posiadacza domeny. W każdym przypadku zapisane w serwerze rekordy wymagają od czasu do czasu aktualizacji. Aby to zrobić, administrator musi się zalogować i wprowadzić aktualne dane. Jeśli włamywacz zdobędzie dane dostępowe (np. poprzez atak typu phishing), może następnie podmieniać rekordy DNS i kierować ruch do własnych serwerów równie efektywnie, jakby włamał się do samego serwera WWW.

Skuteczne zapobieganie

Postępowanie zależy od tego, czy firma korzysta z własnego czy też zewnętrznego serwera DNS. Filozofia bezpieczeństwa mówi, że najlepiej zadbać o własne bezpieczeństwo samodzielnie, ponieważ nikt nie zrobi tego lepiej. Więc jeśli tylko firma ma pracowników z odpowiednimi kompetencjami, zaleca się uruchomienie własnego serwera DNS. W takim przypadku należy ograniczyć dostęp do serwera tylko do grona wybranych użytkowników (np. pracowników). To zapobiegnie atakom typu cache poisoning przez osoby z zewnątrz. Dobrym zabezpieczeniem przeciw tego typu atakom jest również używanie różnych portów źródłowych (zamiast domyślnego portu UDP 53). Aby sprawdzić, czy któryś z firmowych serwerów DNS jest dostępny z zewnątrz, można użyć narzędzia dostępnego na stronie tinyurl.com/openrs.

Oprócz tego warto pamiętać jeszcze o kilku wskazówkach. Przede wszystkim o regularnym aktualizowaniu oprogramowania DNS. Nie można również zapomnieć o systemie operacyjnym i zadbać o jego bezpieczeństwo, aby zminimalizować płaszczyznę ataku (np. zamknąć niepotrzebne porty czy wyłączyć nieużywane usługi). Powinno się używać cyfrowych certyfikatów w celu uwierzytelniania sesji SSH służących logowaniu do serwera DNS przez administratorów. Jeśli firma używa kilku serwerów DNS w hierarchicznej strukturze, dobrym pomysłem jest używanie głównego, ukrytego serwera, który będzie służył jako źródło danych dla serwerów podrzędnych. Dzięki temu można prowadzić prace konserwacyjne bez przerw w dostępności domen.

Jeśli serwer nazw domen jest utrzymywany przez zewnętrzną firmę, warto upewnić się, jakie wdrożyła zabezpieczenia. Można to zweryfikować, sprawdzając dostępność kilku opcji. Pierwszą z nich jest dwuskładnikowe uwierzytelnianie. Jeśli ktoś wykradnie hasło administratora, konto nadal będzie bezpieczne, jeśli dostęp do niego będzie chronić jeszcze inny element, np. hasła jednorazowe przesyłane SMSem.

Warto skorzystać z blokady zmian. Niektóre firmy mają procedury, które wymagają kontaktu z klientem, zanim zostaną wprowadzone zmiany w rekordach DNS. Czasem możliwe jest również określenie adresów IP, z których dopuszczalne będzie logowanie do serwera DNS. Taki mechanizm chroni przed atakami z zewnątrz. Należy jednak unikać podawania pojedynczego adresu IP, a używać całych zakresów.


TOP 200