oriolrius.cat

Des del 2000 compartiendo sobre…

Xarxa Wifi Segura: freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)

Reading time: 9 – 15 minutes

ENGLISH VERSION Secure wi-fi Net : freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)

wifi.gif

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:

wpa-eaptls.gif

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:

wpa-radius.jpg

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.

15 thoughts on “Xarxa Wifi Segura: freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)

  1. 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.

  2. 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.

  3. [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 😉

  4. 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…

  5. [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.

  6. Interesante post, tengo el mismo router 🙂 Que programa has usado para dibujar el diagrama de red?

  7. 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

  8. 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?

  9. [12] nano, ho sento… però o t'expliques millor o no tinc ni idea de què m'estàs parlant.

  10. [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!!

  11. rio truly an awesome self-complacent thanks so much for unselfish i volition chatter this capital website every sui generis daylight

Últimas entradas

Resumen 2023

Reading time: 14 – 22 minutes El 2023 comenzó con una sensación de renovación y optimismo. Tras un período marcado por la pandemia, este año se presentó como un lienzo en blanco, lleno de posibilidades y nuevas experiencias. Aunque el

Leer más »
Archivo