==== Przygotowanie konfiguracji do zajęć ==== //Zadanie 1.// Przygotuj konfigurację sieciową: * Uruchom ''Vlab'', następnie ''Linux SK prog'' * Uruchom terminal i zaloguj się na roota * Zaktualizuj listę pakietów: \\ ''apt-get update'' * zainstaluj telnet i picocom: \\ ''apt-get install telnet picocom'' * dnsmasq + NAT: * Zainstaluj dnsmasq: \\ ''apt-get install dnsmasq'' * Skonfiguruj dnsmasq, dopisując do pliku ''/etc/dnsmasq.conf'' linie: \\ ''interface=enp0s8'' \\ ''dhcp-range=10.0.0.2,10.0.1.10'' * Ustaw adres interfejsu ''enp0s8'' na np. 10.0.0.1/24 i włącz go, przykładowa komenda: \\ ''ifconfig enp0s8 10.0.0.1/24 up'' * Ustaw IP forwarding: \\ ''sysctl net.ipv4.conf.all.forwarding=1'' * Ustaw maskaradę na interfejsie ''enp0s3'': \\ ''iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE'' * Uruchom ponownie dnsmasq: \\ ''systemctl restart dnsmasq'' ==== FreeRadius ==== [[https://en.wikipedia.org/wiki/RADIUS|RADIUS]] to nazwa protokołu sieciowego służącego do uwierzytelniania (authentication), autoryzacji (authorization), i //accountingu// (accounting), usług określanych wspólnie jako AAA. Protokół RADIUS pozwala na wysłanie żądania dostępu (access-request) w formie listy atrybutów (identyfikator atrybutu + wartość). Serwer RADIUS na podstawie tych atrybutów albo pozwala na dostęp (access-accept), żąda więcej danych (access-challange), albo odmawia dostępu (access-reject). Odpowiedź (jak każda inna wiadomość) to lista atrybutów w których można zawrzeć dodatkowe informacje, używane np. do autoryzacji czy do konfiguracji klienta. Przykładowo: można odesłać identyfikator VLANu uwierzytelnionego użytkownika czy informacje o jego poziomie uprawnień dostępu do konsoli CISCO. Protokół RADIUS używany jest (tylko) między serwerem RADIUS a urządzeniem wykonującym uwierzytelnienie (Netwok Access Server), np. Access Pointem. Przykład (graficzny): [[https://technet.microsoft.com/pl-pl/library/cc755248(v=ws.11).aspx|[1]]]. FreeRADIUS [[https://en.wikipedia.org/wiki/FreeRADIUS|[1]]], [[https://freeradius.org/|[2]]] jest najpopularniejszym darmowym (i open-source) serwerem RADIUS. //Zadanie 2.// Zainstaluj i skonfiguruj (minimalnie) serwer FreeRadius: * Instalacja FreeRadiusa * Zainstaluj FreeRadiusa i wpa_supplicanta: \\ ''apt-get update'' \\ ''apt-get install freeradius freeradius-utils wpasupplicant'' * Wyłącz FreeRadiusa: \\ ''systemctl stop freeradius'' \\ (Debian domyślnie uruchamia każdy daemon który zostanie zainstalowany) * Konfiguracja FreeRadiusa * Przejdź do katalogu ''/etc/freeradius/3.0'' * Baza użytkowników: * Przejrzyj plik ''users'' * Dodaj użytkownika (z ustawionym tylko hasłem) na podstawie przykładowej konfiguracji * Typowo baza użytkowników jest brana z LDAP (''mods-available/ldap'') lub z bazy danych (''mods-available/sql'') * Przejrzyj powyższe pliki: \\ Z jakiej tabeli i bazy korzysta domyślnie sql? \\ Jaki filtr ldap jest tworzony do sprawdzenia użytkownika? * Klienci - baza urządzeń którym wolno odpytywać FreeRadiusa * przjrzyj plik ''clients.conf'' * dodaj nowego klienta, który: * może odpytywać z 10.0.0.0/24 * jest typu: \\ ''nas_type = cisco'' \\ (nas oznacza Network Access Server [[https://wiki.freeradius.org/glossary/NAS|[1]]]) * Do czego używany jest ''secret''? * Uruchom FreeRadiusa w trybie debugowania: \\ ''freeradius -X'' * Przetestuj serwer radius, wydając zapytanie: \\ ''radtest //użytkownik// //hasło// 127.0.0.1 0 //testing123// 0 localhost'' \\ Do sensowniejszych testów można użyć np. https://wiki.freeradius.org/config/Radclient * Wygeneruj certyfikaty serwera * Wejdź do katalogu ''certs'' * Przejrzyj plik ''ca.cnf'' i ''server.cnf'' * Wykonaj komendę ''make'' \\ Jakie certyfikaty wygenerowałeś? \\ Jaki będzie poziom zaufania do certyfikatu serwera przez klientów? * Dodaj do pliku ''mods-enabled/eap'', do sekcji ''ttls'' i ''peap'' opcje: \\ ''copy_request_to_tunnel = yes \\ use_tunneled_reply = yes'' * Uruchom ponownie ''freeradius -X'' Konfiguracja serwera radius (z materiałów eduroam): * https://www.eduroam.pl/Dokumentacja/freeradiusv2-09-2012.pdf * https://wiki.geant.org/display/H2eduroam/freeradius-sp ==== CISCO - wstęp ==== Wstęp do CISCO na podstawie [[sk1:cisco_wstep]] //Zadanie 3.// Skonfiguruj AP CISCO do współpracy z serwerem protokołu RADIUS: * AP używane na zajeciach mają hasło ''Cisco'' * Konsola szeregowa: \\ ''picocom /dev/ttyS0'' * W trybie konfiguracji ''(conf)#'' wykonaj konfigurację interfejsu mostka, nadając mu adres IP z dhcp: \\ ''interface BVI 1'' \\ ''  ip address dhcp'' * Włącz 'nowe' komendy [[https://networkengineering.stackexchange.com/questions/30037/what-was-the-aaa-old-model|[1]]] uwierzytelniania, autoryzacji i //accountingu// \\ ''aaa new-model'' * Dodaj serwer radius: \\ ''radius-server host 10.0.0.1 auth-port 1812 acct-port 1813 key //sekret//'' * Przetestuj serwer radius: \\ ''test aaa group radius //użytkownik// //hasło// new-code'' ==== AAA na przykładzie dostępu do wiersza poleceń CISCO ==== [[https://en.wikipedia.org/wiki/AAA_(computer_security)|AAA]], jak wspomniano wyżej, to: * uwierzytelnianie – sprawdzanie, czy użytkownik jest tym, za kogo się podaje, zwykle przez przedstawienie swojej nazwy i hasła, lub swojego certyfikatu i udowodnienie posiadania klucza prywatnego * autoryzacja – określenie czy użytkownik ma prawo wykonać konkretną czynność, np. czy wolno mu dołączyć do wybranej sieci bezprzewodowej, czy wolno mu zdalnie zalogować się na router, czy wolno mu na routerze wykonywać komendy konfiguracyjne. Dodatkowo RADIUS pozwala przesłać informacje konfiguracyjne, takie jak np. identyfikator VLANu, limit użycia danych, konfigurację IP [[https://wiki.freeradius.org/guide/Ippool-and-radius-clients|[1]]]. * //accounting// – rejestracja zdarzeń, wykorzystania i użycia zasobów, pozwala przykładowo przesłać dane kto kiedy korzystał z sieci bezprzewodowej, ile danych wymienił, kto konfigurował switch. Tak jak wszystkie komunikaty RADIUS, dane są przesyłane jako pary atrybut-wartość. W protokole RADIUS uwierzytelnienie i autoryzacja są zwykle robione razem, accounting musi być wykonywany osobno. Poniższej znajdują się ćwiczenia pokazujące działanie każdego z elementów AAA na przykładzie dostępu do wiersza poleceń urządzania CISCO. //Zadanie 4.// Authentication - uwierzytelnianie (logowanie do CISCO) * Włącz uwierzytelnianie dostępu do logowania się na urządzenie CISCO po radiusue: \\ ''aaa authentication login default group radius none'' \\ Uwaga: ostatni kawałek komendy (''none'') to określenie co ma się dziać jeśli serwer RADIUS nie odpowiada; ''none'' oznacza brak kontroli dostępu * Sprawdź działanie używając komendy ''telnet 10.0.0.x'' * Sprawdź działanie przez konsolę szeregową //Zadanie 5.// Authorisation - autoryzacja (logowanie do CISCO) * Włącz autoryzację dostępu do wiersza poleceń po radiusie: \\ ''aaa authorization exec default group radius'' * Stwórz dwóch użytkowników w serwerze RADIUS:robert Cleartext-Password := "hello" Service-Type = NAS-Prompt-User, Cisco-AVpair = "shell:priv-lvl=15" alice Cleartext-Password := "hello" NAS-Port-Type = Wireless-802.11 * Spróbuj się zalogować kolejno na ''alice'', na utworzonego przez Ciebie wcześniej użytkownika, na ''robert'' * Jaka jest różnica przy logowaniu? //Zadanie 6.// Accounting (logowanie do CISCO) * Włącz accounting dostępu do wiersza poleceń po radiusie: \\ ''aaa accounting exec default start-stop group radius'' * Włącz 'Vendor-Specific Attributes' do informacji o accountingu: \\ ''radius-server vsa send accounting'' * Kolejno zaloguj i wyloguj utworzonego przez Ciebie wcześniej użytkownika i roberta * Wejdź do katalogu ''/var/log/freeradius/radacct/'' i przejrzyj wpisy dotyczące accountingu ==== WPA-EAP ==== Jednym z ważnych zastosowań serwera RADIUS jest uwierzytelnianie użytkowników w sieciach bezprzewodowych korzystających z [[https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access|WPA/WPA2]] Enterprise (WPA2 jest opisywane przez standard IEEE 802.11i). \\ Standard WPA/802.11i nie wprowadza własnych metod uwierzytelniania - nakazuje użycie standardu [[https://en.wikipedia.org/wiki/IEEE_802.1X|802.1X]] i zdefiniowanego w nim EAPOL. \\ EAPOL korzysta z rozwiązania EAP (EAPOL = EAP over LAN). Protokół [[https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol|EAP]] **nie** służy do uwierzytelniania; EAP pozwala na przekazanie wiadomości różnych metod (protokołów) uwierzytelniania, a których najpopularniejsze to TLS, PEAP i TTLS. Wiadomości protokołu EAP są przesyłane wpierw między klientem sieci bezprzewodowej (stacją, STA) a AccessPointem (AP) przy użyciu protokołu EAPOL, następnie między AP a serwerem RADIUS przy użyciu protokołu RADIUS. Więcej informacji o 802.1X: * https://www.eduroam.pl/Dokumentacja/802_1X_02.pdf Użycia WPA2 Enterprise na przykładzie sieci eduroam: * https://wiki.geant.org/display/H2eduroam/eduroam+SP * https://www.eduroam.pl/index.php?page=doc Poniższe ćwiczenia pokazują prostą konfigurację sieci WPA2 Enterprise z wykorzystaniem wcześniej skonfigurowanego serwera RADIUS do uwierzytelniania użytkowników sieci bezprzewodowej. //Zadanie 7.// Sprawdź lokalnie (na serwerze radius) uwierzytelnianie EAP: * Pobierz: {{:zsk:eapol_test|eapol_test}} (lub zbuduj, instrukcje niżej) program ''eapol_test'' * Przygotuj plik konfiguracyjny (lub pobierz np. z http://deployingradius.com/scripts/eapol_test/): network={ ssid="wartoscIgnorowanaPrzezEapolTest" key_mgmt=WPA-EAP eap=PEAP #eap=TTLS anonymous_identity="anonymous" phase2="autheap=MSCHAPV2" identity="użytkownik" password="hasło" } * Uruchom eapol_test z tak przygotowanym plikiem: \\ ''./eapol_test -c wpa_supplicant.conf -s //sekret_radiusa// '' ++++ budowanie eapol_test | # building eapol_test git clone git://w1.fi/hostap.git cd hostapd/wpa_supplicant cp defconfig .config nano .config # CONFIG_DRIVER_WEXT=y CONFIG_EAPOL_TEST=y CONFIG_LIBNL32=y CFLAGS += -I/usr/include/libnl3 -Wno-format-truncation apt-get install libssl-dev libnl-genl-3-dev libnl-3-dev make make eapol_test ++++ //Zadanie 8.// Skonfiguruj nową grupę serwerów radius i nową grupę uwierzytelniania na potrzeby WPA-Enterprise: aaa group server radius serweryRadiusDlaWpa server 10.0.0.1 auth-port 1812 acct-port 1813 aaa authentication login grupaUwierzytelnianiaDlaWpa group serweryRadiusDlaWpa //Zadanie 9.// Skonfiguruj sieć bezprzewodową (przkład dla sieci o nazwie //wybranySsidSieci// działającej na kanale 11): dot11 ssid wybranySsidSieci authentication open eap grupaUwierzytelnianiaDlaWpa authentication key-management wpa guest-mode interface Dot11Radio 0 channel 11 encryption mode ciphers aes-ccm ssid wybranySsidSieci no shut //Zadanie 10.// Przetestuj łączenie się do sieci (wykorzystując nieużywany komputer lub własną komórkę / laptopa) //Zadanie 11.// Ograniczanie dozwolonych metod EAP: * Przejrzyj plik ''mods-enabled/eap'' z katalogu konfiguracji FreeRadiusa. * Zmodyfikuj plik tak, by zabronić metod innych niż ''ttls'' i ''peap'' (uwaga: sekcje ''tls-config'' i ''mschapv2'' muszą zostać) * Przetestuj poleceniem ''eapol_test'' działanie konfiguracji //Zadanie 12.// Accounting sieci bezprzewodowej: * Stwórz grupę accountingu na potrzeby WPA-Enterprise: \\ ''aaa accounting network grupaAcctDlaWpa start-stop group serweryRadiusDlaWpa'' * Ustaw accounting dla wybranej sieci: \\ ''dot11 ssid wybranySsidSieci'' \\ ''  accounting grupaAcctDlaWpa'' * Połącz się z siecią, pobierz jakiekolwiek dane, rozłącz się z siecią * Wejdź do katalogu ''/var/log/freeradius/radacct/'' i przejrzyj wpisy dotyczące accountingu \\ Znajdź informację o tym, ile czasu trwało połączenie, do jakiego AP i jakiej sieci się podłączył klient, ile danych wymienił. ==== 802.1X ==== Opisany w poprzedniej sekcji protokół IEEE 802.1X stworzono na potrzebę uwierzytelniania urządzeń podłączanych do sieci kablowej. IEEE 802.1X to tylko uwierzytelnianie klienta – w porównaniu do WPA2-Enterprise nie stosuje się szyfrowania ruchu. //Zadanie 13.// Przełącz się z konfiguracji AP na konfigurację switcha. Wykonaj podstawową konfigurację: interface range GigabitEthernet 0/1-24 spanning-tree portfast interface vlan 1 ip address dhcp do ping 10.0.0.1 aaa new-model radius-server host 10.0.0.1 auth-port 1812 acct-port 1813 key sekret ip radius source-interface vlan 1 do test aaa group radius użytkownik hasło new-code //Zadanie 14.// Wykonaj minimalną konfigurację 802.1X: * Włącz uwierzytelnianie 802.1X po radiusie: \\ ''aaa authentication dot1x default group radius'' * Włącz wsparcie dla 802.1X: \\ ''dot1x system-auth-control'' * Na porcie na którym jest podłączenie do serwera radius ustaw tryb access (zwykły port, nie trunk): \\ ''interface GigabitEthernet 0/24'' \\ ''  switchport mode access'' * Na wybranych portach włącz kontrolę portów i skonfiguruj nasłuchiwanie na pakiety EAPOL (''authenticator''): \\ ''interface range GigabitEthernet 0/1-12'' \\ ''  switchport mode access'' \\ ''  dot1x port-control auto'' \\ ''  dot1x pae authenticator'' * Z drugiego komputera zobacz, czy da się wykorzystać porty na których ustawiono kontrolę. * Wykonaj komendy diagnostyczne: \\ ''show dot1x'' \\ ''show dot1x interface GigabitEthernet 0/1 details'' //Zadanie 15.// Uwierzytelnij połączenie do switcha: * Stwórz plik wpa_supplicant.conf ap_scan=0 network={ key_mgmt=IEEE8021X eap=PEAP #eap=TTLS phase2="autheap=MSCHAPV2" identity="bob" password="hello" } Zwróć uwagę na ''ap_scan=0'' i ''key_mgmt=IEEE8021X'' w pliku konfiguracyjnym * Uwierzytelnij się używając: \\ ''wpa_supplicant -D wired -i enp0s8 -c wpa_supplicant.conf [-d]'' \\ Przełącznik ''-D wired'' nakazuje traktować interfejs jako kablowy (nie bezprzewodowy). \\ Opcjonalny przełącznik ''-d'' włącza tryb diagnostyczny (debug) * Sprawdź w konsoli CISCO jak wygląda stan łącza i stan 802.1X * Przerwij wpa_supplicanta. \\ Kiedy port zostanie zdeautentykowany (//jak to jest po polsku?//)? //Zadanie 16.// Wymuś przeterminowywanie i periodyczne odświeżanie uwierzytelnienia: * W konfiguracji interfejsów wpisz: \\ ''dot1x reauthentication'' * Skonfiguruj czas co jaki następuje żądanie ponownego uwierzytelnienia: \\ ''dot1x timeout reauth-period 20'' \\ Uwaga: 20 sekund to bardzo kótki czas, podany jako przykład na potrzeby labolatorium * Sprawdź po jakim czasie nieodświeżania uwierzytelnienia klient zostanie usunięty z sieci //Zadanie 17.// Accounting * Włącz accounting komendą: \\ ''aaa accounting dot1x default start-stop group radius'' * Sprawdź wpisy dotyczące accountingu