ENGLISH VERSION Secure wi-fi Net : freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)
<div class="right"></div>
Havia de montar una xarxa Wi-fi amb un nivell de seguretat com deu mana, no com el que s’esta montant actualment amb WEP i tonteries. Així doncs vaig montar un servidor FreeRadius per treballar amb un Linksys WRT54G. Bàsicament la idea va ser instal·lar un HyperWRT al WRT54G (consell del Pof) després el vaig posar que treballés amb WPA-Radius contra el FireWall on vaig instal·lar el FreeRadius. Aquest pas no és necessari si no voleu, ja que el firmware de serie del WRT54G ja suporta WPA-radius.
Esquema de la xarxa que volem montar, cal que ens fixem només en la part del firewall i de l’AP, la resta es suposa i no és important:
<div style="text-align: center;"></div>
Per configurar tot el tema l’únic que vaig fer és seguir les instruccions del 802.1x HOWTO. De totes formes un faig una petita guia a continuació:
- Insatl·lem el freeradius al firewall: emerge freeradius
- Configurem el freeradius per treballar amb EAP/TLS
- Generem els certificats
- Comprobem que el freeRadius funciona correctament
- Configurem l’AP (Linksys WRT54G)
- Configurem els clients Windows XP amb SP2
- Configurem els clients amb Linux
Els fitxers de configuració que jo he usat en el freeRadius són els següents:
- /etc/raddb/radiusd.conf fitxer de configuració general del radius, definim sistemes d’auth i d’altres a usar. Hi ha moltes parts del fitxer que no he usat les he deixat tal i com venien. Agraeixo l’ajuda el Pof el haver-me deixar mirar els seus fitxers per crear els meus.
- /etc/raddb/clients.conf IP’s i xarxes de sistemes que poden ser clients del radius, en el nostre cas l’AP (172.16.1.253).
Malgrat la potència del Radius dona per molt més del que he usat en aquest cas, la documentació i el temps per experimentar no donen per massa més. Però si algú s’anima a refinar el que he fet i m’ho comunica estaré molt agraït.
Pel que fa a la generació dels certificats, obviament la idea és que els emeti una entitat certificadora, però com que això només passa a les ‘pelis’ i a les empreses amb capital, cas que no seria el que ens ocupa, em sembla. Agafarem el nostre OpenSSL i l’usarem per fer tota la pesca. Si no el teniu, ja ho sabeu: emerge openssl. A més com que segur que el nostre fort no són les PKI i històries semblants, el millor és aprendre a usar els scripts que venen amb el freeRadius i el OpenSSL, ja que amb molt poques modificacions podrem crear els certificats que ens fan falta per treballar de forma segura amb el nostre wi-fi.
Com deia usarem els scripts del freeRadius i l’OpenSSL per generar els nostres certificats, així doncs primer de tot anem al codi font del freeRadius i veurem que hi ha un directori que es diu ‘scripts’ allà dins trobarem: CA.certs, certs.sh i xpextensions. Us recomano que verifiqueu les rutes de les ordres que contenen els scripts ja que almenys a mi no em funcionaven per culpa de les rutes que usaben els scripts. Si us fa mandra mirar el codi us adjunto un petit ‘paquet’ amb els fitxers que jo m’he modificat: certs.tar.gz aquests arxius estan modificats per treballar des del propi directori on ens trobem, us recomano crear un directori de treball nou i buit. Un cop tenim localitzats els fitxers, heu de tenir en el vostre PATH el CA.pl que és un script que porta el perl de serie, però que no acostuma a copiar al PATH, jo l’he posat a /usr/bin i després de generar els certificats l’he borrat. També us l’he posat al ‘paquet’, per si no el voleu buscar.
Un cop tenim tot això en un directori apunt per treballar. Podeu editar el CA.certs i posar les vostres dades a les variables de l’inici del fitxer. No cal que modifiqueu res més que les variables la resta ja es farà sola. Sobre tot no oblideu el password que poseu ja que a l’hora de configurar el servidor i els clients ens farà falta.
Per generar els certificats ara l’únic que hem de fer és posar:
# ./certs.sh
i la sortida serà algo així:
Generating DH parameters, 512 bit long safe prime, generator 2 This is going to take a long time ........................+......................................................+...........+................................+..........+.......................+...+...........................................+...............................+............+..............+.................................+.......+..+.................................................+....+....................+.........................................+..+......+................................................+........+.....+...............+...........+.+..................+...........+..................................................+............+......+.+.................+.+.........................+....+................+....+....+.....+.........................+............+......+.+..........................................................+..+...........................................+.........................+.............................+..................................................+...+...++*++*++*++*++*++* See the 'certs' directory for the certificates. The 'certs' directory should be copied to .../etc/raddb/ All passwords have been set to 'whatever'
No feu cas dels missatges, només fixeu-vos en que no hagi donat cap error. Ara tindreu un nou directori que penja del directori on us trobeu, aquest directori es diu certs i dins té tots els certificats que us fan falta pel client i el servidor. Us recomano que poseu el contingut del directori ./certs a /etc/raddb/certs així haureu de tocar poca cosa dels fitxers de configuració que us he passat.
El més important ara mateix és repassar els fitxers de configuració que us he posat més amunt i comprobar que el servidor radius es llença sense problemes, cosa que no sempre passa a la primera. Pel que fa al radiusd.conf no crec que tingueu gaires problemes només heu de verificar que les rutes dels certificats apunten als fitxers que tenen el mateix nom que els fitxers que heu generat i sobretot fixeu-vos en el paràmetre: private_key_password = whatever. Cal que canvieu el ‘whatever’ pel vostre password, el que heu posat a la variable PASSWORD del fitxer CA.certs. Si no ho feu, quan llenceu el dimoni, per exemple amb un radiusd -X, per comprobar si es llença bé us demanarà la clau que heu usat per xifrar simetricament els fitxers amb la clau privada, o sigui, el password del que estem parlant. Si això no ho eviteu quan tireu el dimoni amb /etc/init.d/radiusd start donarà un error ja que no podrà usar les claus per accedir als vostres certificats.
Si feu aquest parell de coses bé: verificar les rutes i posar el password correctament. El que toca fer és el que ja apuntava fa unes línies: radiusd -X després d’executar la comanda sortiràn una serie de històrics que ens informaran sobre els possibles errors i si el procés es queda en esepera i amb una linia del tipus:
Ready to process requests.
Senyal que ho heu fet tot bé, ara ja podeu fer un control+c i llençar el dimoni de gentoo (/etc/init.d/radiusd start) o bé, no fer res i configurar un client i així veurem per pantalla els logs que es van generan i podrem comprobar si la cosa rutlla o no rutlla. Si voleu verificar els històrics mentre teniu el servei funcionant i no el mode interactiu, podeu trobar els logs a /var/log/radius/ concretament trobareu els logs de quan s’ha llençat el dimoni a startup.log i els logs de les connexions a radius.log. Si voleu veure de forma interactiva el que li passa al dimoni podeu fer: tail -f /var/log/raddb/radius.log
Abans de passar a configurar els usuaris cal configurar l’AP que serà el client del nostre servei de Radius. La configuració és realment molt senzilla, podeu configurar l’AP tal i com volgueu, concretament jo l’he configurat com un router entre dues xarxes la d’usuaris on s’assignen les IPs per DHCP (192.168.2.0/24) i la que ell (l’AP) anomena Internet, la 172.16.1.253 segons el gràfic. A mi m’agrada dir-li el camí que portarà a internet, o sigui, un cable que va contra el firewall i a través del qual es comunicarà amb el freeRadius. Per exemple, jo acostumo a posar aquesta pota del firewall amb la IP 172.16.1.254 i la pota ‘Internet’ del WRT54G amb la IP 172.16.1.253. Per tant, cal que en el fitxer de configuració /etc/raddb/clients.conf aquesta IP tingui permisos per fer peticions al Radius, per exemple, com el fitxer que us he facilitat:
client 172.16.1.253/32 { secret = SharedSecret99 shortname = localhost }
Fixeu-vos que aquí apareix un altre password, aquesta ‘pre-shared key’ l’usen el WPA-client (WRT54G) i el servidor Radius (freeRadius) per xifrar les seves comunicacions. Així doncs a l’AP li haurem de facilitar aquesta clau perquè pugui parlar amb el nostre servidor Radius. A continuació adjunto una captura de pantalla de la part de la configuració de l’AP on s’ha d’especificar que usarem un servidor Radius:
<div class="imatge" style="text-align: center;"></div>
Per configurar un client de Windows, el primer que heu de tenir en compte és que la targeta WIFI que useu té un firmware suficientment nou com per suportar WPA amb EAP/TLS. Si no ho sabeu intenteu aplicar el manual que adjunto de com configurar un client de WXP i si no trobeu les opcions que assenyalo segurament la vostre targeta no ho suporta. També us aviso que jo només ho sé configurar amb WXP i SP2, així que qualsevol software propietari que porti la vostre targeta wi-fi doncs ni idea de com va, i la resta de version de win tampoc ni idea, no ho he pogut provar ni en tinc ganes de fer-ho.
Us he fet un PDF amb un munt de captures de pantalla perquè sapigueu configurar els clients de WXP. Cal que penseu que durant el document s’instal·len dos certificats el root.der i el root.p12. Aquests dos fitxers estan al directori /etc/raddb/certs, recordeu que els hem generat fa una estona. Així doncs us recomano copiar-los en un pen-drive i no perdre’ls de vista ja que ens faran falta per configurar tots els clients.
Com instal·lar els clients EAP/TLS en Windows XP SP2 en format PDF. Aquest document esta basat en: HOWTO: EAP//TLS Setup for FreeRADIIUS and Wiindows XP Supplliicant també en format PDF.
Pel que fa a la configuració de clients Linux doncs de moment no ho he pogut provar, ja que la meva targeta wi-fi PCMCIA té un firmware massa antic, en els propers dies espero poder configurar la targeta interna del portatil que l’he configurar amb ndiswrapper o linuxant amb els drivers de linux, però ambdos sistemes em permeten usar l’wap_suplicant que és el software necessari per autenticar-me amb WPA/TLS des del Linux, quan tingui això funcionant us aviso. Tranquils que no penso currar gaires dies en Windows a la feina que em poso nerviós de veure com peta tot.
Us adjunto algunes referencies que he usat per configurar el tema:
- 8021X-HOWTO – This document describes the software and procedures to set up and use IEEE 802.1X Port-Based Network Access Control using Xsupplicant as Supplicant with FreeRADIUS as a back-end Authentication Server.
- FreeRADIUS/WinXP Authentication Setup – This post describes how to build a FreeRADIUS server for TLS and PEAP authentication, and how to configure the Windows XP clients (supplicants). The server is configured for a home (or test) network.
- HOWTO on EAP/TLS authentication between FreeRADIUS and XSupplicant – This document describes how to setup strong cryptographic authentication between XSupplicant and FreeRADIUS. This is accomplished using part of 802.1x authentication for wireless network. In particular it uses EAP/TLS extension, and TLS handshake.
Finalment perdoneu el rollasso que he fotut en aquest post, sento no haver-ho pogut escursar més però només disitjo que això ajudi al màxim número de gent possible. Gràcies per la paciència.
14 thoughts on “Xarxa Wifi Segura: freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)”
Molt be mussol, felicitats per el joutú… només un petit detall, està mal l'enllaç al clients.conf, mira de corregir-ho si pots.
Per cert, lo únic que et falta, la configuració del wpa_supplicant es fàcil, això va al fitxer de configuració:
network={
ssid="example"
proto=WPA
key_mgmt=WPA-EAP
pairwise=TKIP
group=TKIP
eap=TLS
identity="user@example.com"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
}
i aixi llances el client:
wpa_supplicant -B -i<ifname> -c<config file> [-D<driver>]
En el meu cas, ifname és ath0, i driver madwifi… això variarà segons la tarja que tinguem i el driver que fem servir. Amb wpa_supplicant -h veurem amb support per a quins drivers ha estat compilat.
Ja he corregit el link de clients.conf, sorry per l'error però quan fots un rollo d'aquests per molt que t'hi fixis sempre et deixes coses. El problema que tinc amb lo del wpa_supplicant és que encara no he provat de configurar la targeta wifi interna del portàtil. Ja que quan ho vaig fer fa molt de temps no me'n vaig sortir, a veure si ara que han sortit unes quantes versions més noves ha millorat el tema.
[2] Pues ja ens explicaràs que tal ha evolucionat el ndiswrapper… per cert, al final et vas comprar la versió comercial? Si es així no estaría mal que fessis un review dels teus 😉
De moment no m'he comprat ni he provat res per això encara no he fet cap review, però quan ho hagi provat i em funcioni alguna cosa ho comento…
[4]
Ja em funciona!!! m'he instal·lat el ndiswrapper, és important pensar que el kernel no ha de suportar 4STACKS ni les USE flags de la gentoo han de tenir el tag 4stacks. Concretament m'he instal·lat la versió 1.0-rc4 i després he copiat els fitxers del driver de windows de la meva: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller, concretament el bcmwl5.inf i el bcmwl5.sys a /etc/ndiswrapper i he comprobat amb el:
# ndiswrapper -l
Installed ndis drivers:
bcmwl5 driver present, hardware present
Si no esta carregat el podem carregar amb:
# ndiswrapper -i /etc/ndiswrapper/bcmwl5.inf
Després d'això hem de carregar el mòdul del kernel:
# modprobe ndiswrapper
Podem comprobar al /var/log/messages o amb un dmesg que s'ha carregat bé:
ndiswrapper version 1.0rc4 loaded (preempt=yes,smp=no)
ndiswrapper: driver bcmwl5 (Broadcom,10/28/2003, 3.40.25.3) added
ACPI: PCI interrupt 0000:02:04.0[A] -> GSI 5 (level, low) -> IRQ 5
ndiswrapper: using irq 5
wlan0: ndiswrapper ethernet device 00:90:96:a3:65:ec using driver bcmwl5
wlan0: encryption modes supported: WEP, WPA with TKIP, WPA with AES/CCMP
Ara ja podem comprobar que la targeta wireless s'ha carregat bé:
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11g ESSID:"druvs"
Mode:Managed Frequency:2.442 GHz Access Point: 00:12:17:B8:2E:12
Bit Rate:54 Mb/s Tx-Power:25 dBm
RTS thr:2347 B Fragment thr:2346 B
Encryption key:41ED-EE53-EE7C-84BF-005D-A8F7-C10F-0CE0-9E7D-A17F-A5FD-2ECD-7FF3-6A4C-4E73-BDC5
Power Management:off
Link Quality:95/100 Signal level:-54 dBm Noise level:-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:1609 Invalid misc:6740 Missed beacon:0
i podem configurar el wpa_supplicant tal i com indica el pof, concretament la comanda per llençar el wpa_supplicant que he usat és aquesta:
wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dndiswrapper
i si voleu comprobar si funciona correctament la negociació dels certificats:
wpa_supplicant -dd -iwlan0 -c/etc/wpa_supplicant.conf -Dndiswrapper
Ara he de marxar, corrent a japonès que vaig tard però espero tenir temps els propers dies per donar més detalls de tot això a l'article.
Interesante post, tengo el mismo router 🙂 Que programa has usado para dibujar el diagrama de red?
He usado el Viso 2003
He trobat una web d'un francès que parla d'aquest article, lo ben parti del seu post és que explica com configurar un client d'WPA en MacOSX que l'altre dia ho havia de fer i no sabia com es feia, aquí teniu la solució:
How to get freeradius, WRT54G and a OS X client working with WPA Enterprise
Hola Oriol:
Espero que t'enrecordis de mi. Soc l'Albert de la EUPMT i ara estic a NEWI fent
el projecte final de carrera del qual es tracta del seguent:
Seguretat de les xarxes wireless: metodes d'autenticacio i tecniques
d'encriptacio.
He dissenyat una xarxa en la que tin una xarxa Wifi i EL AP esta conectat amb
un router i aquest a traves de una VPN esta conectat a un altre router el qual
es gateway d'un servidor WEB. Es a dir es algu aixi : WLAN-VPN-LANB on a LANB
tinc el servidor Web. Vull autenticar utilitzant un portal captiu a tots els
usuaris que vulguin sortir de la WLAN i vulguin visitar el servidor Web que hi
ha a LANB. Vull que tots s'autentiquin abans de sortir de la WLAN.
M;he estat informant i pel que se, i jo vull tinc varies maneres:
– Usar portal captiu+ servidor freeRADIUS (em falta alguna cosa mes?)?
Pero tot i aixo tinc dubtes, jo el que vull evidentment es que l'encriptacio
entre el AP i els usuaris sigui WPA per exemple (podria ser WEP tambe??) i per
altra banda, quan els usuaris de la WLAN obrin el seu navegador i vagin al
servidor web de la LANB, doncs se'ls aparegui una plana web preguntant per el
login i el password. (vaja un portal captiu). Utilitzare com a AP el meu
linksys WRT54G.
– Puc instalar freeRADIUS+ portal captiu Chillispot en el meu linksys WRT54G?
– un portal captiu per defecte implementa un servidor Web apache?
– Vaja un dels sistemes famosos d'encripotacio es 802.1X/EAP. Client-NAS-
Servidor d'autenticacio.
– En algunes planes web m'he inormat del NoCatAuth pero tinc el dubte de:
Aquest implementa portal captiu+apache+servidor d'autenticacio. en altres
paraules si al meu AP instalo NoCatAuth, no caldre que instali freeRADIUS?
– Altre de les coses que volia dir-te es que en el meu projecte una vegada
tingui la xarxa dissenyada i tot i funcioni, es tracta de buscar i explotar
vulnerabilitas, ja sigui en la VPN, en el freeRADIUS, en el NoCatAuth, es a dir
provocar atacs, explotar vulnerabilitats. T'envio l'esquema de la xarxa.
– Tinc un portatil i un AP i Internet. Amb aixo puc provar de instalar un portal
captiu (per exemple chillispot o NoCatauth) amb servidor d'autenticacio ( i el que falti) en el
AP Linksys WRT54G?
Gracies per respondre'm Oriol, molt amable
cordialment
albert angles
Sisplau, les respostes envime-les al email: sotrik15hotmail.com , gracies
quin tio més pesat!
ALBERT: STFW
Po zi!
jajaja…
Tinc problemes es aquesta linia de wifi angles local que tinc que fer?
a vegades em surt el recuadre de conexio demanant el nick i la contransenya, pero de vegades no em surt i tinc que restaurar el windows xp.
com puc solucionar-lo?
[12] nano, ho sento… però o t'expliques millor o no tinc ni idea de què m'estàs parlant.
[12] hola nhoa
ets d'angles (el poble)si 0 n0?
es normal que et falli la auntentificació ja que la xarxa d'Angles falla sovint.
potser per diferentes causes
1ª el teu punt d'acces falla apagal i torna començar
2ª el servidor de la xarxa falla truca a l'ajuntament
3ª el teu pc esta ple de espias i virus??
be nhoa soc en Jordi espero que llegueixis aixo!!
Comments are closed.