Table of Contents
Przygotowanie konfiguracji do zajęć
Zadanie 1. Przygotuj konfigurację sieciową:
- Uruchom
Vlab, następnieLinux 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.conflinie:
interface=enp0s8
dhcp-range=10.0.0.2,10.0.1.10 - Ustaw adres interfejsu
enp0s8na 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
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): [1].
FreeRADIUS [1], [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
- 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.cnfiserver.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 sekcjittlsipeapopcje:
copy_request_to_tunnel = yes
use_tunneled_reply = yes - Uruchom ponownie
freeradius -X
Konfiguracja serwera radius (z materiałów eduroam):
CISCO - wstęp
Wstęp do CISCO na podstawie 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 - 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
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 [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;noneoznacza 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, narobert - 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 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 802.1X i zdefiniowanego w nim EAPOL.
EAPOL korzysta z rozwiązania EAP (EAPOL = EAP over LAN). Protokół 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:
Użycia WPA2 Enterprise na przykładzie sieci eduroam:
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: eapol_test (lub zbuduj, instrukcje niżej) program
eapol_test - Przygotuj plik konfiguracyjny (lub pobierz np. z http://deployingradius.com/scripts/eapol_test/):
- wpa_supplicant.conf
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 ''
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/eapz katalogu konfiguracji FreeRadiusa. - Zmodyfikuj plik tak, by zabronić metod innych niż
ttlsipeap(uwaga: sekcjetls-configimschapv2muszą zostać) - Przetestuj poleceniem
eapol_testdział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
- 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=0ikey_mgmt=IEEE8021Xw pliku konfiguracyjnym - Uwierzytelnij się używając:
wpa_supplicant -D wired -i enp0s8 -c wpa_supplicant.conf [-d]
Przełącznik-D wirednakazuje traktować interfejs jako kablowy (nie bezprzewodowy).
Opcjonalny przełącznik-dwłą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