{"id":20,"date":"2012-10-20T02:00:06","date_gmt":"2012-10-20T01:00:06","guid":{"rendered":"http:\/\/www.devices.nazwa.pl\/blog\/?p=20"},"modified":"2012-12-03T04:20:03","modified_gmt":"2012-12-03T02:20:03","slug":"rogue-dhcp-server-czyli-problem-z-nieautoryzowanym-serwerem-dhcp","status":"publish","type":"post","link":"https:\/\/blog.devices.pl\/?p=20","title":{"rendered":"Rogue DHCP Server &#8211; czyli problem z nieautoryzowanym serwerem DHCP"},"content":{"rendered":"<p><strong>Pocz\u0105tki<\/strong><\/p>\n<p style=\"text-align: justify;\">W sieciach ISP opartych o technologie ethernetowe mo\u017cemy klient\u00f3w pod\u0142\u0105cza\u0107 na kilka r\u00f3\u017cnych sposob\u00f3w i w r\u00f3\u017cny spos\u00f3b ich autoryzowa\u0107. Wracaj\u0105c pami\u0119ci\u0105 do dawnych czas\u00f3w kiedy sieci lokalne opiera\u0142y si\u0119 jeszcze na koncentratory\/huby i kable koncentryczne a sam Internet nie by\u0142 jeszcze tak bardzo popularny &#8211; adresowanie komputer\u00f3w w sieci odbywa\u0142o si\u0119 cz\u0119sto r\u0119cznie w oparciu o jaki\u015b prefiks z puli tzw. prywatnych (10.0.0.0\/8. 192.168.0.0\/16 172.16.0.0\/12) i dodaniu mu odpowiedniej ko\u0144c\u00f3wki z pami\u0119ci. Je\u015bli sie\u0107 by\u0142a niewielka &#8211; powiedzmy by\u0142a to sie\u0107 dla paru s\u0105siad\u00f3w to przypisanie adres\u00f3w &#8222;z palca&#8221; nie stanowi\u0142o wielkiego problemu.<!--more--><\/p>\n<p style=\"text-align: justify;\">W przypadku kiedy u\u017cytkownik\u00f3w przybywa ogarni\u0119cie &#8222;r\u0119cznego&#8221; wklepywania odpowiedniej konfiguracji bywa k\u0142opotliwe &#8211; bo o pomy\u0142k\u0119 nie trudno a \u017ale wpisany adres IP (pomylony adres IP z adresem bramki) mo\u017ce skutecznie wysadzi\u0107 nasz\u0105 sie\u0107 w powietrze (m\u00f3wimy tu o siedzi p\u0142askiej &#8211; w kt\u00f3rej nie ma segment\u00f3w oddzielonych routerami). Aby nie m\u0119czy\u0107 si\u0119 z r\u0119cznym klepaniem ustawie\u0144 wymy\u015blono co\u015b takiego co nazywa si\u0119 <strong>DHCP<\/strong>.<\/p>\n<p><strong>Czym jest DHCP i z czym to si\u0119 je?<\/strong><\/p>\n<p style=\"text-align: justify;\">DHCP (Dynamic Host Configuration Protocol) jest jednym z kilku rozwi\u0105za\u0144 (poza m.in. RARP i BOOTP) pozwalaj\u0105cych na automatyczn\u0105 konfiguracj\u0119 protoko\u0142u IPv4 bez potrzeby r\u0119cznego pami\u0119tania ustawie\u0144 IP dla dowolnego urz\u0105dzenia obs\u0142uguj\u0105cego oczywi\u015bcie ten protok\u00f3\u0142. Z uwagi, \u017ce DHCP nie jest \u017cadn\u0105 nowo\u015bci\u0105 i zasadniczo znakomita wi\u0119kszo\u015b\u0107 dost\u0119pnych urz\u0105dze\u0144 jaki i system\u00f3w operacyjnych obs\u0142uguje ten protok\u00f3\u0142 &#8211; u\u017cycie tego rozwi\u0105zania jest niemal oczywiste.<\/p>\n<p style=\"text-align: justify;\">Protok\u00f3\u0142 DHCP opiera si\u0119 o tradycyjn\u0105 architektur\u0119 klient-serwer. Serwer DHCP zajmuje si\u0119 przechowywaniem ca\u0142ej konfiguracji oraz rejestruje tzw. &#8222;dzier\u017cawy&#8221; adres\u00f3w IP oraz konfiguracj\u0119 poszczeg\u00f3lnych urz\u0105dze\u0144 w sieci, kt\u00f3re zg\u0142aszaj\u0105 si\u0119 do niego z poszczeg\u00f3lnymi zapytaniami. Klient DHCP wi\u0119c wysy\u0142a do sieci (za pomoc\u0105 broadcastu) zapytanie o mo\u017cliwo\u015b\u0107 przydzielenia adresu IP i je\u015bli w sieci znajduje si\u0119 odpowiedni serwer DHCP otrzymuje on ofert\u0119 &#8222;dzier\u017cawy&#8221; danego adresu IP lub te\u017c odmow\u0119 je\u015bli np. serwer nie posiada w swojej konfiguracji danego urz\u0105dzenia. Oczywi\u015bcie ca\u0142a procedura jest troszk\u0119 bardziej skomplikowana (szczeg\u00f3\u0142y polecam wyczyta\u0107 na Wikipedii).<\/p>\n<p style=\"text-align: justify;\">DHCP pr\u00f3cz konfiguracji samego protoko\u0142u IPv4 potrafi r\u00f3wnie\u017c przekazywa\u0107 dodatkowe informacje konfiguracyjne m.in. adresy serwer\u00f3w DNS\/WINS, alternatywne bramy domy\u015blne, nazwy domeny, konfiguracj\u0119 uruchomienia systemu poprzez sie\u0107 (zast\u0119puje BOOTP) itd.<\/p>\n<p style=\"text-align: justify;\">Konfiguracja serwera DHCP sprowadza si\u0119 w zasadzie do okre\u015blenia przestrzeni adresowej IP (tzw. DHCP Pool) jak\u0105 serwer DHCP ma rozdysponowa\u0107 dla klient\u00f3w oraz na jak d\u0142ugo adres IP ma by\u0107 przypisany dla ewentualnego klienta (lease time &#8211; czas dzier\u017cawy). W znakomitej wi\u0119kszo\u015bci router\u00f3w domowych serwer DHCP jest domy\u015blnie w\u0142\u0105czony &#8211; wi\u0119c wpinaj\u0105c kabelek lub \u0142\u0105cz\u0105c si\u0119 z nim bezprzewodowo &#8211; otrzymamy wolny adres IP (kt\u00f3ry zwykle jest przydzielany dynamicznie i tak\u017ce losowo). Oczywi\u015bcie losowe przypisywanie adresu IP jest nie zawsze po\u017c\u0105dan\u0105 cech\u0105 &#8211; dlatego zwykle serwery DHCP pozwalaj\u0105 na ustawienie tzw. statycznej dzier\u017cawy w oparciu o adres MAC urz\u0105dzenia. Pozwala to na sta\u0142e przypisanie adresu IP dla okre\u015blonego urz\u0105dzenia bez jego r\u0119cznej konfiguracji &#8211; jest to wi\u0119c najprostszy spos\u00f3b na wprowadzenie \u0142adu i porz\u0105dku w naszej sieci. Dzi\u0119ki DHCP u\u017cytkownik nie musi wi\u0119c pami\u0119ta\u0107 o r\u0119cznej konfiguracji IP &#8211; wystarczy, \u017ce my posiadamy odpowiednie wpisy w naszym serwerze.<\/p>\n<p style=\"text-align: justify;\">O korzy\u015bciach jakie daje nam takie rozwi\u0105zanie nie trzeba nawet wspomina\u0107 &#8211; w razie jakiejkolwiek zmiany (np. serwera DNS) nie musimy ka\u017cdorazowo biega\u0107 po u\u017cytkownikach naszej sieci i zmienia\u0107 jakichkolwiek ustawie\u0144. Poza tym w prosty spos\u00f3b mo\u017cemy autoryzowa\u0107 naszych u\u017cytkownik\u00f3w &#8211; je\u015bli kto\u015b dopnie si\u0119 do sieci &#8211; a nie b\u0119dzie dopisany wcze\u015bniej do systemu &#8211; jego komputer oczywi\u015bcie nie pobierze ustawie\u0144 a tym samym nie skorzysta z zasob\u00f3w np. Internetu (pomijam, \u017ce z\u0142amanie tego zabezpieczenia nawet dla dziecka z podstaw\u00f3wki to \u017caden problem).<\/p>\n<p><strong>No wi\u0119c jaki jest problem z DHCP ?<\/strong><\/p>\n<p style=\"text-align: justify;\">Nasza sie\u0107 rozrasta si\u0119 a tym samym ilo\u015b\u0107 u\u017cytkownik\u00f3w si\u0119 zwi\u0119ksza. A z lud\u017ami jak to z lud\u017ami &#8211; nie ka\u017cdy jest tak bardzo obyty lub tym bardziej zna podstawy dzia\u0142ania tego do czego jest pod\u0142\u0105czony. Dodatkowo dochodzi naturalna sk\u0142onno\u015b\u0107 do &#8222;kombinowania&#8221; a ju\u017c nie daj bo\u017ce do poprawiania tego co zrobi\u0142 administrator sieci lub instalator. \u00a0Je\u015bli nasza sie\u0107 opiera si\u0119 wi\u0119c w wi\u0119kszo\u015bci na zwyk\u0142ej skr\u0119tce (pomijam PON czy sieci WIFI) to pr\u0119dzej czy p\u00f3\u017aniej zdarzy si\u0119 nam, \u017ce kt\u00f3ry\u015b z u\u017cytkownik\u00f3w wepnie kabelek nie tam gdzie trzeba \u00a0&#8211; szczeg\u00f3lnie kiedy w dobie router\u00f3w z WIFI ka\u017cdy chce mie\u0107 Internet w ka\u017cdym domowym urz\u0105dzeniu. O ile pojedynczemu u\u017cytkownikowi Internet mo\u017ce nie dzia\u0142a\u0107 &#8211; to zamienienie interfejsu LAN z WANem mo\u017ce spowodowa\u0107 nie lada problem dla wi\u0119kszej grupy u\u017cytkownik\u00f3w &#8211; szczeg\u00f3lnie, \u017ce popularne &#8222;domowe routerki&#8221; r\u00f3wnie\u017c serwer DHCP posiadaj\u0105.<\/p>\n<p style=\"text-align: justify;\"><strong>Dwa serwery DHCP w jednym segmencie to za du\u017co<\/strong><\/p>\n<p style=\"text-align: justify;\">Je\u015bli klient\u00f3w dopinamy do sieci za pomoc\u0105 prostych (niezarz\u0105dzalnych) prze\u0142\u0105cznik\u00f3w to zasadniczo nie mamy mo\u017cliwo\u015bci wi\u0119kszej obrony w przypadku takiego nieumy\u015blnego lub umy\u015blnego dzia\u0142ania u\u017cytkownika. W przypadku znakomitej wi\u0119kszo\u015bci zarz\u0105dzalnych prze\u0142\u0105cznik\u00f3w istnieje co najmniej kilka sposob\u00f3w na &#8222;obron\u0119&#8221;. Podstawow\u0105 ochron\u0105 naszej sieci jest przypisanie adresu MAC do konkretnego portu. Je\u015bli u\u017cytkownik zamieni WAN z LANem a \u00a0najcz\u0119\u015bciej LAN ma inny adres MAC &#8211; switch nie pozwoli na transmisj\u0119 danych lub po prostu wy\u0142\u0105czy port. Istnieje r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 skorzystania z bardziej wyrafinowanego zabezpieczenia jakim jest dhcp-snooping &#8211; kt\u00f3ry pozwala na wskazanie na kt\u00f3rym porcie w prze\u0142\u0105czniku osi\u0105galny jest serwer DHCP. W przypadku kiedy serwer DHCP pojawi si\u0119 na innym porcie ni\u017c zdefiniowany &#8211; ruch z takiego serwera lub portu zostanie zablokowany. Co wi\u0119c mo\u017cemy zrobi\u0107 je\u015bli nie posiadamy zarz\u0105dzalnego prze\u0142\u0105cznika?<\/p>\n<p style=\"text-align: justify;\">Problem staje si\u0119 bardziej powa\u017cny zwa\u017cywszy, \u017ce wpi\u0119ty &#8222;odwrotnie&#8221; router mo\u017ce roz\u0142o\u017cy\u0107 nam sie\u0107 lub przynajmniej segment do najbli\u017cszego routera. (Warto zaznaczy\u0107, \u017ce DHCP dzia\u0142a w domenie broadcastowej, wi\u0119c nie przechodzi przez routery &#8211; no chyba, \u017ce kto\u015b wstawi DHCP Relay&#8217;a). Co wi\u0119c poradzi\u0107 w takim wypadku? Rozwi\u0105zania s\u0105 zasadniczo dwa :<\/p>\n<ul>\n<li>Uruchomi\u0107 w sieci dost\u0119p poprzez protok\u00f3\u0142 PPPoE<\/li>\n<li>Wyci\u0105\u0107 niechciany ruch na mostach lub switchach wy\u017cej<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">O ile pierwsza metoda jest do\u015b\u0107 ciekawa &#8211; bo zasadniczo zabezpiecza nas przed podobnymi sytuacjami &#8211; o tyle wdro\u017cenie PPPoE w sieci z du\u017c\u0105 ilo\u015bci\u0105 klient\u00f3w mo\u017ce rodzi\u0107 wiele problem\u00f3w przy czym najwa\u017cniejszy jest nak\u0142ad czasowy oraz je\u015bli to b\u0119dzie wymagane r\u00f3wnie\u017c koszta materialne (trzeba uruchomi\u0107 koncentrator PPPoE).<\/p>\n<p style=\"text-align: justify;\">Metoda druga jest zwykle dost\u0119pna wsz\u0119dzie tam, gdzie znajdziemy urz\u0105dzenia kt\u00f3re potrafi\u0105 filtrowa\u0107 nam ruch IPv4 &#8211; czyli wszelkiego rodzaju mosty bezprzewodowe (Mikrotik, Ubiquiti) oraz switche agregacyjne &#8211; czyli te zarz\u0105dzalne ;D<\/p>\n<p style=\"text-align: justify;\"><strong>Jak i co filtrowa\u0107?<\/strong><\/p>\n<p style=\"text-align: justify;\">Us\u0142uga DHCP ma to do siebie, \u017ce serwer DHCP rozg\u0142asza swoje oferty odno\u015bnie dzier\u017cawy adresu IP na porcie UDP o numerze 67. Komunikacja od strony klient\u00f3w odbywa si\u0119 na porcie o numer wy\u017cszym czyli 68. Blokuj\u0105c wi\u0119c ruch UDP na porcie 67 od strony gdzie znajduj\u0105 si\u0119 urz\u0105dzenia klient\u00f3w mo\u017cemy skutecznie zablokowa\u0107 rozg\u0142oszenia zdublowanego serwera DHCP a tym samym ograniczy\u0107 &#8222;psucie sieci&#8221;.<\/p>\n<p style=\"text-align: justify;\">Wystarczy u\u017cy\u0107 odpowiedniej regu\u0142ki w ebtables dla Linuxa :<\/p>\n<blockquote><p>ebtables -p IPv4 -i eth0 &#8211;ip-proto udp &#8211;ip-sport 67 -j DROP<\/p><\/blockquote>\n<p style=\"text-align: justify;\">Nale\u017cy pami\u0119ta\u0107, \u017ce gdzie <strong>-i eth0\u00a0<\/strong>nale\u017cy wpisa\u0107 odpowiedni interfejs pod kt\u00f3rym znajduj\u0105 si\u0119 klienci. W przypadku kiedy si\u0119 pomylimy zablokujemy w\u0142a\u015bciwy serwer DHCP.<\/p>\n<p style=\"text-align: justify;\">W przypadku Mikrotik&#8217;a stosown\u0105 regu\u0142k\u0119 wprowadzamy w Bridge \/ Filter :<\/p>\n<blockquote>\n<p style=\"text-align: justify;\">\/interface bridge filter<br \/>\nadd action=drop chain=forward comment=&#8221;&#8221; disabled=no in-interface=ether1 \\<br \/>\nip-protocol=udp mac-protocol=ip src-address=0.0.0.0\/0 src-port=67<\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">Dla sprz\u0119tu UBNT sytuacja jest niemal identyczna. W zak\u0142adce Networks musimy tylko zaznaczy\u0107 &#8222;dziubek&#8221; Firewall i wprowadzi\u0107 regu\u0142\u0119 DROP na interfejs eth0 i wpisa\u0107 dla \u017ar\u00f3d\u0142a port 67 UDP.<\/p>\n<p style=\"text-align: justify;\"><strong>Kt\u00f3ry klient nabru\u017adzi\u0142 i co z nim zrobi\u0107 dalej ?<\/strong><\/p>\n<p style=\"text-align: justify;\">Je\u015bli &#8222;odwr\u00f3cony router&#8221; zd\u0105\u017cy\u0142 ju\u017c nam troch\u0119 namiesza\u0107 to naprawienie sytuacji u pozosta\u0142ych u\u017cytkownik\u00f3w sprowadza si\u0119 zwykle do zrestartowania urz\u0105dzenia ko\u0144cowego. Dlatego warto posiada\u0107 dost\u0119p do ko\u0144c\u00f3wek klienckich &#8211; dzi\u0119ki czemu mo\u017cemy zrobi\u0107 to zdalnie.<\/p>\n<p style=\"text-align: justify;\">Namierzenie delikwenta kt\u00f3ry podpi\u0105\u0142 nam odwrotnie router sprowadza si\u0119 zwykle do przeanalizowania pakiet\u00f3w w kt\u00f3rych znajduje si\u0119 oferta dzier\u017cawy adres IP. Adres MAC \u017ar\u00f3d\u0142a wska\u017ce nam urz\u0105dzenie kt\u00f3re &#8222;rozsy\u0142a&#8221; trefne informacje. Jak ju\u017c wspomnia\u0142em adres MAC dla interfejsu LAN i WAN r\u00f3\u017cni si\u0119 &#8211; \u00a0jest to zwykle ostatnia cyfra w adresie MAC. St\u0105d maj\u0105c list\u0119 adres\u00f3w MAC kt\u00f3re s\u0105 w naszej sieci &#8211; \u0142atwo odnale\u017a\u0107 podobny adres &#8211; no chyba, \u017ce klient &#8222;sklonowa\u0142&#8221; sobie adres MAC WANu to wtedy mo\u017ce by\u0107 to nie lada problem. Je\u015bli znamy ju\u017c adres MAC oraz znamy adresy i konfiguracj\u0119 jak\u0105 przypisa\u0142 nam nieautoryzowany serwer DHCP mo\u017cemy spr\u00f3bowa\u0107 zablokowa\u0107 jego dzia\u0142anie.<\/p>\n<p style=\"text-align: justify;\">O ile mamy dost\u0119p do danego segmentu sieci mo\u017cemy wysyci\u0107 go bzdurnymi dzier\u017cawami za pomoc\u0105 odpowiedniego narz\u0119dzia lub&#8230; zalogowa\u0107 si\u0119 do &#8222;nieszcz\u0119snego&#8221; routera i zdalne wy\u0142\u0105czy\u0107 serwera DHCP &#8211; pod warunkiem, \u017ce znamy do tego routera has\u0142o i uda nam si\u0119 uzyska\u0107 do niego dost\u0119p &#8211; co w przypadku &#8222;odwr\u00f3cenia&#8221; routera wymaga przypisania na sta\u0142e adresu MAC z adresem IP za pomoc\u0105 komendy:<\/p>\n<blockquote><p>arp -s adres_ip adres_mac<\/p><\/blockquote>\n<p><strong>Czym si\u0119 pos\u0142ugiwa\u0107 ?<\/strong><\/p>\n<p style=\"text-align: justify;\">W przypadku takich sytuacji idealnie sprawdza si\u0119 pot\u0119\u017cne i popularne narz\u0119dzie o nazwie Wireshark kt\u00f3ry dost\u0119pne jest zar\u00f3wno pod Linuxa i Windows. Zreszt\u0105 jest to kompletny sniffuj\u0105cy kombajn pozwalaj\u0105cy na analiz\u0119 niemal\u017ce ka\u017cdego elementu stosu sieciowego. Drug\u0105 wart\u0105 polecenie aplikacj\u0105 jest THCRUT &#8211; niewielki programik dost\u0119pny pod Linuxa i FreeBSD potrafi\u0105cy &#8222;zalewa\u0107&#8221; serwer DHCP zapytaniami.<\/p>\n<p style=\"text-align: justify;\"><strong>Podsumowuj\u0105c<\/strong><\/p>\n<p style=\"text-align: justify;\">Mora\u0142 z tej historii taki &#8211; kupujcie zarz\u0105dzalne switche z mo\u017cliwo\u015bci\u0105 filtracji na warstwie 3 i z autoryzacj\u0105 MAC na poszczeg\u00f3lnych portach. Najlepiej wyposa\u017cone dodatkowo w dhcp-snooping. Wtedy odwrotne wpinanie routera nie jest nam straszne. W przeciwnym wypadku musimy albo wdra\u017ca\u0107 PPPoE lub &#8230; troch\u0119 si\u0119 pom\u0119czy\u0107.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pocz\u0105tki W sieciach ISP opartych o technologie ethernetowe mo\u017cemy klient\u00f3w pod\u0142\u0105cza\u0107 na kilka r\u00f3\u017cnych sposob\u00f3w i w r\u00f3\u017cny spos\u00f3b ich autoryzowa\u0107. Wracaj\u0105c pami\u0119ci\u0105 do dawnych czas\u00f3w kiedy sieci lokalne opiera\u0142y si\u0119 jeszcze na koncentratory\/huby i kable koncentryczne a sam Internet &hellip; <a href=\"https:\/\/blog.devices.pl\/?p=20\">Czytaj dalej <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/posts\/20"}],"collection":[{"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20"}],"version-history":[{"count":6,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":23,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=\/wp\/v2\/posts\/20\/revisions\/23"}],"wp:attachment":[{"href":"https:\/\/blog.devices.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.devices.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}