Radius to serwer autoryzacji i uwierzytelnienia u?ytkowników. Darmow? wersj? jest freeradius. Ma?o kto wie ?e pakiet hostapd ma wbudowan? opcj? bardzo prostego serwera autoryzacji EAP, który mo?e s?u?y? innym klientom radius autoryzowa? si?. Mo?na si? zastanowi? po co ta funkcjonalno?? skoro do tych funkcji s?u?y bardzo dobry i wspieraj?cy bardzo wiele funkcji freeredius. Mo?na wi?c sobie wyobrazi?, i? nie ka?dy mo?e chcie? uruchomi? u siebie na routerze serwer radius, ba mo?e na to nie mie? zasobów lub ich po prostu zabrakn??. Wiadomo proste routery wspieraj?ce openwrt maj? ma?o RAM oraz ma?? pojemno?? FLASH. Ka?de wolne miejsce jest dla nas bezcenne. Instaluj?c pe?ny pakiet freeradius nie do?? ?e uszczuplamy i tak sk?pe zasoby flash ale i zabieramy troszk? ram i cykli procesora. Je?li mamy router na którym b?dzie pracowa? pakiet hostapd (wpad) wtedy prawie nic nie tracimy - autoryzacj? zajmie si? demon który i tak ju? pracuje w systemie. Taki jeden router mo?e by? centrum autoryzacji dla innych routerów po protokole radius EAP. Wspiera EAP-PEAP, EAP-TLS,EAP-TTLS oraz wiele innych protoko?ów - wszystkie wymienione s? na oficjalnej stronie hostapd.
Ca?a konfiguracja testowana by?a na routerze WR1043ND w dystrybucji OpenWrt Backfire 10.03.x
Instalacja:
W domy?lnej kompilacji i konfiguracji opcja serwera radius EAP jest wy??czona. S? dwa sposoby w??czenia wsparcia w swoim routerze.
1. Pobranie i zainstalowanie pakietu wpad-full z mojej lokalizacji:
opkg install http://rpc.one.pl/pliki/openwrt/backfire/10.03.x/atheros/wpad_20100418-1-rpc_ar71xx.ipk
2. W?asnor?czna kompilacja pakietu wpad-full, która wygl?da nast?puj?co:
a. W??czamy r?cznie opcj? w pliku package/hostapd/files/hostapd-full.config
CONFIG_RADIUS_SERVER=y
b. Podmieniamy plik w katalogu package/hostapd/files/hostapd.sh na plik przygotowany przeze mnie w moim repozytorium
zmieniony hostapd.sh do pobrania z tej lokalizacji.
c.Kompilujemy pakiet albo dystrybucj? wedle opisu ze strony http://openwrt.pl
Teraz mamy ju? mo?liwo?? skonfigurowania sobie odpowiednich opcji poprzez UCI lub w pliku /etc/config/wireless
Konfiguracja:
Z racji tego, i? hostapd (wpad) konfiguruje si? z /etc/config/wireless opcje konfiguracyjne umie?ci?em w tym pliku. Konfiguracja wygl?da nast?puj?co:
root@OpenWrt:~# cat /etc/config/wireless
config 'wifi-device' 'radio0'
option 'type' 'mac80211'
option 'channel' '1'
option 'macaddr' '00:23:cd:36:b4:ba'
option 'hwmode' '11ng'
option 'htmode' 'HT20'
option 'ht_capab' 'SHORT-GI-40 DSSS_CCK-40'
option 'disabled' '0'
option 'country' 'PL'
config 'wifi-iface'
option 'device' 'radio0'
option 'network' 'lan'
option 'ssid' 'eaps'
option 'mode' 'ap'
option 'encryption' 'wpa2'
option 'eap_server' '1' # 1-enable server radius, 0 lub brak disable
option 'eap_user_file' '/etc/config/hostapd.eap_user' # plik w którym definiujemy uprawnienia
option 'ca_cert' '/etc/config/certs/cacert.pem' # plik z certyfikatem centrum certyfikacji CA
option 'server_cert' '/etc/config/certs/newcert.pem' # certyfikat serwera hostapd
option 'priv_key' '/etc/config/certs/newkey.p12' # klucz prywatny serwera w formacie PKCS12 .p12
option 'pric_key_pwd' 'haslo' # has?o do klucza prywatnego .p12
option 'check_crl' '0' # czy sprawdza? CRL
option 'dh_file' '/etc/config/certs/dh.pem' # plik protoko?u Diffi-Hellman
option 'server_port' '1812' # port na którym nas?uchuje hostapd jako serwer radius
option 'server_clients' '/etc/config/hostapd.radius_clients' # plik w którym
# przypisujemy has?a do hostów (adresów ip)
option 'server_ipv6' '0' # wpsarcie ipv6 1-enable, 0 lub brak -disable
Wi?kszo?? opcji konfigurujemy wedle opisu : Autoryzacja EAP-TLS,TTLS,PEAP do sieci wifi bez radiusa na podstawie hostapd w OpenWrt z racji tego, i? funkcja serwera radius dzia?a jednocze?nie z funkcj? serwera autoryzacji EAP-TLS,TTLS,PEAP.
Oczywi?cie mo?na to przedstawi? za pomoc? UCI:
root@OpenWrt:~# uci show wireless.@wifi-iface[0]
wireless.@wifi-iface[0]=wifi-iface
wireless.@wifi-iface[0].device=radio0
wireless.@wifi-iface[0].network=lan
wireless.@wifi-iface[0].ssid=eaps
wireless.@wifi-iface[0].mode=ap
wireless.@wifi-iface[0].encryption=wpa2
wireless.@wifi-iface[0].priv_key_pwd=haslo
wireless.@wifi-iface[0].eap_server=1
wireless.@wifi-iface[0].eap_user_file=/etc/config/hostapd.eap_user
wireless.@wifi-iface[0].ca_cert=/etc/config/certs/cacert.pem
wireless.@wifi-iface[0].server_cert=/etc/config/certs/newcert.pem
wireless.@wifi-iface[0].priv_key=/etc/config/certs/newkey.p12
wireless.@wifi-iface[0].check_crl=0
wireless.@wifi-iface[0].dh_file=/etc/config/certs/dh.pem
wireless.@wifi-iface[0].server_port=1812
wireless.@wifi-iface[0].server_clients=/etc/config/hostapd.radius_clients
wireless.@wifi-iface[0].server_ipv6=0
Nale?y utworzy? katalog na certyfikat serwera hostapd:
mkdir /etc/config/certs
w katalogu tym nale?y umie?ci? pliki certyfikatu czyli:
cacert.pem
newcert.pem
newkey.p12
dh.pem
Generowanie plików opisa?em w artykule: Generowanie certyfikatów openssl x509
Tworzymy plik /etc/config/hostapd.eap_user :
touch /etc/config/hostapd.eap_user
o zawarto?ci:
#phase 1
* PEAP,TTLS,TLS
#phase 2
"username" MSCHAPV2 "haslo_usera" [2]
#"CommonName" TLS
#"username2" PEAP [ver=0]
#"username2" MSCHAPV2 "haslo_usera" [2]
#"username3" TTLS
#"username3" MSCHAPV2 "haslo_usera" [2]
#"username4" TTLS
#"username4" MD5 "haslo_usera" [2]
Mo?e po krótce opisz? konfiguracj? w/w pliku:
Definicja pliku dzieli si? na dwie sekcje. Pierwsza definiuje po jakim protokole odb?dzie si? logowanie #phase1, druga sekcja definiuje metod? autoryzacji na routerze #phase2.
* PEAP,TTLS,TLS
Tutaj mówimy, ?e autoryzujemy wszystkich u?ytkowników na podstawie protoko?u EAP-PEAP lub EAP-TTLS, lub EAP-TLS
"username" MSCHAPV2 "haslo_usera" [2]
Tutaj mówimy, i? u?ytkownik "username" mo?e si? zalogowa? je?li poda has?o i metod? autoryzacji MSCHAPV2
"CommonName" TLS
Tutaj wystarczy w zasadzie tylko ten wiersz. W polu CommonName wpisujemy to co klient ma w certyfikacie prywatnym zdefiniowane w polu CommonName(CN). Np. " username@domena.comAdres poczty elektronicznej jest chroniony przed robotami spamuj?cymi. W przegl?darce musi by? w??czona obs?uga JavaScript, ?eby go zobaczy?. " lub "Imie Nazwisko". Do logowania wystarczy tylko certyfikat.
#"username2" PEAP [ver=0]
#"username2" MSCHAPV2 "haslo_usera" [2]
Definiujemy, i? "username2" mo?e zalogowa? si? do systemu po protokole EAP za pomoc? metody autoryzacji PEAP-MSCHAPV2. W Windows XP mo?e by? konieczno?? skorzystania z PEAP w wersji [ver=0]
Jak wida? kombinacji opcji w pliku jest wiele. Plik analizowany jest od góry do do?u. Czyli analiza jest przerywana po doj?ciu do pierwszej pasuj?cej warto?ci.
Tworzymy plik /etc/config/hostapd.radius_clients który jest odpowiednikiem pliku clients.conf w pakiecie freeradius:
touch /etc/config/hostapd.radius_clients
o zawarto?ci:
192.168.1.20 tajne_haslo # adres ip i has?o do autoryzacji klienata radius na serwerze
192.168.1.33 tajne_haslo
192.168.1.0/24 tajne_haslo
0.0.0.0/0 tajne_haslo
Jak wida? jest bardzo ma?y wybór opcji ale hostapd to prosty serwer radiusa ale zupe?nie wystarczaj?cy do prostych celów.
Konfiguracja klientów OpenWrt radius:
Je?li konfigurujemy OpenWrt jako clienta to wystarcz? opcje (Przyk?ad Fon2100 Atheros):
root@OpenWrt:~# cat /etc/config/wireless
config 'wifi-device' 'wifi0'
option 'type' 'atheros'
option 'disabled' '0'
option 'channel' '1'
option 'diversity' '0'
option 'txantenna' '1'
option 'rxantenna' '1'
option 'mode' '11g'
config 'wifi-iface'
option 'device' 'wifi0'
option 'network' 'lan'
option 'mode' 'ap'
option 'ssid' 'eap_fon'
option 'server' '192.168.1.1'
option 'port' '1812'
option 'key' 'haslo'
option 'encryption' 'wpa2'
Je?li konfigurujemy innego klienta radius to z regu?y podaje si? adres IP i port serwera radius w tym wypadku naszego hostapd.
Konfiguracja klienta radius w routerze TL-WR740N:
Jak wida? podajemy tylko adres IP oraz port serwera hostapd. Has?o jest zdefiniowane w pliku hostapd.radius_clients na serwerze hostapd.
Wykorzystano nast?puj?ce opcje pakietu hostapd.conf:
eap_server
eap_user_file
ca_cert
server_cert
private_key
private_key_passwd
check_crl
dh_file
radius_server_auth_port
radius_server_clients
radius_server_ipv6
Wszystkie zmienione pliki znajdziesz w moim repozytorium.
Najaktualniejsz? wersj? tego dokumentu znajdziesz zawsze pod adresem http://rpc.one.pl