Tania i bezpieczna sieć bezprzewodowa z 802.1x
- Patryk Królikowski,
- 07.01.2008
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.
#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:
[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ę):