Wprowadzenie do kryptografii i bezpieczeństwa Po raz trzeci
Wirtualne sieci lokalne Czyli VLAN-y
Sieci wirtualne Wirtualizacja bardzo z grubsza: coś, czego nie widać (fizycznie nie istnieje), ale naprawdę jest: Trochę formalniej : budowanie abstrakcji nad sprzętem Sieci VLAN odseparowane logicznie sieci na jednym urządzeniu (switchu). Można je sobie wyobrażać jako duży switch pokrojony na małe (osobne) urządzenia Każdy VLAN jest osobną siecią L3, ma osobną adresację Hosty w sieci VLAN nie są świadome jej istnienia Sieci VLAN konfiguruje się na przełączniku i można je rozciągać pomiędzy większą liczbą urządzeń
Sieci wirtualne
VLAN Zalety Większe bezpieczeństwo Redukcja kosztów Lepsza wydajność Zmniejszenie domen rozgłoszeniowych Łatwiejsze zarządzanie Prostsze projektowanie i wdrożenie Adaptacyjność
VLAN 1 sieć domyślna
Rozciąganie VLAN-ów
Łącza trunk Łącza trunk przenoszą więcej niż jedną sieć VLAN Trunk zostają uruchomione pomiędzy przełącznikami, co umożliwia komunikację urządzeniom z tą samą siecią VLAN, nawet jeśli są one fizycznie połączone z różnymi przełącznikami Najpopularniejszy protokół: IEEE 802.1q Dawniej także Cisco Inter-Switch Link (ISL)
Ramka 802.1q
Native VLAN Native VLAN pojedyncza sieć w łączu trunk, która nie jest tagowana (przez to można istnieć tylko jedna) Ramki nie zawierają znacznika 802.1q przez to mogą zrozumieć je normalne urządzenia (komputery) Domyślnie VLAN1 Pozwala na poinformowanie urządzeń, że są wpięte do łącza trunk Jeżeli pomiędzy dwoma switchami: native VLAN musi być identyczny po obu stronach
Tworzenie sieci VLAN
Przydzielenie interfejsu do VLAN-u
Przydzielenie interfejsu do VLAN-u
Usuwanie interfejsu z sieci VLAN
Konfiguracja i statystyki VLAN
Konfiguracja łącza trunk
Atak VLAN hopping
Przerwa na laboratoria Sieci VLAN
Lab 3.1. Stworzyć topologię z obrazka i sprawdzić, pomiędzy którymi hostami będzie możliwa transmisja
Lab 3.2. Do S1 dołączyć kolejne dwa hosty i umieścić je w VLAN 20. Przy pomocy switchport trunk allowed vlan nie dopuścić do przenoszenia ramek VLAN20 przez łącze trunk Sprawdzić, pomiędzy którymi urządzeniami możliwa jest transmisja
Ataki na tablicę CAM
CAM CAM Content Addressable Memory bardzo szybki w dostępie rodzaj pamięci, adresowana zawartością (a nie kolejnym indeksem). Tutaj: adres komórki to MAC. Układy przełączające switcha zbudowane są w oparciu o pamięć CAM (tablica czasem nazywana FIB Forwarding Information Base). Pamięć CAM trudna w implementacji, ograniczony rozmiar i przez to droga.
CAM
CAM przepełnienie Rozmiary CAM (orientacyjne): Cisco 2960 8000 Cisco 3650/3850 32000 Cisco Catalyst 6500 64000-128000 Cisco Catalyst 9400/9500 64000 Sprawdzenie: show mac address-table count Przepełnienie CAM: Zastępowanie najstarszych wpisów Brak uczenia się nowych akcja jak hub Tablicę CAM można zapchać w kilka sekund
CAM ataki MAC Flooding Wysyłanie ramek z losowymi adresami źródłowymi. Efekt: przepełnienie tablicy CAM na switchu. Cel: spadek wydajności lub uzyskanie kopiowania przynajmniej części ruchu. MAC Spoofing Wysyłanie ramek cudzym adresem MAC jako adresem źródłowym. Cel: przechwytywanie ruchu. Ofiara i tak będzie nadawać, więc trzeba okresowo powtarzać spoofing.
MAC Spoofing SMAC WWW DMAC MAC VLAN Port WWW 1 Fa0/1
MAC Spoofing SMAC PC-B DMAC WWW MAC VLAN Port WWW 1 Fa0/1
MAC Spoofing SMAC PC-B DMAC WWW MAC VLAN Port WWW 1 Fa0/1 PC-B 1 Fa0/3
MAC Spoofing przeciwdziałanie Statyczne przypisanie adresów MAC: S(config)# mac address-table static MAC vlan VLAN inteface PORT Uciążliwe w utrzymaniu i konfiguracji, nieskalowalne praktycznie niestosowane. Port-security ograniczenie liczby adresów MAC na porcie: Przypisane statyczne nie jest usuwane po link-down, pojawienie się adresu MAC w innym miejscu (ale ten sam VLAN) skutkuje naruszeniem bezpieczeństwa. Dynamiczne na podstawie otrzymywanych ramek, usuwane po linkdown. Sticky dynamiczne, pierwszy adres zapamiętywany.
MAC Spoofing przeciwdziałanie Możliwe akcje: Protect odrzuca ruch z niezaufanych adresów Restrict j.w. oraz generowany komunikat Syslog i zwiększenie licznika naruszeń Shutdown port przechodzi w stan err-disabled Starzenie się wpisów: Można określić, po jakim czasie zapamiętane adresy są usuwane. Usuwane mogą być także adresy statyczne (domyślnie nie są). Link-down dalej pozostaje wyzwalaczem. Dwie metody starzenia: absolute (od pojawienia się adresu) oraz inactivity (od ostatniej ramki z tym adresem źródła) Licznik adresów MAC dotyczy wszystkich adresów: statycznych, dynamicznych i sticky.
MAC Spoofing przeciwdziałąnie Port-security wymaga portu statycznego (z wyłączonym DTP): S(config-if)# switchport mode access S(config-if)# switchport port-security Konfiguracja limitów: S(config-if)# switchport port-security maximum LICZBA_ADRESOW S(config-if)# switchport port-security mac-address { ADRES_MAC sticky }
MAC Spoofing przeciwdziałąnie Włączenie zablokowanego portu: shut oraz no shut na interfejsie mechanizm errdisable recovery: S(config)# errdisable recovery cause psecure-violation S(config)# errdisable recovery interval SS
Ataki na sieci VLAN
Switch-spoofing Switch-spoofing negocjacja trunka z użyciem DTP. Wynegocjowany łącze trunk daje dostęp do wszystkich VLAN-ów (zazwyczaj na takich portach nie są skonfigurowane dopuszczone VLAN-y). Zapobieganie: wyłączenie DTP (statycznie ustawiony tryb trunk lub access) S(config-if)# switchport nonegotiate wyłączenie nieużywanych portów filtrowanie VLAN-ów na portach.
Double-tagging Double-tagging atakujący wysyła podwójnie tagowaną ramkę. Atak wymaga co najmniej dwóch switchy i wykorzystywania native VLAN z łącza trunk jako dostępowego. Założenie: switch dopuszcza tagowany ruch na porcie access. W nowszych IOS (od 12.2) tak nie jest.
Double-tagging Trunk, native VL1 VL1 VL2 Eth VL1 VL2 Data
Double-tagging Trunk, native VL1 Eth VL2 Data VL1 VL2
Double-tagging Trunk, native VL1 VL1 Eth Data VL2
Double-tagging zapobieganie Zapobieganie: Włączenie tagowania native VLAN (chociaż większość nowych switchy na to nie pozwala) S(config-if)# vlan dot1q tag native Wymagane po obu stronach łącza trunk! Nieużywany VLAN jako native Niewykorzystywanie VLAN 1 jako management Uwaga na native VLAN mismatch przekazywany jest przez CDP!
Przerwa na laboratoria Double-tagging
Lab 4.1.
Lab 4.2. 1. Skonfigurować sieć według schematu. Na PC-A uruchomić Kali Linux. Adresy wszystkich urządzeń powinny znajdować się w tej samej sieci. Przed wpięciem do switcha wyłączyć interfejsy sieciowe na PC-B i WWW. Konfiguracja adresów IP na interfejsach w Kali: sudo service NetworkManager stop sudo ifconfig eth0 IP netmask MASKA up 2. Z PC-A przy pomocy programu macof zapełnić tablicę FIB na switchu. 3. Włączyć interfejsy na PC-B i WWW. Z PC-B połączyć się z serwerem WWW (może być ping). Czy na PC-A widać ruch pomiędzy PC-B a WWW?
Lab 4.3. 4. Skonfigurować mechanizm port-security na portach przełącznika. Wykorzystać przyklejanie adresów MAC urządzeń (mac-address sticky) i pozwolić na 1 adres MAC na każdym porcie. W przypadku naruszenia bezpieczeństwa ruch z dodatkowych adresów MAC nie powinien być przepuszczany. 5. Co stanie się w przypadku wykonania ataku MAC flooding z komputera w sieci? Czy atak się powiedzie? Dlaczego? 6. Zmienić zachowanie portu przy naruszeniu bezpieczeństwa na shutdown i skonfigurować mechanizm recovery portów po 60 sekundach.
Lab 4.4. 7. Co stanie się w przypadku przeprowadzenia ataku? Czy port zostanie ponownie uruchomiony? 8. Jak zachowa się switch, jeżeli do portu z włączonym port-security zostanie podłączony inny host niż dotychczas?
Lab 5.1. Trunk, native VL1 VL1 VL2
Lab 5.2. 1. Skonfigurować sieć według schematu. Na PC-A uruchomić Kali Linux. Adresy IP urządzeń powinny być w tej samej sieci. 2. Przy pomocy trybu tekstowego programu yersinia dokonać ataku 802.1Q double-tagging, by ruch z PC-A dotarł do PC-B (ping z ustawionymi odpowiednio adresami IP i MAC źródłowymi i docelowymi). Polecenie (wszystko w jednej linii): sudo yersinia dot1q attack 1 source MAC_SRC dest MAC_DST vlan1 OUTER_VLAN_ID vlan2 INNER_VLAN_ID ipsource IP_SRC ipdest IP_DST
Lab 5.3. 3. Przy pomocy Wireshark na PC-A zobaczyć, jak wygląda wysyłana ramka Ethernet z podwójnym tagowaniem. 4. Na PC-B sprawdzić, czy atak się udał (ruch dotarł do komputera). Jakie są różnice pomiędzy ramkami? 5. Jak zapobiec takiemu atakowi? UWAGA: Do zadania powinien zostać wykorzystany switch, z IOS starszym niż 12.2 (np. Catalyst 2950).
Ataki na ARP
ARP przypomnienie ARP Address Resolution Protocol ustala na podstawie IP adres MAC. ARP Reply host informuje o swoim adresie IP. Gratuitous ARP do sprawdzania duplikatów adresów IP (host wysyła zapytanie o swój adres). Wykorzystywany także przez HSRP do ogłoszenia nowej bramy (Gratuitous ARP Reply). Domyślnie komunikaty nie są chronione.
ARP ataki ARP Spoofing odpowiedź na ARP Request z fałszywym adresem MAC. ARP Poisoning wysyłanie nieoczekiwanych ARP Reply. Czasem wspólnie określane mianem ARP Spoofing.
ARP Spoofing Host IP MAC PC-A PC-A PC-A WWW WWW? SMAC DMAC ARP_ SMAC ARP_ SIP ARP_ DMAC ARP_ DIP PC-A Bcast PC-A PC-A 0 WWW
ARP Spoofing SMAC DMAC ARP_ SMAC ARP_ SIP ARP_ DMAC ARP_ DIP WWW PC-A WWW WWW PC-A PC-A SMAC DMAC ARP_ SMAC ARP_ SIP ARP_ DMAC ARP_ DIP PC-B PC-A PC-B WWW PC-A PC-A
ARP Spoofing Host IP MAC PC-A PC-A PC-A WWW WWW PC-B MAC VLAN Port PC-A 1 Fa0/1 WWW 1 Fa0/2 PC-B 1 Fa0/3
ARP Spoofing Host IP MAC PC-A PC-A PC-A WWW WWW PC-B Widoczna ramka to Gratuitous ARP (Reply) SMAC DMAC ARP_ SMAC ARP_ SIP ARP_ DMAC ARP_ DIP PC-B Bcast PC-B WWW Bcast WWW
Przerwa na laboratoria Znowu Tym razem ARP
Lab 6.1.
Lab 6.2. 1. Skonfigurować sieć według schematu. Na PC-A uruchomić Kali Linux. Adresy wszystkich urządzeń powinny znajdować się w tej samej sieci. 2. Na PC-A włączyć przekazywanie pakietów: sudo sysctl w net.ipv4.ip_forward=1 Wyłączyć wysyłanie ICMP Redirect (pozwala uniknąć wysyłania dodatkowego ruchu do ofiar ataku): sudo sysctl w net.ipv4.conf.eth0.send_redirects=0 3. W oddzielnym oknie konsoli uruchomić proces spoofowania tablic ARP hosta PC-B i WWW: sudo ettercap Ti eth0 M arp //IP_PC-B// //IP_WWW// 4. Wykonać ping z PC-B do WWW. Czy widać go w ruchu przechodzącym przez PC-A (dzięki opcji ip_forward PC-A zachowuje się jak router)?
Jak się przed tym bronić? Czyli DHCP, DHCP Snooping i Dynamic ARP Inspection
DHCP Dynamic Host Configuration Protocol (RFC 1541 i później 2131), rok 1993. Serwerowi DHCP jest przyznana pula adresów, klient otrzymuje adres tej puli na określony administracyjnie czas, zwany czasem dzierżawy (ang. lease time) Czas dzierżawy może być różny (w sieciach hotspot będzie zazwyczaj niższy niż w przewodowym Ethernecie w biurze)
Sposoby przyznawania adresów Ręczna alokacja Administrator przypisuje wstępnie przydzielony adres IPv4 dla klienta, a DHCPv4 przekazuje ten adres IPv4 do urządzenia. Automatyczna alokacja serwer przypisuje statyczny adres przy pierwszym kontakcie hosta. Przy każdym kolejnym zgłoszeniu się tego klienta, otrzyma on ten sam adres. Dynamiczna alokacja klient otrzymuje adres na określony przez serwer czas, lub do momentu gdy klient nie potrzebuje już tego adresu. Następnym razem klient może otrzymać inny adres. Metoda ta jest najczęściej stosowana.
Komunikaty DHCP
DHCP Ataki DHCP Starvation wysycenie puli dostępnych adresów serwera DHCP. Nowe hosty pojawiające się w sieci nie mogą wtedy otrzymać adresu, ponieważ brak ich w puli. Atak typu DoS. DHCP Spoofing podszywanie się pod serwer DHCP, oferując własne dzierżawy. Możliwy atak MitM (np. podając adres bramy) lub DoS. Często poprzedzone przez DHCP Starvation.
DHCP zabezpieczenia DHCP Starvation odpowiednia konfiguracja port-security. Zapytania muszą zawierać inny adres MAC klienta. Wymuszenie zgodności MAC w ramce Ethernet i pola HWADDR w DHCP: S(config-if)# ip dhcp snooping verify mac-address DHCP Spoofing mechanizm DHCP Snooping, dostępny na większości switchy Cisco.
DHCP Snooping Domyślnie na wszystkich portach może pojawić się serwer DHCP. DHCP Snooping: Podział portów na zaufane (z nich mogą zostać wysłane DHCPOFFER i DHCPACK) oraz niezaufane (odrzucanie tych komunikatów). DHCPDISCOVER i DHCPREQUEST wysyłane są tylko na porty zaufane (mimo, że to broadcasty). Dodanie do DHCPDISCOVER i DHCPREQUEST opcji 82 (identyfikującej przekazujący switch).
DHCP Snooping Switch staje się świadomy ruchu DHCP: budowa tablicy bazy danych: port adres MAC hosta adres IP hosta Po co? DHCPRELEASE może zostać wysłane tylko z portu, na którym uzyskano dany adres. Nie można zwolnić adresu IP za inne urządzenie (serwer DHCP i tak powinien to sprawdzić). Dodatkowe mechanizmy ochrony: IP Source Guard i Dynamic ARP Inspection.
DHCP Snooping
DHCP Snooping konfiguracja 1. Włączenie DHCP Snooping S(config)# ip dhcp snooping 2. Wskazanie chronionych sieci VLAN S(config)# ip dhcp snooping vlan ID,ID-ID Domyślnie porty w stanie untrusted! 3. Konfiguracja portów zaufanych S(config)# int fa0/1 S(config-if)# ip dhcp snooping trust 4. (Opcjonalne) Konfiguracja limitu komunikatów S(config)# int fa0/2 S(config-if)# ip dhcp snooping limit rate LIMIT 5. Podgląd konfiguracji S# show ip dhcp snooping [ binding statistics ]
DHCP Snooping uwagi Domyślnie ustawiana przez switche, z włączonym DHCP Snooping, opcja 82 może być nierozpoznawana przez serwery DHCP. Efekt: odrzucanie przekazywanych zapytań. Wyłączenie opcji 82: S(config)# no ip dhcp snooping information option
No ale co to ma do ARP? To, że DHCP zna mapowania MAC IP
Dynamic ARP Inspection DAI mechanizm pozwalający na kontrolę poprawności komunikatów ARP. Komunikaty ARP porównywane są ze statycznymi wpisami ręcznych list ARP ACL (w pierwszej kolejności) oraz bazą DHCP Snooping (wymagane włączenie). Priorytet mają ARP ACL jeżeli z ACL wynika konieczność odrzucenia komunikatu, to nie następuje sprawdzenie bazy DHCP Snooping. Można w ogóle wyłączyć (na interfejsie) sprawdzanie bazy DHCP Snooping.
DAI Dwie kategorie portów: Zaufane ARP przepuszczane bez inspekcji Niezaufane dokonywana inspekcja DAI, domyślny limit 14 komunikatów/s. Po przekroczeniu limitu port umieszczany w stanie err-disabled (cause: arpinspection). Okresowe przywracanie portu: S(config)# errdisable recovery cause arp-inspection
DAI
DAI Dodatkowa kontrola S(config)# ip arp inspection validate PARAMETER src-mac porównywanie adresu źródłowego ramki Ethernet z adresem nadawcy w ARP dst-mac porównywanie adresu docelowego Ethernet z adresem celu w ARP ip komunikaty ARP sprawdzanie kod kątem dziwnych adresów IP (0.0.0.0, multicast, experimental, 255.255.255.255 itd.). IP nadawcy sprawdzane jest we wszystkich komunikatach ARP. IP celu tylko w ARP Reply. Można dopuścić 0.0.0.0 jako sender IP.
DAI uwagi DAI kontroluje tylko komunikaty ARP. Nie jest sprawdzany cały ruch pomiędzy urządzeniami. Jeżeli atak udał się już wcześniej wpisy w tablicy ARP dalej istnieją: Wpisy są dynamiczne znikną po pewnym czasie (kilka minut) Usuwanie: arp d *
DAI konfiguracja 1. Włączenie DAI na określonym VLAN-ie S(config)# ip arp inspection vlan ID,ID-ID Domyślnie porty w stanie untrusted! 2. Konfiguracja portów zaufanych S(config)# int fa0/1 S(config-if)# ip arp inspection trust 3. (Opcjonalne) Konfiguracja limitu komunikatów ARP na sekundę S(config)# int fa0/2 S(config-if)# ip arp inspection limit rate LIMIT 4. Podgląd działania DAI S# show ip arp inspection [ statistics ]