Tania i bezpieczna sieć bezprzewodowa z 802.1x

Dłubanie w Radiusie

Po tych nierównych bojach bierzemy się za FreeRADIUS-a. Najpierw jednak będziemy potrzebowali certyfikatu, którego będzie używał nasz Radius (wybraliśmy PEAP). Właśnie do tych operacji potrzebujemy pakietu OpenSSL. Procedurę tworzenia certyfikatów opisaliśmy w ramce "Generowanie certyfikatów" - na s. 68.

Tania i bezpieczna sieć bezprzewodowa z 802.1x

Ekran 5

Mając certyfikaty, zabierzmy się do skonfigurowania trzech elementów serwera Radius. Po pierwsze, należy ustawić zasady działania samego demona radiusd (to w pliku /etc/raddb/radiusd.conf). Po drugie, wskazać metodę PEAP jako tę, z której będziemy chcieli skorzystać (to w /etc/raddb/eap.conf). I wreszcie pozostaje "przedstawienie" serwerowi naszego Access Pointa, z którym będzie musiał współpracować i wymieniać dane (plik /etc/raddb/clients.conf). Na pierwszy ogień idzie sam serwer (radiusd.conf). Zanim poddamy go edycji, musimy zdecydować, który z protokołów uwierzytelniania wybierzemy (np. PAP, CHAP, MSCHAPv2). My wybieramy MSCHAPv2, który pozwoli na uwierzytelnienie w domenie w powiązaniu wspomnianym już PEAP-em. W przypadku konfiguracji na CentOS-ie musimy zmienić tylko dwa parametry - obydwa w sekcji "Microsoft CHAP Authentication". Pierwszy to umożliwienie poprawnej wymiany informacji o domenie i użytkowniku z kontrolerem domeny. Usuwamy więc hasz (#) sprzed linii:

#with_ntdomain_hack = no

i zmieniamy jej wartość na "yes".

Druga zmiana to znowu usunięcie "#" sprzed linii parametryzującej NTLM (linia "ntlm_auth") oraz odpowiednie wypełnienie wszystkich atrybutów. Uwaga - bardzo łatwo o pomyłkę. Oryginalną linię:

#ntlm_auth = "/path/to/ntlm_auth --request-nt-key --username=%{Stripped-User-Name:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"

zastępujemy:

ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=%{mschap:NT-Domain)

--username=%{mschap:User-Name} --challenge=%{mschap:Challenge:-00}

--nt-response=%{mschap:NT-Response:-00}"

Teraz pora na eap.conf. Ponieważ zdecydowaliśmy się na użycie protokołu PEAP, zastąpmy nim domyślny MD5 w linii default_eap_type:

default_eap_type = peap

Teraz robimy małą przerwę na kawę. PEAP korzysta z wygenerowanych przez nas (zgodnie z ramką) certyfikatów. Oprócz tego nawiązywana jest sesja TLS. Aby wynegocjować klucze sesji, potrzebny jest plik zawierający parametry algorytmu Diffie-Hellman. Plik ten możemy wygenerować, korzystając z ukochanego pakietu OpenSSL:

Tania i bezpieczna sieć bezprzewodowa z 802.1x

Ekran 6

[root@radius /]# openssl dhparam -check -text -5 512 -out /etc/raddb/certyfikaty/diffie

Objuczeni całą masą kluczy, wróćmy do konfiguracji eap.conf. Przechodzimy do sekcji EAP-TLS, "odhaszowujemy" linię "tls {" oraz modyfikujemy kolejne wpisy w następujący sposób:

private_key_password = [hasło do klucza prywatnego serwera Radius]

private_key_file = ${raddbdir}/certyfikaty/server_key.pem

certificate_file = ${raddbdir}/certyfikaty/radius_certyfikat.pem

CA_file = ${radbdir}/certyfikaty/cacert.pem

dh_file = ${raddbdir}/certyfikaty/diffie

random_file = /dev/urandom (drugi element konieczny podczas działań wykonywanych podczas sesji TLS).

Nie zapomnijmy o zdjęciu hasza ze znaku zamykającego sekcję "tls" - "}". Na koniec wyszukujemy następujący ciąg i po raz kolejny usuwamy hasz:

peap {

default_eap_type = mschapv2

}

Na serwerze FreeRADIUS do skonfigurowania pozostała jeszcze tylko jedna rzecz. Wskazanie klienta (access pointa), z którym nasz serwer będzie "gadał" (clients.conf). Pamiętajmy, że w przykładzie korzystamy z SSG. Jego sieć bezprzewodowa posiada adresację 192.168.2.0/24, a sama brama dostępowa ma adres 192.168.2.1. Dodajemy więc do pliku następujący wpis (każdy wpisuje swoją adresację):


TOP 200