fbpx

Podkast 22T44 Jak Działa DHCP Serwer

Więcej miejsc do posłuchania:

Spotify

WERSJA TEKSTOWA

Cześć, witam Cię w moim podkaście. Dzisiejszy temat to serwer DHCP i kilka najważniejszych punktów: przede wszystkim po co używamy serwera DHCP, jak on działa, jakie zabezpieczenia związane z serwerem DHCP i z tą komunikacją można zastosować i na koniec punkt dotyczący rozróżnienia przypisania statycznego powiązania adresu IP danego hosta serwowanego przez DHCP albo na przyznawanie adresu IP po prostu bezpośrednio manualnie kontrolując przyznawanie adresu IP na serwerze, na komputerze.

Zacznijmy więc od tego, po co jest serwer DHCP. Powiem krótko dla tych, którzy pierwszy raz się stykają z początkowymi określeniami w tym zakresie. Przede wszystkim chodzi o to, żeby sobie ułatwić życie. Czyli jeśli mamy pięć naszych laptopów i one wszystkie są u nas na biurku to nie ma problemu, możemy wpisać adresację IP dla każdego z nich ręcznie. Oczywiście dodatkowo musimy powiedzieć jaka jest brama jeżeli chcemy, żeby te urządzenia wychodziły komunikacyjnie do innych sieci i jaki jest serwer DNS jeżeli chce, żeby się komunikowały z jakimś serwerem DNS. Sprawdza się to tylko w bardzo małych środowiskach, gdzie mamy wszystko pod ręką. Natomiast jak już mówimy o realnych wdrożeniach, realnych przypadkach użycia to wszystkie urządzenia końcowe (telefony, tablety, komputery), wszystkich użytkowników którzy są, są implementowane w sposób dynamiczny, żeby po prostu mogło to elegancko działać, bez manualnej ingerencji.

W przypadku innych sposobów adresowania bywa z tym problem. Spotkałem niektóre przypadki tak jak np: jakaś baza danych akceptuje połączenia w specyficznych aplikacjach lokalnie tylko z konkretnych adresów IP i te adresy IP muszą być na stałe przywiązane do poszczególnych komputerów. Nie muszą to być co ciekawe te same adresy, to znaczy, że nie muszą to być adresy – zawsze końcówka 11 dla tego komputera a dla innego komputera 12. To mogło być zamienione ale musi być wiadomo, że i 11 i 12 musi być na stacji końcowej. Generalnie nie ma się co tym przejmować, dynamiczne adresy IP przyznawane dla danej sieci są rozwiązaniem typowym. Jeśli są jakieś specyficzne przypadki, to są na to sposoby. O tym będę mówił jeszcze za chwilę. Jest to odpowiedź na pytanie dlaczego i w jaki sposób pomaga nam DHCP. Do tego, żebyśmy mogli zarządzać siecią i udostępniać komunikację.

Drugi punkt – jak działa serwer DHCP? Jeżeli podłączamy urządzenie do naszej sieci LAN to to urządzenie nie mając adresu IP po prostu wysyła Broadcast szukając serwera DHCP w tej sieci lokalnej i ten Broadcast jeśli jest serwer lub interfejs, który łączy nas z serwerem DHCP odbiera ten pakiet danego urządzenia końcowego, sprawdza jakie to jest zapytanie, sprawdza sobie jakie adresy IP może przyznać, czy ma jakieś zajęte, czy ma jakieś wolne. Pierwszy wolny adres taki serwer DHCP ze swojej konfiguracji przydziela do urządzenia końcowego. To urządzenie końcowe sobie ten adres zapisuje. Zapisuje sobie również jak długo ta dzierżawa, czyli to przyznanie adresu IP będzie dla danego urządzenia działało. Czyli ustawimy np. na 10 min ważność tej dzierżawy – po 10 minutach to urządzenie powinno odpytać serwer DHCP o odświeżenie tego adresu. Tutaj zauważ, że ta komunikacja jest zawsze jednostronna. Zawsze ta informacja o odświeżenie, o ten adres, raczej wychodzi od urządzenia końcowego a nie od serwera DHCP. Tak to generalnie zostało pomyślane.

Protokół DHCP jest bardzo rozbudowany ale większość jego cech w typowym przypadku w ogóle nie jest używana. Są np. możliwości odpytywania po multicastach, czego praktycznie się nie używa w typowym przypadku. Gdy już komputer końcowy mamy zaadresowany i przypisaliśmy właściwe dane to może się on komunikować już bezpośrednio z resztą sieci. Jeżeli chodzi o konfigurację ze strony serwera DHCP to powinno być tu kilka rzeczy skonfigurowanych. Musimy podać na jakim interfejsie taki serwer DHCP ma działać dla danego urządzenia, które będzie serwowało taki serwis. W małych sieciach to jest najczęściej jeden router, który służy również do połączenia ze światem, z internetem, na nim się uruchamia serwer DHCP.

Kolejny krok w konfiguracji takiego routera to jest przypisanie w jakiej sieci IP z jaką maską będzie działał ten serwer. Czyli żeby wiedział jaka jest sieć w której funkcjonuje. Kolejnym krokiem jest przypisanie gateway’a czyli adresu IP dla urządzenia, którym można będzie wyjść do innych sieci np. do internetu. Kolejnym krokiem jest zakres adresacji którą serwer DHCP będzie przydzielał. Nad tym warto się chwilę zatrzymać i opowiedzieć, że przypisanie klasy adresowej, czyli adresu IP z maską to nie jest to samo, co informacja jaki zakres adresów ma dany serwer DHCP przypisywać. Te informacje oczywiście są powiązane ze sobą. Nie możesz podać, że ma przypisywać adresy z sieci 192.168 jak podałeś, że serwer DHCP będzie działał w sieci 10.0.0. coś tam. Tak to oczywiście nie zadziała. Ale jeśli przypisujesz np. że DHCP serwer będzie działał w sieci 10.0.0.0 z maską 24 bity to przypisanie tego adresu możesz np określić ale DHCP będzie przypisywało adresy dla stacji końcowych, tylko od 10.0.0.100 do 10.0.0.120. Pozostała część tej adresacji, klasy nie będzie używana do przyznawania adresów przez serwer DHCP. Co to oznacza? To znaczy, że możesz w innych zastosowaniach przydzielać te adresy. Czyli np. adres poniżej setki będzie mógł być przydzielany dla serwerów, które nie korzystają z DHCP, bo w takim przypadku użycia to jest nie rekomendowane.

Dlaczego nie przyznaje się z DHCP serwerom adresu? Dlatego, żeby zmniejszać ryzyko potencjalnej awarii przerwania w dostarczeniu usługi. Jeśli mamy jakiś serwer, który świadczy usługę np. DNS albo jakąś inną usługę kluczową to najczęściej przypisujemy mu stały adres IP, żeby nie zwiększać tego ryzyka, że coś tutaj się z adresacją wydarzy i nagle adres zniknie, zmieni się, cokolwiek innego by się działo. To jest jeszcze istotne dlatego, że jeżeli chodzi o serwery to często też piszemy reguły firewallowe, które dotyczą konkretnych adresów IP, ponieważ te serwery świadczą konkretną usługę na najczęściej konkretnych portach za pomocą konkretnego protokołu. Dlatego jest lepiej przypisywać statycznie adres IP dla takich serwerów.

Teraz zabezpieczenia. Jeśli chodzi o sam protokół DHCP to tutaj nie ma jakiś wielu zabezpieczeń dlatego, że ten protokół został wymyślony dawno temu i nie przejmowano się wtedy elementami bezpieczeństwa. To jest jakby jedna cecha. Inna jest taka, że mówimy o etapie podłączenia urządzenia końcowego w momencie kiedy w zasadzie nic o nim nie wiemy i nie ma on adresu IP w związku z tym sama koncepcja DHCP, protokołu z założenia nie jest bezpieczna. To jest też jeden z elementów, które można próbować wykorzystywać jako typ ataku na infrastrukturę. Nie jest on taki prosty do wykonania dlatego, że trzeba mieć fizycznie jakąś możliwość rozgłaszania tych komunikatów DHCP. Jeśli jest taki przypadek, że np. mam wiele lokalizacji w Polsce i najczęściej w takim schemacie mamy centralny serwer DHCP, który rozdaje te adresy dla wszystkich lokalizacji w wszystkich podsieciach. Żeby zrobić tego typu konfigurację to się przygotowuje tzw. DHCP Relay czyli ten router, który jest wyjściem do internetu czy do WANu. Po prostu przekazuje dalej to zapytanie broadcastowe.

Jak już wspomniałem wcześniej DHCP działa w ten sposób, że urządzenie które jest podłączane do sieci, odpytuje broadcastem (bo nie ma żadnego adresu IP jeszcze) o serwer DHCP. No i teraz jeśli my mówimy o tym, że chcemy ten pakiet przekazać gdzieś do centrali przez jakiś WAN, rzutować jakieś sieci, to nie możemy tam przekazać broadcastu, bo to nie przejdzie więc taki DHCP Relay po prostu opakowuje ten pakiet i nadaje mu adres IP i wysyła do serwera centralnego DHCP. Dodatkowo dodaje pewne opcje, czyli np. z jakiego interfejsu to zapytanie pochodzi. Z interfejsu routera. Tak, żeby serwer DHCP mógł zidentyfikować jaką sieć czy zakres adresów może użyć do przydzielenia adresu IP dla urządzenia końcowego. Więc mamy tego typu konfigurację, jeżeli chodzi o tą centralną instancje DHCP.

Teraz wracając do tego ataku. Jeśli ktoś w zdalnej lokalizacji wypnie jakieś urządzenie, wepnie swój laptop i tam ustawi serwer DHCP to pytanie się pojawia takie: ponieważ broadcastem odpytuje klient końcowy o adres DHCP to który szybciej serwer odpowie. Ten nieautoryzowany, który jest bliżej czy ten, który jest centralnie, który jest autoryzowany ale ten pakiet musi przejść dłuższą drogę. Odpowiadając odrazu na to pytanie najczęściej odpowiedź dostaje szybciej z tego bliższego serwera DHCP. Ten atakujący ma możliwość przekazania do stacji końcowej swoich danych. Np. może przekazać jaki będzie gateway. Może powiedzieć: dobra, pracujesz w tej adresacji, która faktycznie jest prawidłowa ale wskaże mu adres IP jako gatewaya na swój komputer. Dzięki temu może przekazywać ten ruch dalej ale monitorować, ponieważ ten ruch przez komputer przechodzi, czyli taki atak man-in-the-middle. Przez to może wykorzystać tą informację. Oczywiście jeśli te informacje są zaszyfrowane jakimś https’em czy inną formą to oczywiście na nic się to nie zda i coraz częściej dzisiaj tak jest. Więc te ataki, takie infrastrukturalne przekazywania ruchu mają swoją ograniczoną moc tylko do tych protokołów, które są nie szyfrowane i mogą być nasłuchiwane i dzięki temu można zebrać jakieś informacje.

Jeżeli chodzi o zabezpieczenie to tutaj stosuje się nie tyle zabezpieczenia pod kontem, żeby się nam ktoś nie włamał, tylko bardziej to są zabezpieczenia abyśmy kontrolowali wszystkie adresy IP w danej sieci w sposób nasz centralny, dynamiczny, tak żeby ktoś nie mógł sobie przypisać adresu statycznego. Takie dwa typowe mechanizmy to jest DHCP Snooping i ARP inspection i polega to na tym, że dany router, który jest tą bramką monitoruje sobie zapytania DHCP i w swojej tablicy zapisuje sobie mapowania adresów IP do MAC adresów. Dzięki temu, jeżeli ktoś podłączy się do sieci i podepnie sobie statyczny adres IP i tego mapowania z DHCP nie będzie miał ten router to automatycznie zobaczy, że nie zna tego ruchu, adresu i powiązania MAC do IP. W związku z tym ten ruch będzie dropowany i w ten sposób można eliminować lub przynajmniej ograniczać ilość niepożądanych stacji, które mają statycznie nadany adres IP mając centralnie tylko przyznawane adresy z zaufanego serwera DHCP. Dzięki temu zwiększamy ten poziom kontrolowalności naszego środowiska.

Na koniec przypisanie statyczne vs. binding, czyli mamy dwie opcje przypisania adresu statycznego IP. Pierwsza opcja: mamy serwer, wchodzimy w jego konfigurację przez konsolę, jakiś interfejs i wpisujemy adres IP, maska, gateway, DNS i akceptujemy. To jest statycznie nadany klasycznie adres IP. Ale druga opcja, którą mamy, która wprawdzie nie nadaje się do serwerów ale nadaje się do innych scenariuszy to jest możliwość powiązania na stałe adresu IP, który przyznajemy z MAC adresem danego urządzenia, ale przez serwer DHCP. Czyli mam np. taką topologię u siebie gdzie mam wiele routerów, różne stacje końcowe, przyznaje tym stacjom końcowym w różnych sieciach adres IP ale chciałbym, żeby te konkretne komputery zawsze dostawały te konkretne adresy IP. Jak pinguję później sprawdzając czy wszystko działa to chce pingować konkretne adresy a nie za każdym razem sprawdzać jaki teraz dynamiczny adres został przypisany dla danej stacji końcowej. W związku z tym robię taki binding, czyli takie powiązanie na stałe ale na serwerze DHCP. Czyli mówię, że ten adres MAC z tym adresem IP ma zawsze dostawać ten konkretny adres IP. Plus tego rozwiązania jest taki, że jeżeli inne stacje się podpinają i dostają adresy IP z tego samego DHCP to on nigdy nie przyzna tego mojego adresu zarezerwowanego załóżmy z końcówką 11 dla innych stacji końcowych niż ta konkretnie, którą ja używam. To jest bardzo dobry scenariusz do takich sytuacji gdzie np. podpinamy drukarkę i chcemy, żeby ta drukarka była pod jednym adresem IP albo podpinamy sobie jakieś inne urządzenie, nie koniecznie serwer ale takie, które chcemy żeby było dostępne zawsze pod jednym adresem IP.

To tyle na dziś, jeżeli masz do tego jakieś pytania to oczywiście pisz w komentarzu. Jeśli chcesz zobaczyć konfigurację DHCP na MikroTiku to zachęcam do odtworzenia na yt lub artykułu na blogu. Na dziś to tyle, dziękuję Ci za uwagę i do zobaczenia już za tydzień.


Kliknij w obrazek, aby przejść do zapisu na kurs

Autor: Darek Koralewski

Od początku swojej kariery, czyli od 2004 roku, zajmuję się sieciami komputerowymi ze szczególnym uwzględnieniem ich bezpieczeństwa oraz sieciami programowalnymi. Mam na swoim koncie całą listę certyfikatów różnych producentów, dwa najważniejsze to te poświadczające najwyższy poziom wiedzy eksperckiej z zakresu rozwiązań Aruba ClearPass ACCX#901 oraz z projektowania sieci opartych o rozwiązania Aruba ACDX#1255. Więcej informacji możesz znaleźć na moich portalach społecznościowych.