El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

WPA2 con freeradius

| Comments

Ahora con el bun de la WiFi, comienzan las necesidades básicas, como cifrado de red y protección de acceso. Todavía el cubano no sabe la diferencia entre WEP y WPA pero bueno, para el que lea esto, el tutorial va por el camino duro pero correcto.

¿Qué haremos?

Configurar hostapd con freeradius para proveer una WiFi con WPA2

Si no sabes que cosa es WPA2 míralo aquí

Para la ocasión, usaremos ArchLinux y requeriremos los paquetes siguientes hostapd y freeradius. ¿No tengo que decirte como instalarlos verdad? Entonces, supongamos que tienes la WiFi en wlan0.

Vamos a empezar de atrás pa alante, el AP. Como no tenemos un ap profesional muy de pinga, vamos a usar hostapd. A mi la configuración me quedó así:

“/etc/hostapd/hostapd.conf”
1
2
3
4
5
6
7
8
9
10
11
12
13
ssid=APconLinux
interface=wlp2s0b1
driver=nl80211
ieee8021x=1
hw_mode=g
channel=1
wpa=2
wpa_key_mgmt=WPA-EAP
rsn_pairwise=CCMP
auth_algs=1
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=mifortalezaimperial

Ahora localizamos el fichero donde se configura el EAP, en el caso de archlinux, este fichero está en /etc/raddb/mods-enabled/eap ahí localizamos una linea que dice default_eap_type y donde dice md5 y le ponemos peap. A mi me quedó así:

“/etc/raddb/mods-enabled/eap”
1
2
3
4
5
   eap {

   default_eap_type = peap

   # (el resto del fichero)

Esa cláusula está por la línea 27… Bueno ahora vamos a declarar los usaurios en el fichero users el mio está en /etc/raddb/users, ahí le pones al fondo el usuario y el password, a mi me quedó así:

“/etc/raddb/users”
1
2
3
4
  # (la parte de arriba del fichero)

  # el usaurio secretísimo
  usuario Cleartext-Password := "secretisimo"

Ahora declararemos la dirección IP del AP, que en este caso, sería un cliente radius eso está en el fichero clients.conf.

“/etc/raddb/clients.conf”
1
2
3
4
client 127.0.0.1 {
   secret = mifortalezaimperial
   shortname = hostapd
}

Le declaramos que el cliente que se conecte desde la 127.0.0.1 usando como secreto la cadena de texto “mifortalezaimperial” será hostapd.

Bueno, vamos a empezar la conga, instrumento por instrumento. Primero el AP

hostapd /etc/hostapd/hostapd.conf

“hostapd”
1
2
3
4
5
6
Configuration file: /etc/raddb/hostapd.conf
Using interface wlp2s0b1 with hwaddr 4c:ed:de:df:ad:f1 and ssid "APconLinux"
RADIUS: socket[PF_INET6,SOCK_DGRAM]: Address family not supported by protocol
wlan0: RADIUS Authentication server 127.0.0.1:1812
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

Ahora el radius:

raduisd -X

“radiusd”
1
2
3
4
5
Listening on auth address 127.0.0.1 port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 38055
Ready to process requests

Y el toque final, dnsmasq como DHCP

“dnsmasq”
1
2
3
4
ip a a 10.0.0.1/24 dev wlan0

# OJO linea larga
dnsmasq -a 10.0.0.1 -F 10.0.0.2,10.0.0.100 -i wlan0 -K --log-dhcp  -R -d --log-queries --log-dhcp

Te recuerdo, que si android, al conectarse a una WiFi, no recibe ip, considera que hubo error de autenticación…

Al escanear verás algo como esto.

Note como dice que APconLinux, está asegurada con 802.1x y al intentar conectarte, verás algo como esto:

Desliza el menú ese, para que veas lo que está al fondo. Ahí es donde va la burumba. Donde dice identity pones el usuario, donde dice Anonymous Identity, LO DEJAS EN BLANCO y donde dice password pones el precio actual de la libra de papa.

Se quedará un ratico en Authenticating…

Mientras tanto, hostapd mostrará algo como esto

“salida de hostapd”
1
2
3
4
5
6
7
8
wlan0: STA 78:9e:d0:f2:9e:ad IEEE 802.11: authenticated
wlan0: STA 78:9e:d0:f2:9e:ad IEEE 802.11: associated (aid 1)
wlan0: CTRL-EVENT-EAP-STARTED 78:9e:d0:f2:9e:ad
wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
wlan0: STA 78:9e:d0:f2:9e:ad WPA: pairwise key handshake completed (RSN)
wlan0: AP-STA-CONNECTED 78:9e:d0:f2:9e:ad
wlan0: STA 78:9e:d0:f2:9e:ad RADIUS: starting accounting session EFB68C31-00000000
wlan0: STA 78:9e:d0:f2:9e:ad IEEE 802.1X: authenticated - EAP type: 25 (PEAP)

Y radius dirá algo como esto:

“salida de freeradius”
1
2
3
4
5
6
7
8
9
10
11
12
(9) eap: Sending EAP Success (code 3) ID 112 length 4
(9) eap: Freeing handler
(9)     [eap] = ok
(9)   } # authenticate = ok
(9) # Executing section post-auth from file /etc/raddb/sites-enabled/default
(9) Sent Access-Accept Id 9 from 127.0.0.1:1812 to 127.0.0.1:58792 length 0
(9)   MS-MPPE-Recv-Key = 0x486910b6930c3d5beae2e5831a3d15545066fcd8964d4a396d9950f1d2142b59
(9)   MS-MPPE-Send-Key = 0xcfbf7ae337d7bd5c9e747c2a6f5864746b308523d7a4fb261bc1b32a5cdafce2
(9)   EAP-Message = 0x03700004
(9)   Message-Authenticator = 0x00000000000000000000000000000000
(9)   User-Name = "username"
(9) Finished request

La salida de dnsmasq quizás estes aburrido de verla, nada nuevo, le dio la ip, etc… dnsmasq es necesario en este caso para completar la autenticación ya que nuestro hostapd no tiene un dhcp incluído. Más adelante, veremos que radius puede asignar una ip a cada usaurio e incluso se tira contra mysql, pero ahora mismo esto es un experimento para familiarizarnos con radius, así que con eso bastará.

Pasamos a comerciales y próximamente veremos como hace con MySQL, no te prometo nada, solo lo haré si logro vender el producto; ya que aquí somos partidarios de que “la wifi sin contraseña es más fácil” sin pensar en riesgos…

Si este artículo te resultó interesante, considere donar 0.04 BTC: 14iNmkfULf5jggumVh963kUg4UPScEZHgz

Comments