Spędziłem trochę czasu na badaniu tego tematu i wydaje się, że nie mogę znaleźć dokładnej odpowiedzi, więc jestem całkiem pewien, że nie jest to duplikat, i chociaż moje pytanie opiera się na potrzebie bezpieczeństwa, myślę, że nadal jest bezpiecznie zapytaj tutaj, ale daj mi znać, czy muszę przenieść to do społeczności bezpieczeństwa.
Zasadniczo, czy zapytania DNS używają kiedykolwiek protokołu TCP (jeśli tak, to w jakim scenariuszu może się to zdarzyć)? Znów mówię tylko o zapytaniach. Czy mogą podróżować przez TCP? Jeśli domeny mogą mieć maksymalnie 253 bajty, a pakiety UDP mogą mieć nawet 512 bajtów, czy zapytania nie będą zawsze wychodzić jako UDP? Nie sądziłem, że możliwe do rozwiązania zapytanie może być wystarczająco duże, aby wymagać użycia TCP. Jeśli serwer DNS dostanie kiedykolwiek żądanie domeny większej niż 253 bajty, czy serwer go upuści / nie spróbuje go rozwiązać? Jestem pewien, że podjąłem tu fałszywe założenia.
W pewnym kontekście współpracuję z grupą bezpieczeństwa, aby wbudować zapytania DNS w ich narzędzie do monitorowania bezpieczeństwa iz różnych powodów zdecydowaliśmy, że przechwycimy ten ruch poprzez standardowe przechwytywanie pakietów na serwerach DNS i kontrolerach domen. Podstawowym wymaganiem jest przechwycenie wszystkich zapytań DNS, aby mogli zidentyfikować, który klient próbował rozwiązać daną domenę. W oparciu o ten wymóg nie zajmujemy się przechwytywaniem odpowiedzi DNS lub innego ruchu, takiego jak transfery stref, co wynika również z faktu, że musimy maksymalnie ograniczyć objętość dziennika. W związku z tym planujemy przechwytywać tylko zapytania DNS przeznaczone dla serwera DNS i wysyłane przez UDP. Aby uzyskać więcej kontekstu (rodzaj zakradającego się tu zakresu pytań), teraz podniesiono, że możemy potrzebować rozszerzenia bezpieczeństwa ” widzialność, aby mogli monitorować aktywność, np. ukryte kanały działające w systemie DNS (co oznaczałoby konieczność przechwytywania również odpowiedzi DNS, a następnie ruchu TCP). Ale nawet w tego rodzaju scenariuszu myślałem, że wszelki wychodzący ruch DNS będzie miał postać zapytań / zapytań i że zawsze będą one przekraczały UDP, nawet jeśli pochodzą ze złośliwego źródła (z powodu mojego rozumowania w pierwszym akapicie). Pojawia się więc kilka dodatkowych pytań:
Czy nie uchwycilibyśmy co najmniej połowy rozmowy z podejściem, które przedstawiłem? A może klient kiedykolwiek wyśle ruch DNS, który nie jest w formie zapytania? (może jak odpowiedź na odpowiedź serwera DNS, a może kończy się to przez TCP)
Czy zapytania DNS można modyfikować, aby używały protokołu TCP? Czy serwer DNS zaakceptuje i odpowie na zapytanie DNS przychodzące przez TCP?
Nie jestem pewien, czy jest to istotne, ale ograniczamy żądania DNS do autoryzowanych serwerów DNS i blokujemy cały ruch wychodzący przez port 53. Jestem zdecydowanie debiutantem, więc przepraszam, jeśli moje pytanie jest niezgodne, i daj mi znać jak powinienem zmodyfikować.
źródło
Odpowiedzi:
Normalne zapytania DNS używają portu UDP 53, ale dłuższe zapytania (> 512 oktetów) otrzymają odpowiedź „obciętą”, co powoduje konwersację TCP 53 w celu ułatwienia wysyłania / odbierania całego zapytania. Ponadto serwer DNS łączy się z portem 53, ale samo zapytanie pochodzi z losowego portu o wysokim numerze (49152 lub nowszy) wysyłanego do portu 53. Odpowiedź zostanie zwrócona do tego samego portu z portu 53.
Porty sieciowe używane przez DNS | Dokumenty Microsoft
Jeśli więc planujesz przeprowadzić szpiegowanie bezpieczeństwa w zapytaniach DNS ze swojej sieci, musisz wziąć to pod uwagę.
Jeśli chodzi o ruch niezwiązany z wyszukiwaniem, należy wziąć pod uwagę, że DNS wykorzystuje również transfery stref (typ zapytania AXFR) do aktualizacji innych serwerów DNS o nowe rekordy. Człowiek w środku ataku może rozpocząć od takiego przeniesienia, DDOS'ując główny serwer nazw, aby był zbyt zajęty, aby odpowiedzieć na pomocnika proszącego o zaktualizowane rekordy. Haker następnie fałszuje tę samą Podstawową, aby przekazać „zatrute” rekordy do Dodatkowej, która przekierowuje popularne domeny DNS do zainfekowanych hostów.
Dlatego audyt bezpieczeństwa powinien zwracać szczególną uwagę na typ zapytania AXFR, a systemy DNS powinny akceptować wymiany AXFR tylko z określonych adresów IP.
SANS Institute InfoSec Czytelnia | sans.org
źródło
Zaczęło się od komentarza do odpowiedzi George'a, ale trwało długo. Większy obraz jest nieco skomplikowany, ponieważ wymaga zrozumienia pewnej historii.
RFC 1035 pierwotnie wymagał limitu 512 bajtów, aby uniknąć fragmentacji UDP. Pofragmentowane datagramy UDP i TCP zostały wybrane jako opcje ostatniej szansy, aby zminimalizować obciążenie transakcjami DNS. Transfery stref zawsze używają TCP, ponieważ transfery stref z natury zajmują> 512 bajtów. (w ogóle byłoby marnowaniem przepustowości, aby zacząć od UDP)
Ponowna próba obcięcia TCP jest szeroko obsługiwana, ponieważ została określona w RFC 1123 od 1989 roku.
EDNS (0) jest zdefiniowany przez RFC 6891 (2013), a wcześniej istniał jako proponowany standard z 1999 roku . Definiuje mechanizm, w którym klienci i serwery mogą negocjować rozmiary UDP większe niż 512. Ze względu na nowość EDNS (0) wiele urządzeń sprzętowych przyjmuje założenia dotyczące struktury pakietów DNS, które powodują odrzucanie zgodnych pakietów. Najczęstszym powodem jest założenie, że komunikaty DNS o długości ponad 512 bajtów są nieprawidłowe, ale jest to jeden z kilku.
Jeśli podzielimy to na obserwowane zachowania:
Należy również pamiętać, że RFC 7766 pozwala na ponowne użycie połączenia przez TCP i możliwe jest napotkanie potoków zapytań przez TCP na wolności. Niektóre narzędzia nie wykrywają zapytań DNS wykraczających poza pierwsze zaobserwowane w sesji TCP, czego przykładem jest dnscap.
źródło
Nie jest RFC 7766 Transport DNS TCP - Wymagania wdrożeniowe .
źródło
INTERNET STANDARD
RFC jest tools.ietf.org/html/rfc1034 . Cytujesz,PROPOSED STANDARD
aby wymagać TCP.Nie należy filtrować TCP / 53 w żadnym kierunku. Na przykład
nsupdate
zapytania mogą korzystać z protokołu TCP, gdy żądanie jest zbyt duże (co może się zdarzyć szybko). Powinieneś więc pozwolić, aby UDP i TCP dla portu 53 (w IPv4 i V6!) Przepływały we wszystkich kierunkach.Coraz więcej jest też prac nad DNS nad TLS, więc TCP będzie potrzebny w obu kierunkach. Zobacz RFC7858.
źródło