+ All Categories
Home > Documents > Mini HOW-To Free Radius en Debian (WPA)

Mini HOW-To Free Radius en Debian (WPA)

Date post: 03-Jul-2015
Category:
Upload: cesar-alexander-moraga-galdames
View: 657 times
Download: 1 times
Share this document with a friend
Popular Tags:
54
Compartir Informar sobre mal uso Siguiente blog» Crear un blog Acceder lunes, mayo 07, 2007 Mini HOW-TO Freeradius en Debian (WPA) Hola a todos, este será el primer post dedicado a implementar "algo informático". Basta de tanta música y post llenos de gilipolleces (como he acostumbrado a hacer hasta el momento). Por fín haré algo de provecho y de ayuda a la comunidad. Mini HOW-TO Freeradius en Debian (WPA). Contenido: 1.- Preámbulo. 2.- Sistema y requerimientos. 3.- Compilando Freeradius desde las fuentes. 4.- Creación e instalación de certificados. 5.- Configurando Freeradius. 6.- Configurando el AP (Punto de Acceso). 7.- Configurando clientes. 8.- Conclusiones. ------------------------------------------------------------------------------------ ------------- 1.- Preámbulo. A estas alturas de la vida, con la Web 2.0 en pleno auge, las redes wifi son cada vez más frecuentes y con ellas el intento de hackeo. Normalmente un usuario ADSL con router wifi suele configurar su red con seguridad habilitada con clave WEP (Wired Equivalent Privacy). Esto consiste en crear una clave cifrada de entre 64 y 128 bits, esto supone una manera poco útil de proteger tu red ya que ha sido sobradamente demostrado la facilidad con la que se puede "reventar" dicha clave con poco esfuerzo (incluso el FBI ha demostrado que en tan sólo 3 minutos y con herramientas al alcance de todos se puede descifrar la clave WEP). Por ello surgió WPA (Wi-Fi Protected Access), un sistema mucho más robusto y seguro. Este mini HOW-TO intentará explicar como montar tu propio sistema WPA para proteger tu red wifi. 2.- Sistema y requerimientos. Esta obra está bajo una licencia de Creative Commons. Ahora mismo hay debianitas frikis EMPTY YOUR COMPUTER. BE WINDOWSLESS, SHAPELESS. LIKE LINUX. YOU PUT LINUX INTO A PC AND IT BECOMES THE PC. YOU PUT IN A LAPTOP, IT BECOMES THE LAPTOP. LINUX CAN FLOW, OR IT CAN CRASH. BE LINUX, MY FRIEND! 29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi… …blogspot.com/…/mini-how-to-freeradi… 1/54
Transcript
Page 1: Mini HOW-To Free Radius en Debian (WPA)

Compartir Informar sobre mal uso Siguiente blog» Crear un blog Acceder

lunes, mayo 07, 2007

Mini HOW-TO Freeradius en Debian (WPA)

Hola a todos, este será el primer post dedicado a implementar "algo

informático". Basta de tanta música y post llenos de gilipolleces (como

he acostumbrado a hacer hasta el momento). Por fín haré algo de

provecho y de ayuda a la comunidad.

Mini HOW-TO Freeradius en Debian (WPA).

Contenido:

1.- Preámbulo.

2.- Sistema y requerimientos.

3.- Compilando Freeradius desde las fuentes.

4.- Creación e instalación de certificados.

5.- Configurando Freeradius.

6.- Configurando el AP (Punto de Acceso).

7.- Configurando clientes.

8.- Conclusiones.

------------------------------------------------------------------------------------

-------------

1.- Preámbulo.

A estas alturas de la vida, con la Web 2.0 en pleno auge, las redes wifi

son cada vez más frecuentes y con ellas el intento de hackeo.

Normalmente un usuario ADSL con router wifi suele configurar su red

con seguridad habilitada con clave WEP (Wired Equivalent Privacy). Esto

consiste en crear una clave cifrada de entre 64 y 128 bits, esto supone

una manera poco útil de proteger tu red ya que ha sido sobradamente

demostrado la facilidad con la que se puede "reventar" dicha clave con

poco esfuerzo (incluso el FBI ha demostrado que en tan sólo 3 minutos y

con herramientas al alcance de todos se puede descifrar la clave WEP).

Por ello surgió WPA (Wi-Fi Protected Access), un sistema mucho más

robusto y seguro. Este mini HOW-TO intentará explicar como montar tu

propio sistema WPA para proteger tu red wifi.

2.- Sistema y requerimientos.

Esta obra está bajo una licencia deCreative Commons.

Ahora mismo hay

debianitas frikis

EMPTY YOUR COMPUTER. BE WINDOWSLESS, SHAPELESS. LIKE LINUX. YOU PUT LINUX INTO A PCAND IT BECOMES THE PC. YOU PUT IN A LAPTOP, IT BECOMES THE LAPTOP. LINUX CAN FLOW, OR ITCAN CRASH. BE LINUX, MY FRIEND!

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 1/54

Page 2: Mini HOW-To Free Radius en Debian (WPA)

Para montar el servidor con Freeradius yo he usado Debian etch (cómo

no?!). Es un Athlon XP 64 bits con 80 gb de disco. La implementación de

Freeradius se puede llevar a cabo en todas las distribuciones Linux, aquí

sólo me centraré en instalarlo y configurarlo en Debian, con lo que es

posible que algunos comandos cambien en tu distribución, así como la

localización de mucho archivos.

Como siempre que uses un Linux no necesitarás una máquina muy

potente para implementar una gran cantidad de servicios (no como en

esos Güindoces que necesitan ordenadores de la NASA para soportar un

simple IIS ;-) )

3.- Compilando Freeradius desde las fuentes.

Si aún estás leyendo es porque te interesa el tema y quieres montar tu

porpio servidor, si no mejor no sigas leyendo ya que a partir de aquí

viene lo "técnico".

Existen dos maneras de instalar Freeradius en tu sistema Debian:

1.- Desde los repositorios oficiales:

apt-get install freeradius

Aunque esta forma no es la más indicada ya que por un problema con la

licencia de OpenSSL el binario oficial de Debian no incluye soporte para

SSL.

2.- Desde las fuentes (RECOMENDADO):

Esta es la manera más indicada para instalar Freeradius (esta es la

manera en la que yo lo he instalado). Para ello debes seguir estos

pasos:

a) Necesitas instalar dpkg-dev, para ello:

apt-get install dpkg-dev

b) Descarga las fuentes desde la versión 1.1.5 (versión estable en el

momento de escribir este mini HOW-TO). Freeradius

c) Una vez descargado:

$ tar zxf freeradius-1.1.5.tar.gz

$ cd freeradius-1.1.5

$ fakeroot dpkg-buildpackage -b -uc

$ sudo dpkg -i ../freeradius_1.1.5-0_i386.deb

Nota: Si estás como root no necesitarás hacer un fakeroot para compilar

e instalar.

Nota II: Muy importante, antes de compilar y generar el binario debes

revisar el fichero rules que se encuentra en el directorio debian dentro

del directorio donde has descomprimido las fuentes de freeradius. Una

vez lo edites (por ejemplo: vi rules) debes comentar la siguiente linea:

buildssl = --with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` --with-

rlm_sql_postgresql_include_dir=`pg_config --includedir` ya que nosotros

no queremos soporte para PostgreSQL.

4.- Creación e instalación de certificados.

Una vez tenemos instalado Freeradius en nuestra máquina Debian toca

crear los certificados tanto de servidor como de cliente. Para facilitar

este proceso usaremos los scripts de Raymond McKay's HOWTO. Estos

scripts se pueden copiar y pegar tal cual, con los nombres que se

proponen. Se debe tener en cuenta que algunas variables se deben

modificar para adaptarlas a tu sistema.

Primero creamos el script para generar el certificado raíz:

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 2/54

Page 3: Mini HOW-To Free Radius en Debian (WPA)

CA.root

#En negrita las variables que se tienen que especificar.

# CAPL. Es el ejecutable de perl CA.pl que en Debian normalmente lo

deberías encontrar en: /usr/lib/ssl/misc/CA.pl

# KEYGEN. Es el programa que se usará para generar un password

aleatorio si no especificas #ninguno a la hora de crear los certificados.

Yo he usado dnskeygen que los puedes encontrar en #las utilidades de

bind (apt-get install bind).

#!/bin/sh

OPENSSL=openssl

CAPL=(path to your CA.pl)

KEYGEN=(your choice of key/password generator)

PASSDIR=pass

DERDIR=der

P12DIR=p12

PEMDIR=pem

VALIDFOR=365

PASSWD=$1

mkdir -p $PEMDIR $P12DIR $DERDIR $PASSDIR

if [ -z "${PASSWD}" ]; then

echo "No root password specified, trying $PASSDIR/root.pass."

if [ -a $PASSDIR/root.pass ]; then

PASSWD=`cat $PASSDIR/root.pass`

else

echo "Not found. Generating password, see $PASSDIR/root.pass for

contents."

PASSWD=`$KEYGEN | head -c 32`

cat /dev/null > $PASSDIR/root.pass

echo $PASSWD >> $PASSDIR/root.pass

fi

fi

rm -rf demoCA

$OPENSSL req -new -x509 -days $VALIDFOR -keyout

$PEMDIR/newreq.pem -out \

$PEMDIR/newreq.pem -passin pass:$PASSWD -passout pass:$PASSWD

echo "${PEMDIR}/newreq.pem" | $CAPL -newca >/dev/null

$OPENSSL pkcs12 -export -in demoCA/cacert.pem -inkey

$PEMDIR/newreq.pem -out \

$P12DIR/root.p12 -cacerts -passin pass:$PASSWD -passout

pass:$PASSWD

$OPENSSL pkcs12 -in $P12DIR/root.p12 -out $PEMDIR/root.pem -passin

\

pass:$PASSWD -passout pass:$PASSWD

$OPENSSL x509 -inform PEM -outform DER -days $VALIDFOR -in

$PEMDIR/root.pem \

-out $DERDIR/root.der -passin pass:$PASSWD

rm -rf $PEMDIR/newreq.pem

Segundo creamos el script para generar el certificado de servidor:

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 3/54

Page 4: Mini HOW-To Free Radius en Debian (WPA)

CA.server

# KEYGEN. Es el programa que se usará para generar un password

aleatorio si no especificas #ninguno a la hora de crear los certificados.

Yo he usado dnskeygen que los puedes encontrar en #las utilidades de

bind (apt-get install bind)

#!/bin/sh

OPENSSL=openssl

KEYGEN=(your choice of key/password generator)

PASSDIR=pass

DERDIR=der

P12DIR=p12

PEMDIR=pem

VALIDFOR=365

SNAME=$1

PASSWD=$2

ROOTPASSWD=$3

mkdir -p $PEMDIR $P12DIR $DERDIR $PASSDIR

if [ -z "${SNAME}" ]; then

echo "WARNING: server name not specified. Using \"server\"."

SNAME=server

fi

if [ -z "${PASSWD}" ]; then

echo "No password specified, trying $PASSDIR/$SNAME.pass."

if [ -a $PASSDIR/$SNAME.pass ]; then

PASSWD=`cat $PASSDIR/$SNAME.pass`

else

echo "Not found. Generating password, see $PASSDIR/$SNAME.pass for

contents."

PASSWD=`$KEYGEN | head -c 32`

cat /dev/null > $PASSDIR/$SNAME.pass

echo $PASSWD >> $PASSDIR/$SNAME.pass

fi

fi

if [ -z "${ROOTPASSWD}" ]; then

echo "No root password specified, trying $PASSDIR/root.pass."

if [ -a $PASSDIR/root.pass ]; then

ROOTPASSWD=`cat $PASSDIR/root.pass`

else

echo "FATAL: No root certification password."

exit

fi

fi

$OPENSSL req -new -keyout $PEMDIR/newreq.pem -out

$PEMDIR/newreq.pem -passin \

pass:$PASSWD -passout pass:$PASSWD

$OPENSSL ca -policy policy_anything -out $PEMDIR/newcert.pem -key

$ROOTPASSWD \

-extensions xpserver_ext -extfile xpextensions -days $VALIDFOR -infiles

$PEMDIR/newreq.pem

$OPENSSL pkcs12 -export -in $PEMDIR/newcert.pem -inkey

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 4/54

Page 5: Mini HOW-To Free Radius en Debian (WPA)

$PEMDIR/newreq.pem -out \

$P12DIR/$1.p12 -clcerts -passin pass:$PASSWD -passout

pass:$PASSWD

$OPENSSL pkcs12 -in $P12DIR/$SNAME.p12 -out $PEMDIR/$SNAME.pem

-passin \

pass:$PASSWD -passout pass:$PASSWD

$OPENSSL x509 -inform PEM -outform DER -in $PEMDIR/$SNAME.pem -

out $DERDIR/$SNAME.der

rm -rf $PEMDIR/newcert.pem $PEMDIR/newreq.pem

Finalmente creamos el script para generar el certificado del cliente.

CA.client

# KEYGEN. Es el programa que se usará para generar un password

aleatorio si no especificas #ninguno a la hora de crear los certificados.

Yo he usado dnskeygen que los puedes encontrar en #las utilidades de

bind (apt-get install bind)

#!/bin/sh

OPENSSL=openssl

KEYGEN=(your choice of key/password generator)

PASSDIR=pass

DERDIR=der

P12DIR=p12

PEMDIR=pem

VALIDFOR=365

CLNAME=$1

PASSWD=$2

ROOTPASSWD=$3

mkdir -p $PEMDIR $P12DIR $DERDIR $PASSDIR

if [ -z "${CLNAME}" ]; then

echo "WARNING: client name not specified. Using \"client\"."

CLNAME=client

fi

if [ -z "${PASSWD}" ]; then

echo "No password specified, trying $PASSDIR/$CLNAME.pass."

if [ -a $PASSDIR/$CLNAME.pass ]; then

PASSWD=`cat $PASSDIR/$CLNAME.pass`

else

echo "Not found. Generating password, see $PASSDIR/$CLNAME.pass

for contents."

PASSWD=`$KEYGEN | head -c 16`

cat /dev/null > $PASSDIR/$CLNAME.pass

echo $PASSWD >> $PASSDIR/$CLNAME.pass

fi

fi

if [ -z "${ROOTPASSWD}" ]; then

echo "No root password specified, trying $PASSDIR/root.pass."

if [ -a $PASSDIR/root.pass ]; then

ROOTPASSWD=`cat $PASSDIR/root.pass`

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 5/54

Page 6: Mini HOW-To Free Radius en Debian (WPA)

else

echo "FATAL: No root certification password."

exit

fi

fi

$OPENSSL req -new -keyout $PEMDIR/newreq.pem -out

$PEMDIR/newreq.pem -passin \

pass:$PASSWD -passout pass:$PASSWD

$OPENSSL ca -policy policy_anything -out $PEMDIR/newcert.pem -passin

\

pass:$PASSWD -key $ROOTPASSWD -extensions xpclient_ext -days

$VALIDFOR \

-extfile xpextensions -infiles $PEMDIR/newreq.pem

$OPENSSL pkcs12 -export -in $PEMDIR/newcert.pem -inkey

$PEMDIR/newreq.pem -out \

$P12DIR/$CLNAME.p12 -clcerts -passin pass:$PASSWD -passout

pass:$PASSWD

$OPENSSL pkcs12 -in $P12DIR/$CLNAME.p12 -out

$PEMDIR/$CLNAME.pem -passin \

pass:$PASSWD -passout pass:$PASSWD

$OPENSSL x509 -inform PEM -outform DER -in $PEMDIR/$CLNAME.pem -

out \

$PEMDIR/$CLNAME.der

rm -rf $PEMDIR/newcert.pem $PEMDIR/newreq.pem

Ahora sólo nos queda crear un fichero para adaptar los certificados a las

particularidades de Windows XP:

xpextensions

[ xpclient_ext ]

extendedKeyUsage = 1.3.6.1.5.5.7.3.2

[ xpserver_ext ]

extendedKeyUsage = 1.3.6.1.5.5.7.3.1

Una vez tenemos creados los scripts para los certificados, vamos a

generar dichos certificados:

Primero creamos el certificado de raíz:

$ ./CA.root [password]

El argumento "password" es opcional (pero te recomiendo ponerlo). En

el proceso se te preguntarán una serie de cosas, cuando se te

pregunte por "common name", deja el campo en blanco.

El siguiente paso es crear el certificado de servidor:

$ ./CA.server server-name [password [root-password]]

Donde server-name puede ser el nombre del servidor RADIUS.

password y root-password son opcionales, pero te recomiendo ponerlos,

donde password será el password para el certificado que estás creando

y root-password es el password que espacificaste anteriormente al crear

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 6/54

Page 7: Mini HOW-To Free Radius en Debian (WPA)

el certificado raíz, si no pusiste ninguno el sólo buscará el archivo

root.pass.

Se te volverán a preguntar una serie de cosas, cuando se te pregunte

por "common name" debes poner el fully-qualified domain-

name (FQDN) del servidor (para saberlo hostname -fqdn)

Finalmente creamos el certificado de cliente:

$ ./CA.client client-name [password [root-password]]

Donde client-name puede ser el nombre del cliente (lo mejor sería el

FQDN del equipo cliente). Cuando se te pregunte por el "common

name" introduce los mismo que pusiste en client-name al invocar el

script.

Obviamente, necesitarás repetir este paso para todos los clientes que

quieras autenticar.

Ahora toca instalar los certificados.

Copia los ficheros der/root.der y p12/client-name.p12 al cliente XP.

Primero instala el certificado raíz para establecernos a nosotros mismo

como una autoridad.

1. Doble click en root.der.

2. En la ventana de propiedades de certificado, click en Instalar

certificado.

3. En el asistente, pulsar Siguiente.

4. Seleccionar la opicón “Colocar todos los certificados en el siguiente

almacén” y tras pulsar “Examinar” se tiene que seleccionar el almacén

"Entidades emisoras raíz de confianza”

5. Click Siguiente para finalizar.

Siguiente, instala el certificado de cliente:

1. Doble click en nombreFQDNDelCliente.p12.

2. En el asistente, click "Siguiente" y "Siguiente" otra vez.

3. Te preguntará el password. Este password es el que indicaste al crear

el certificado del cliente cuando se ejecutó CA.client.

4. Elegir la opción “Seleccionar automáticamente el almacén de

certificados en base al tipo de certificado.

5. Click "Siguiente" para finalizar.

En el servidor RADIUS debemos hacer los siguiente:

Primero, crearemos un repositorio de certificados, por ejemplo podemos

elegir: /etc/autoridad-wifi

Como root ejecutamos:

# mkdir /etc/autoridad-wifi

Copia las claves privadas:

# cp pem/root.pem pem/server-name.pem /etc/autoridad-wifi

Ahora toca asginar los permisos correctos a las claves. Como

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 7/54

Page 8: Mini HOW-To Free Radius en Debian (WPA)

ejecutaremos freeradius con usuario y grupo freerad, tenemos que

asignar permisos rw al superusuario y al grupo freerad permisos r.

# chown root.freerad /etc/autoridad-wifi/*.pem

# chmod 0640 /etc/autoridad-wifi/*.pem

5.- Configurando Freeradius.

Antes de nada se tienen que crear unos ficheros aleatorios, para ello:

# /usr/sbin/dnskeygen > /etc/autoridad-wifi/DH

# /usr/sbin/dnskeygen > /etc/autoridad-wifi/random

# chown root:freerad /etc/autoridad-wifi/DH /etc/autoridad-wifi/random

# chmod 0640 /etc/autoridad-wifi/DH /etc/autoridad-wifi/random

Configurando el corazón de freeradius.

Nota: Es probable que tengas que cambiar cosas de este fichero para

adaptarlo a las particularidades de tu sistema.

Ejecutamos: vi /etc/freeradius/radiusd.conf, y debemos dejarlo algo

parecido a esto:

# radiusd.conf

# Configuration of this RADIUS server.

#

# IMPORTANT: THIS FILE CONTAINS SECRETS.

# This file should have -rw-r----- root:radiusd permissions.

# Various directories

prefix = /usr

exec_prefix = /usr

sysconfdir = /etc

localstatedir = /var

sbindir = /usr/sbin

logdir = ${localstatedir}/log/radius

raddbdir = ${sysconfdir}/raddb

radacctdir = ${logdir}/radacct

# Location of config and logfiles

confdir = ${raddbdir}

run_dir = ${localstatedir}/run/radiusd

log_file = ${logdir}/radius.log

# Libraries, modules, etc.

libdir = /usr/lib

# The pid file

pidfile = ${run_dir}/radiusd.pid

# User/group config of the RADIUS server

user = freerad

group = freerad

# Request handling

max_request_time = 30

delete_blocked_requests = no

cleanup_delay = 5

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 8/54

Page 9: Mini HOW-To Free Radius en Debian (WPA)

max_requests = 1024

# bind_address: we need only listen on the wireless subnet.

bind_address = (IP address to listen on)

port = 0

hostname_lookups = no

# How the server conducts itself

allow_core_dumps = no

regular_expressions = yes

extended_expressions = yes

# Logging behaviour

log_stripped_names = no

log_auth = no

log_auth_badpass = no

log_auth_goodpass = no

# User handling

usercollide = no

lower_user = no

lower_pass = no

nospace_user = no

nospace_pass = no

# RADIUS Checker

checkrad = ${sbindir}/checkrad

# Security options

security {

max_attributes = 200

reject_delay = 1

status_server = no

}

# DON'T proxy requests

proxy_requests = no

# CLIENTS CONFIGURATION

# Include the clients here.

$INCLUDE ${confdir}/clients.conf

# Don't use SNMP.

snmp = no

# Thread-pooling

thread pool {

start_servers = 2

max_servers = 10

min_spare_servers = 3

max_spare_servers = 10

max_requests_per_server = 0

}

# MODULE CONFIGURATION

modules {

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 9/54

Page 10: Mini HOW-To Free Radius en Debian (WPA)

# This is an EAP-based operation.

eap {

default_eap_type = tls

timer_expire = 60

tls {

private_key_password = (server's private key password, e.g. in

pass/server-name.pass)

private_key_file = /etc/autoridad-wifi/server-name.pem

certificate_file = /etc/autoridad-wifi/server-name.pem

CA_file = /etc/autoridad-wifi/root.pem

dh_file = /etc/autoridad-wifi/DH

random_file = /etc/autoridad-wifi/random

fragment_size = 1024

include_length = yes

}

}

# Preprocess the incoming RADIUS request

preprocess {

huntgroups = ${confdir}/huntgroups

hints = ${confdir}/hints

with_ascend_hack = no

ascend_channels_per_line = 23

with_ntdomain_hack = no

with_specialix_jetstream_hack = no

with_cisco_vsa_hack = no

}

# The users file

files {

usersfile = ${confdir}/users

acctusersfile = ${confdir}/acct_users

compat = no

}

# Write a detailed log of all accounting records received

detail {

detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d

detailperm = 0600

}

acct_unique {

key = "User-Name, Acct-Session-Id, NAS-IP-Address, C lient-IP-Address,

NAS-Port-Id"

}

radutmp {

filename = ${logdir}/radutmp

username = %{User-Name}

case_sensitive = yes

check_with_nas = yes

perm = 0600

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 10/54

Page 11: Mini HOW-To Free Radius en Debian (WPA)

callerid = "yes"

}

radutmp sradutmp {

filename = ${logdir}/sradutmp

perm = 0644

callerid = "no"

}

expr {

}

counter daily {

filename = ${raddbdir}/db.daily

key = User-Name

count-attribute = Acct-Session-Time

reset = daily

counter-name = Daily-Session-Time

check-name = Max-Daily-Session

allowed-servicetype = Framed-User

cache-size = 5000

}

always fail {

rcode = fail

}

always reject {

rcode = reject

}

always ok {

rcode = ok

simulcount = 0

mpp = no

}

exec {

wait = yes

input_pairs = request

}

exec echo {

wait = yes

program = "/bin/echo %{User-Name}"

input_pairs = request

output_pairs = reply

}

ippool main_pool {

range-3 = (starting IP address)

range-stop = (ending IP address)

netmask = 255.255.255.0

cache-size = 800

session-db = ${raddbdir}/db.ippool

ip-index = ${raddbdir}/db.ipindex

override = no

}

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 11/54

Page 12: Mini HOW-To Free Radius en Debian (WPA)

}

# MODULE INSTANTIATION

instantiate {

expr

daily

}

# AUTHORISATION PROCESS

authorize {

preprocess

eap

files

}

# AUTHENTICATION PROCESS

authenticate {

eap

}

# ACCOUNTING

preacct {

preprocess

files

}

accounting {

acct_unique

detail

radutmp

}

session {

radutmp

}

post-auth {

}

Base de datos de puntos de acceso.

Aquí necesitarás la clave que asignaste al certificado de servidor

(CA.server). Editamos el fichero /etc/freeradius/clients.conf y lo

dejamos algo parecido a esto (adaptandolo a nuestras necesidades):

# clients.conf

# Network access points that authenticate through RADIUS specified

here.

#

# IMPORTANT: THIS FILE CONTAINS SECRETS.

# This file should have -rw-r----- root:radiusd permissions.

# The wireless access point

client "(the AP's IP address)" {

secret = (RADIUS shared secret)

shortname = (a name for logging, etc.)

nastype = (your AP's NAS type; if unknown, try "other")

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 12/54

Page 13: Mini HOW-To Free Radius en Debian (WPA)

}

La base de datos de usuarios:

Editamos el fichero /etc/freeradius/users y lo dejamos algo parecido a

este:

# users

# A list of users and their authentication types.

"client-name" Auth-Type := EAP

# This is important: it makes RADIUS reject users not found above

DEFAULT Auth-Type := Reject

Reply-Message = "LOS HACKERS NO SON BIENVENIDOS y tú no tienes

permiso para entrar en esta red, desiste de intentar conectarte.

MÁRCHATE!!!!! / HACKERS AREN'T WELCOME HERE and you don't have

permission to enter this network, please desist to retry. GO AWAY!!!!!"

Por cada máquina cliente que quieras conectar deberás tener una línea

igual que "client-name" Auth-Type := EAP, donde "client-name" será el

FQDN del cliente.

Iniciamos el servicio de freeradius, para ello ejecutamos:

# freeradius

Si todo ha ido bien deberíamos ver algo así:

# ps faux | grep freeradius

freerad 3973 0.0 2.6 68132 24240 ? Ssl May04 0:00 freeradius

Sí el servicio no se arranca prueba con:

# freeradius -X -A para debugar.

6.- Configurando el AP (Punto de Acceso).

Accederemos a la configuración vía web del AP, y en la sección de

configuración wireless en el apartado "Authentication" seleccionamos

"WPA" y nos solicitará que introduzcamos la ip del servidor radius, el

puerto (por defecto poner 1812) y el password que indicamos en el

fichero clients.conf.

7.- Configurando clientes.

Para evitarnos problemas lo mejor es que nuestro cliente tenga instalado

Service Pack 2 de Windows XP. Si no lo tuviese es necesario instalar,

como mínimo, Service Pack 1 de Windows XP y el hotfix Q815485

(descargable a través de microsoft).

Normalmente windows debería detectar automáticamente todas las

redes wifi al alcance de nuestra máquina cliente. Accederemos a la lista

de las redes disponibles (pulsando doble click en el icono de los dos

ordenadores que aparecerán en la barra de tareas al lado de la hora de

windows). Seleccionamos la red que acabamos de crear y como ya

tenemos el certificado instalado automáticamente hará la autenticación

contra freeradius y se conectará a nuestra nueva y flamante red segura

wifi.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 13/54

Page 14: Mini HOW-To Free Radius en Debian (WPA)

8.- Conclusiones.

Si estás leyendo esto es porque acabaste el HOW-TO y ya tienes tu red

wifi más segura o porque no entendiste nada y aún así has hecho el

esfuerzo de intentar encontrar algo en claro. Si no es por ninguna de

estas dos cosas, mejor dedicate a otra cosa...

Para los que hayan conseguido instalar freeradius y hacerlo funcionar,

enhorabuena. Como habréis visto hay una gran diferencia entre tener

una red con WEP y una red con WPA. Juzgar vosotros mismos.

Por último quería mandar un avíso a todos de la proliferación de las

redes wifi gemelas, esto consiste en crear una red de las mismas

características a una red que exista, con el mismo SSID y demás, así

cuando un usuario (con pocas luces por cierto) quiera conectarse a la

red verá dos redes iguales y por equivocación puede llegar a conectarse

a la red gemela propiedad de un usuario malintencionado con lo cual

pondremos a su alcance todos nuestros ficheros sin darnos cuenta.

ESTAD ATENTOS A ESTO.

Próximamente: HOW-TO Clúster de correo Postfix de manera casera en

Debian.

Esta obra está bajo una licencia de Creative Commons.

publicado por cupido en 10:17:00

9 comentarios:

minu dijo...

¿Algo de ayuda a la comunidad?.

Nen, tu comunidad bloggera somos los de siempre (Laia, Àlex,

Norma, Minu... y poco más).

Si quieres ayudarnos vuelve a ser el de antaño y no nos hables

en xino tío.

Por cierto, si me echas un cable con cambiar mi plantilla te

estaré eternamente agradecido que tengo un mierdón que lo

flipas y no me mola nada.

vie may 11, 12:17:00 PM CEST

the root dijo...

Jajajaja, me refiero a la comunidad linuxera, a la gente del

software libre, a los frikis como nos llamáis vosotros, a gente

que quiere haceros la vida más fácil a vosotros

(pu@~#@~@{[¬½{ usuarios) y no sabe como ni por donde

empezar. Esto es un blog sobre debianitas y eso es lo que voy a

intentar hacer a partir de ahora poner cosas de interés para los

debianitas.

Lo de la plantilla lo miramos cuando quieras, pero para eso alex

es un hacha!

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 14/54

Page 15: Mini HOW-To Free Radius en Debian (WPA)

vie may 11, 12:23:00 PM CEST

the root dijo...

Aunque también pondré cosas para que me podáis criticar como

hasta ahora mis asiduos lectores!

vie may 11, 12:25:00 PM CEST

cameraphp dijo...

Hola, soy nuevo en esto, lme llamo Juan Pablo Camera logre

seguir al pie de la letra tus pasos, pero cuanto ejecuto

./CA.server server-name [password [root-password]]

./CA.client client-name [password [root-password]]

me da el sgte error

bash: ./CA.server: cannot execute binary file

en ambos casos

luego hacia la parte final

radtest test test localhost 1812 testing123

Sending Access-Request of id 9 to 127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 255.255.255.255

NAS-Port = 1812

rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=9,

length=20

en el log del servidor da

rad_recv: Access-Request packet from host 127.0.0.1:32772,

id=9, length=56

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 255.255.255.255

NAS-Port = 1812

Sending Access-Reject of id 9 to 127.0.0.1 port 32772

En fin por lo que entiendo me esta rechazando las conexiones

por ser un usuuario no valido y pienso que este error se viene

arrastrando desde los errores en la creacion de los certificados

tanto para el cliente como del servidor

vie jul 04, 12:34:00 AM CEST

cameraphp dijo...

Favor enviar pronta respuesta y muchas gracias de antemano

vie jul 04, 12:35:00 AM CEST

the root dijo...

Hola Juan Pablo, le has dado permisos de ejecución al script?

Evidentemente si la generación de certificados no es correcta el

servidor te rechazará las conexiones. Entiendo que "server-

name" y "client-name" los sustituyes por los nombres que se

adecuan a tu entorno.

Has añadido el cliente dentro del fichero clients.conf? Has

instalado los certificados en el cliente?

Que versión de Windows es tu cliente?

Saludos

vie jul 04, 08:13:00 AM CEST

the root dijo...

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 15/54

Page 16: Mini HOW-To Free Radius en Debian (WPA)

El cliente lo tienes que añadir en el fichero users y el access

point dentro de clients.conf. Puedes poner la configuración de tus

ficheros? Puedes revisar si tienes algún error de sintaxis dentro

de los scripts de creación de los certificados?

Saludos

vie jul 04, 08:17:00 AM CEST

cameraphp dijo...

gracias por los apuntes, pero he encontrado otro manual por

internet y lo publico entero, cabe destacar que le sumo lo sgte:

apt-get install libssl-dev libgdbm-dev libmysql++-dev libkrb5-dev

libperl-dev

y ademas se tiene que copiar la carpeta misc contrenedora de

CA.pl en /etc/ssl para que funcionen bien

******************************

Webstats4U - Free web site statistics

Guà a para instalar FreeRADIUS

en Redes Privadas v1.0

Por

Daniel Romero Peña

[email protected]

Escuela de Ingenierà a Informática

Universidad Diego Portales

Santiago, Chile.

Contenidos:

1. Configuración de Servidores. 1

1.1. Descarga e instalación de freeradius. 1

1.2. Instalación de MySQL 4.1. 5

1.3. Configuración base de freeradius. 6

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 16/54

Page 17: Mini HOW-To Free Radius en Debian (WPA)

2. Configurando FreeRadius con EAP/PEAP. 9

2.1. Configuración NAS. 9

2.2. Creación de certificados para EAP/PEAP. 9

2.3. Habilitando EAP/PEAP. 11

2.4. Definición de grupos y usuarios de prueba. 17

2.5. Configuración del suplicante en Windows XP SP2. 18

3. Referencias. 31

1. Configuración de Servidores

En el presente capà tulo se explicará como instalar freeradius y

MySQL en un sistema Debian, dejándolo en funcionamiento con

su configuración por defecto. Para esto necesitaremos un PC

que cuente con el sistema operativo anteriormente señalado

recién instalado, sin programas ajenos a la distribución del

sistema, y con su interfaz de red ya configurada para acceder a

Internet.

1.1. Descarga e instalación de freeradius

El primer paso es obtener el código fuente o un paquete pre-

hecho para Debian. En el caso de Debian se puede obtener un

paquete precompilado con la utilidad apt-get. Nosotros

optaremos por descargar el código fuente.

Para esto debemos descargar el siguiente archivo:

ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.3.tar.bz2

Este archivo contiene el código fuente correspondiente a la

versión actual de freeradius en Octubre del 2006.

Para descargarlo podemos hacerlo con la utilidad wget. De no

contar con wget podemos instalarla ejecutando apt-get install

wget.

radius:/home/user# wget

ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.3.tar.bz2

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 17/54

Page 18: Mini HOW-To Free Radius en Debian (WPA)

Luego debemos extraer los archivos ejecutando la siguiente

sentencia:

radius:/home/user# tar jxvf freeradius-1.1.3.tar.bz2

Con esto los archivos serán extraà dos en un nuevo directorio

llamado freeradius-1.1.3

Luego debemos ingresar a este nuevo directorio y en el ejecutar

el script de configuración para luego poder compilarlo:

radius:/home/user# cd freeradius-1.1.3

radius:/home/user/freeradius-1.1.3# ./configure

checking for gcc... no

checking for cc... no

checking for cc... no

checking for cl... no

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details.

Este error se debe a que en nuestro sistema no está instalado el

compilador gcc (GNU Compiler Collection, antes GNU C

Compiler). En Debian podemos instalar gcc simplemente

ejecutando:

radius:/home/user/freeradius-1.1.3# apt-get install gcc

Finalizada la instalación de gcc nuevamente ejecutamos el

script de configuración:

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 18/54

Page 19: Mini HOW-To Free Radius en Debian (WPA)

radius:/home/user/freeradius-1.1.3# ./configure

checking for gcc... gcc

checking for C compiler default output file name... configure:

error: C compiler cannot create executables

See `config.log' for more details.

Para solucionar este error debemos instalar el paquete libc6-dev,

correspondiente a “GNU C Library: Development Libraries

and Header Filesâ€. Con esto el sistema quedará en condiciones

de crear los archivos ejecutables.

radius:/home/user/freeradius-1.1.3# apt-get install libc6-dev

Luego volvemos a intentar ejecutar el script de configuración:

radius:/home/user/freeradius-1.1.3# ./configure

checking for gcc... gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes

.

.

.

checking for gmake... no

checking for make... /usr/local/bin/make

configure: error: GNU Make is not installed. Please download and

install it

from ftp://prep.ai.mit.edu/pub/gnu/make/ before continuing.

Nuevamente un error, pero no hay que frustrarse... Como lo

menciona el mensaje, lo que falta es instalar la aplicación

make. Para esto nuevamente recurriremos a apt:

radius:/home/user/freeradius-1.1.3# apt-get install make

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 19/54

Page 20: Mini HOW-To Free Radius en Debian (WPA)

Nuevamente ejecutamos:

radius:/home/user/freeradius-1.1.3# ./configure

checking for gcc... gcc

.

.

/usr/bin/ld: cannot find –lperl

Ahora nos avisa que nuestro sistema no cuenta con el lenguaje

perl instalado. Solución:

Finalemente:

radius:/home/user/freeradius-1.1.3# apt-get install libssl-dev

libgdbm-dev libmysql++-dev libkrb5-dev libperl-dev

radius:/home/user/freeradius-1.1.3# ./configure

checking for gcc... gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes.

.

.

.

config.status: creating Makefile

config.status: creating config.h

config.status: config.h is unchanged

configure: configuring in src/modules/rlm_checkval

configure: running /bin/sh './configure' --prefix=/usr/local --

enable-ltdl-install=no --cache-file=/dev/null --srcdir=.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 20/54

Page 21: Mini HOW-To Free Radius en Debian (WPA)

configure: creating ./config.status

config.status: creating Makefile

radius:/home/user/freeradius-1.1.3#

üOK

Luego ejecutamos:

radius:/home/user/freeradius-1.1.3# make

radius:/home/user/freeradius-1.1.3# make install

Con esto freeradius está listo para correr por primera vez en

nuestro sistema.

Ejecutando radius:/home/user/freeradius-1.1.3# radiusd –x se

iniciará el servidor en modo de debug, en donde nos mostrará

información acerca de los eventos que recibe. Si no lo

ejecutamos con la opción –x el servidor se inicia, pero no

mostrará ninguna información en pantalla.

root@radius:~/radius/freeradius-1.1.3# radiusd -x

Starting - reading configuration files ...

Using deprecated naslist file. Support for this will go away soon.

Module: Loaded exec

.

.

.

Initializing the thread pool...

Listening on authentication *:1812

Listening on accounting *:1813

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 21/54

Page 22: Mini HOW-To Free Radius en Debian (WPA)

Ready to process requests.

Con esto ya tenemos corriendo el servidor freeradius en nuestro

sistema, con la configuración que trae por defecto.

Por defecto el servidor crea un cliente de nombre y password

test y con un secret = testing123.

Ahora podemos realizar un pequeño test de conexión con la

utilidad radtest que biene con freeradius:

radius:~# radtest test test localhost 0 testing123

Sending Access-Request of id 88 to 127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 255.255.255.255

NAS-Port = 0

Re-sending Access-Request of id 88 to 127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 255.255.255.255

NAS-Port = 0

rad_recv: Access-Reject packet from host 127.0.0.1:1812,

id=88, length=20

En freeradius se reportó lo siguiente:

rad_recv: Access-Request packet from host 127.0.0.1:32775,

id=84, length=56

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 22/54

Page 23: Mini HOW-To Free Radius en Debian (WPA)

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 255.255.255.255

NAS-Port = 0

rad_recv: Access-Request packet from host 127.0.0.1:32775,

id=84, length=56

Sending Access-Reject of id 84 to 127.0.0.1 port 32775

radtest envà o un Access-Request, el cual fue recibido por

freeradius y contestado con un Access-Reject. Con esto

podemos verificar que a lo menos el servidor se esta ejecutando

de manera correcta.

1.2. Instalación de MySQL 4.1

Ya que tenemos instalado y funcionando freeradius, instalaremos

MySQL con el fà n de reemplazar la configuración de usuarios y

clientes y los logs de accounting que por defecto se hacen en

archivos de texto, por una base de datos que permita una mejor

administración de estos.

Primero debemos proceder a instalar MySQL. En esta ocasión

instalaremos la versión 4.1 utilizando apt-get:

root@radius:~# apt-get install mysql-server-4.1

Luego de instalar MySQL debemos crear la base de datos que

utilizará freeradius. Para esto ingresamos a la shell de MySQL

ejecutando como root:

root@radius:~# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4 to server version: 4.1.15-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 23/54

Page 24: Mini HOW-To Free Radius en Debian (WPA)

mysql>

Luego ejecutamos las siguientes instrucciones SQL, las que

crearán la base de datos con el nombre radius, crearán un

usuario también de nombre radius con todos los permisos

sobre esta base de datos y le asignarán un password=radius:

mysql> create database radius;

mysql> grant all privileges on radius.* to radius@localhost;

mysql> set password for radius@localhost =

old_password('radius');

Ahora debemos proceder a crear la base de datos. Para esto

freeradius provee un script sql que puede ser encontrado en el

directorio freeradius-1.1.3/doc/examples/mysql.sql.

Para ejecutar el script, podemos hacerlo directamente desde

MySQL:

mysql> connect radius;

mysql> \. /home/user/freeradius-1.1.3/doc/examples/mysql.sql

Para ver la estructura de las tablas podemos utilizar los

siguientes comandos de mysql: “show tables;†y “desc

tablename;â€.

Ahora debemos poblar la base de datos con algún usuario y

cliente (NAS) de prueba:

insert into radgroupcheck values ('', 'admin', 'Auth-Type', ':=',

'Local');

insert into radgroupreply values ('', 'admin', 'Framed-Protocol',

':=', 'PPP');

insert into radgroupreply values ('', 'admin', 'Service-Type', ':=',

'Framed-User');

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 24/54

Page 25: Mini HOW-To Free Radius en Debian (WPA)

insert into radgroupreply values ('', 'admin', 'Framed-

Compression', ':=', 'Van-Jacobsen-TCP-IP');

insert into usergroup values ('dromero', 'admin','');

insert into radcheck values ('', 'dromero', 'Password', '==',

'dromero');

insert into radreply values ('', 'dromero', 'Framed-IP-Address',

':=', '192.168.100.50');

insert into nas values ('', 'test',NULL, '3coml',NULL, 'radiusUDP',

NULL, NULL);

Con esto hemos creado un usuario dromero con password

dromero, el cual pertenece al grupo admin que posee un

conjunto de atributos determinados. Además hemos agregado

un NAS de nombre test, tipo 3coml, y secret radiusUDP.

1.3. Configuración base de freeradius

Como queremos que freeradius trabaje con MySQL debemos

realizar algunos cambios en los archivos de configuración. Estos

archivos los podemos encontrar en el directorio

/usr/local/etc/raddb.

El archivo users contiene la información de los usuarios, pero

estos ahora se almacenarán en MySQL, por lo que no

tocaremos este archivo.

El archivo clients.conf se utiliza para configurar los NAS con que

interactúa freeradius. Aunque ya tenemos el NAS agregado en

la base de datos, debemos configurar la ip de este en el archivo.

La ultima modificación que haremos en este archivo es agregar

al final los siguiente:

client 200.14.84.159{

secret = radiusUDP

shortname = 3com1

}

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 25/54

Page 26: Mini HOW-To Free Radius en Debian (WPA)

donde 200.14.84.159 es la IP de nuestro AP.

Luego debemos configurar el acceso a la base de datos, indicÃ

¡ndole a freeradius cual es la IP del servidor MySQL, el usuario y

el password. Esto lo haremos en el archivo sql.conf, en donde

deberemos modificar las siguientes là neas:

# Connect info

server = "localhost"

login = "radius"

password = "radius"

# Database table configuration

radius_db = "radius"

donde localhost corresponde a la dirección del servidor MySQL,

login es el nombre de usuario y su password para acceder a la

base de datos, y radius_db corresponde al nombre de la base de

datos que hemos creado para freeradius.

Luego en el archivo radius.conf configuraremos freeradius para

que deje de ocupar los archivos y comience a ocupar MySQL.

Para esto modificaremos las siguientes secciones del archivo, las

cuales se encuentran al final de este:

authorize {

preprocess

chap

mschap

suffix

eap

sql

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 26/54

Page 27: Mini HOW-To Free Radius en Debian (WPA)

}

authenticate {

Auth-Type PAP {

pap

}

Auth-Type CHAP {

chap

}

Auth-Type MS-CHAP {

mschap

}

}

preacct {

preprocess

acct_unique

suffix

}

accounting {

detail

radutmp

sql

}

session {

radutmp

sql

}

post-auth {

sql

}

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 27/54

Page 28: Mini HOW-To Free Radius en Debian (WPA)

pre-proxy {

}

post-proxy {

eap

}

Finalmente echamos a correr nuestro freeradius con MySQL:

root@radius:~# radiusd -x

Starting - reading configuration files ...

Using deprecated naslist file. Support for this will go away soon.

Module: Loaded exec

rlm_exec: Wait=yes but no output defined. Did you mean

output=none?

Module: Instantiated exec (exec)

Module: Loaded expr

Module: Instantiated expr (expr)

Module: Loaded PAP

Module: Instantiated pap (pap)

Module: Loaded CHAP

Module: Instantiated chap (chap)

Module: Loaded MS-CHAP

Module: Instantiated mschap (mschap)

.

.

.

Module: Loaded SQL

rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql)

loaded and linked

rlm_sql (sql): Attempting to connect to radius@localhost:/radius

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 28/54

Page 29: Mini HOW-To Free Radius en Debian (WPA)

rlm_sql (sql): starting 0

rlm_sql (sql): Attempting to connect rlm_sql_mysql #0

rlm_sql_mysql: Starting connect to MySQL server for #0

rlm_sql (sql): Connected new DB handle, #0

.

.

.

Initializing the thread pool...

Listening on authentication *:1812

Listening on accounting *:1813

Ready to process requests.

2. Configurando FreeRadius con EAP/PEAP

2.1. Configuración NAS

Cada fabricante provee una interfás particular para realizar esta

labor.

En general la configuración de los NAS es bastante sencilla: en

cada uno de ellos debemos habilitarlo como cliente RADIUS,

configurar la IP del servidor RADIUS, el puerto en que este

escucha y el “secreto†que el NAS comparte con el servidor

RADIUS para encriptar las comunicaciones (configurado en el

archivo clients.conf).

Para más detalles consulte el manual del NAS que utilizará.

2.2. Creación de certificados para EAP/PEAP

Al utilizar EAP/PEAP deberemos porveer a cada cliente del

certificado del servidor. FreeRadius biene con un set de

certificados ya creados, que pueden ser encontrados en el

directorio /usr/local/raddb/certs, pero no es aconsejable el

utilizar estos, ya que son de dominio público, por lo que

procederemos a crear certificados propios.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 29/54

Page 30: Mini HOW-To Free Radius en Debian (WPA)

Para crear estos certificados es necesario tener instalado

OpenSSL.

Teniendo instalado OpenSSL debemos proceder a configurarlo

para nuestra máquina. Esto se debe hacer en el archivo

/usr/local/openssl/ssl/openssl.cnf en donde deberemos modificar

la siguiente sección para que coincida con el formato de los

directorios que creará freeradius para guardar los certificados,

tal cual como lo podemos ver en el directorio

/usr/local/raddb/certs. Solo deberemos modificar la siguiente

sección del archivo:

[ CA_default ]

dir = ./demoCA

certs = $dir/certs

crl_dir = $dir/crl

database = $dir/index.txt

#unique_subject = no

new_certs_dir = $dir/newcerts

certificate = $dir/cacert.pem

serial =/home/dromero/free/raddb/certs/demoCA/serial

crlnumber = $dir/crlnumber

crl = $dir/crl.pem

private_key = $dir/private/cakey.pem

RANDFILE = $dir/private/.rand

x509_extensions = usr_cert

En nuestro caso lo único que fue necesario modificar fue la

ubicación del archivo serial, que fue cambiado de serial =

$dir/serial a la ubicación que se indica anteriormente, que

corresponde a la ubicación del tar de freeradius que

descomprimimos al principio de este tutorial.

FreeRadius incorpora un script ya programado para crear los

certificados. Este script (certs.sh) se puede encontrar en el

directorio “scripts†del tar del código fuente. Este script

interactúa con 2 scripts más que se encuentran en el mismo

directorio: CA.all y CA.certs.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 30/54

Page 31: Mini HOW-To Free Radius en Debian (WPA)

Lo primero que debemos hacer en estos 3 scripts es modificar

las rutas para que apunten a la ubicación correcta de openssl

en nuestra máquina (/usr/local/openssl).

En nuestro caso modificamos las siguientes là neas:

CA.all

SSL=/etc/ssl

echo "newreq.pem" | /usr/local/ssl/misc/CA.pl –newca

CA.certs

[ "$SSL" = "" ] && SSL=/etc/ssl

certs.sh

[ "$SSL" = "" ] && SSL=/etc/ssl

/usr/bin/openssl gendh > dh

Adicionalmente, en el archivo CA.certs debemos llenar los datos

de quien emitirá los certificados, o sea, nosotros. Solo debemos

modificar el archivo en la siguiente sección de él:

#

# Edit the following variables for your organization.

#

COUNTRY="CL"

PROVINCE="Región Metropolitana"

CITY="Santiago"

ORGANIZATION="UDP"

ORG_UNIT=`RadiusUDP`

PASSWORD="radiusUDP"

COMMON_NAME_CLIENT="RadiusUDP Client certificate"

EMAIL_CLIENT="[email protected]"

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 31/54

Page 32: Mini HOW-To Free Radius en Debian (WPA)

PASSWORD_CLIENT=$PASSWORD

COMMON_NAME_SERVER="Radius UDP Server certificate"

EMAIL_SERVER="[email protected]"

PASSWORD_SERVER=$PASSWORD

COMMON_NAME_ROOT="Radius UDP Root certificate"

EMAIL_ROOT="[email protected]"

PASSWORD_ROOT=$PASSWORD

#

# lifetime, in days, of the certs

#

LIFETIME=730

#####EL APORTE

luego

cp -R /usr/lib/ssl/misc /etc/ssl/

####

Una vez editados estos 3 archivos crearemos los certificados

ejecutando:

#sh certs.sh

Si todo va bien, deberà amos ver en pantalla lo siguiente:

root@radius:~/radiussrc/scripts# sh certs.sh

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/

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 32/54

Page 33: Mini HOW-To Free Radius en Debian (WPA)

All passwords have been set to 'whatever'

Con esto hemos creado los certificados para nuestro servidor.

Estos certificados ahora se encuentran en el directorio certs que

está dentro del directorio scripts en el cual hemos estado

trabajando. Finalmente, debemos copiar este directorio al

directorio donde se encuentra la configuración de freeradius, o

sea, /usr/local/etc/raddb/.

2.3. Habilitando EAP/PEAP

Nuevamente deberemos ir a editar los archivos radiusd.conf y

eap.conf para habilitar la autenticación con eap/peap y

mschapv2.

Nuestra configuración fue la siguiente:

eap.conf

eap {

default_eap_type = peap

timer_expire = 60

tls {

private_key_password = radiusUDP

private_key_file = ${raddbdir}/certs/cert-srv.pem

certificate_file = ${raddbdir}/certs/cert-srv.pem

CA_file = ${raddbdir}/certs/demoCA/cacert.pem

dh_file = ${raddbdir}/certs/dh

random_file = ${raddbdir}/certs/random

}

peap {

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 33/54

Page 34: Mini HOW-To Free Radius en Debian (WPA)

default_eap_type = mschapv2

}

mschapv2 {

}

}

Lo que hicimos fue configurar como eap predeterminado peap,

habilitar las contraseñas mschapv2 y configurar las rutas hacia

los diferentes certificados que creamos en la sección anterior

además del indicar el password con que fueron creados estos

certificados.

radiusd.conf

Debemos asegurarnos que que en la sección modules se

encuentre incluido el modulo eap y mschap.

modules {

.

.

.

$INCLUDE ${confdir}/eap.conf

mschap {

}

.

.

.

}

La configuración de las otras secciones será la siguiente (lo

que no aparece aquà se deja como viene por defecto):

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 34/54

Page 35: Mini HOW-To Free Radius en Debian (WPA)

instantiate {

exec

expr

}

authorize {

preprocess

eap

sql

}

authenticate {

Auth-Type MS-CHAP {

mschap

}

eap

}

preacct {

preprocess

acct_unique

suffix

}

accounting {

detail

radutmp

sql

}

session {

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 35/54

Page 36: Mini HOW-To Free Radius en Debian (WPA)

radutmp

sql

}

post-auth {

sql

}

pre-proxy {

}

post-proxy {

}

Ahora que todo está configurado, podemos ejecutar freeradius:

Si todo va bien, veremos lo siguiente:

root@radius:~# radiusd -X

Starting - reading configuration files ...

reread_config: reading radiusd.conf

Config: including file: /usr/local/etc/raddb/proxy.conf

Config: including file: /usr/local/etc/raddb/clients.conf

Config: including file: /usr/local/etc/raddb/eap.conf

Config: including file: /usr/local/etc/raddb/sql.conf

main: prefix = "/usr/local"

main: localstatedir = "/usr/local/var"

main: logdir = "/usr/local/var/log/radius"

main: libdir = "/usr/local/lib"

main: radacctdir = "/usr/local/var/log/radius/radacct"

main: hostname_lookups = no

main: max_request_time = 30

main: cleanup_delay = 5

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 36/54

Page 37: Mini HOW-To Free Radius en Debian (WPA)

main: max_requests = 1024

main: delete_blocked_requests = 0

main: port = 0

main: allow_core_dumps = no

main: log_stripped_names = no

main: log_file = "/usr/local/var/log/radius/radius.log"

main: log_auth = no

main: log_auth_badpass = no

main: log_auth_goodpass = no

main: pidfile = "/usr/local/var/run/radiusd/radiusd.pid"

main: user = "(null)"

main: group = "(null)"

main: usercollide = no

main: lower_user = "no"

main: lower_pass = "no"

main: nospace_user = "no"

main: nospace_pass = "no"

main: checkrad = "/usr/local/sbin/checkrad"

main: proxy_requests = yes

proxy: retry_delay = 5

proxy: retry_count = 3

proxy: synchronous = no

proxy: default_fallback = yes

proxy: dead_time = 120

proxy: post_proxy_authorize = yes

proxy: wake_all_if_all_dead = no

security: max_attributes = 200

security: reject_delay = 1

security: status_server = no

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 37/54

Page 38: Mini HOW-To Free Radius en Debian (WPA)

main: debug_level = 0

read_config_files: reading dictionary

read_config_files: reading naslist

Using deprecated naslist file. Support for this will go away soon.

read_config_files: reading clients

read_config_files: reading realms

radiusd: entering modules setup

Module: Library search path is /usr/local/lib

Module: Loaded exec

exec: wait = yes

exec: program = "(null)"

exec: input_pairs = "request"

exec: output_pairs = "(null)"

exec: packet_type = "(null)"

rlm_exec: Wait=yes but no output defined. Did you mean

output=none?

Module: Instantiated exec (exec)

Module: Loaded expr

Module: Instantiated expr (expr)

Module: Loaded eap

eap: default_eap_type = "peap"

eap: timer_expire = 60

eap: ignore_unknown_eap_types = no

eap: cisco_accounting_username_bug = no

tls: rsa_key_exchange = no

tls: dh_key_exchange = yes

tls: rsa_key_length = 512

tls: dh_key_length = 512

tls: verify_depth = 0

tls: CA_path = "(null)"

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 38/54

Page 39: Mini HOW-To Free Radius en Debian (WPA)

tls: pem_file_type = yes

tls: private_key_file = "/usr/local/etc/raddb/certs/cert-srv.pem"

tls: certificate_file = "/usr/local/etc/raddb/certs/cert-srv.pem"

tls: CA_file = "/usr/local/etc/raddb/certs/demoCA/cacert.pem"

tls: private_key_password = "radiusUDP"

tls: dh_file = "/usr/local/etc/raddb/certs/dh"

tls: random_file = "/usr/local/etc/raddb/certs/random"

tls: fragment_size = 1024

tls: include_length = yes

tls: check_crl = no

tls: check_cert_cn = "(null)"

tls: cipher_list = "(null)"

tls: check_cert_issuer = "(null)"

rlm_eap_tls: Loading the certificate file as a chain

rlm_eap: Loaded and initialized type tls

peap: default_eap_type = "mschapv2"

peap: copy_request_to_tunnel = no

peap: use_tunneled_reply = no

peap: proxy_tunneled_request_as_eap = yes

rlm_eap: Loaded and initialized type peap

mschapv2: with_ntdomain_hack = no

rlm_eap: Loaded and initialized type mschapv2

Module: Instantiated eap (eap)

Module: Loaded preprocess

preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"

preprocess: hints = "/usr/local/etc/raddb/hints"

preprocess: with_ascend_hack = no

preprocess: ascend_channels_per_line = 23

preprocess: with_ntdomain_hack = no

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 39/54

Page 40: Mini HOW-To Free Radius en Debian (WPA)

preprocess: with_specialix_jetstream_hack = no

preprocess: with_cisco_vsa_hack = no

preprocess: with_alvarion_vsa_hack = no

Module: Instantiated preprocess (preprocess)

Module: Loaded SQL

sql: driver = "rlm_sql_mysql"

sql: server = "localhost"

sql: port = ""

sql: login = "radius"

sql: password = "radius"

sql: radius_db = "radius"

sql: nas_table = "nas"

sql: sqltrace = no

sql: sqltracefile = "/usr/local/var/log/radius/sqltrace.sql"

sql: readclients = no

sql: deletestalesessions = yes

sql: num_sql_socks = 5

sql: sql_user_name = "%{User-Name}"

sql: default_user_profile = ""

sql: query_on_not_found = no

.

.

.

sql: safe-characters =

"@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX

YZ0123456789.-_: /"

rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql)

loaded and linked

rlm_sql (sql): Attempting to connect to radius@localhost:/radius

rlm_sql (sql): starting 0

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 40/54

Page 41: Mini HOW-To Free Radius en Debian (WPA)

rlm_sql (sql): Attempting to connect rlm_sql_mysql #0

rlm_sql_mysql: Starting connect to MySQL server for #0

rlm_sql (sql): Connected new DB handle, #0

rlm_sql (sql): starting 1

rlm_sql (sql): Attempting to connect rlm_sql_mysql #1

rlm_sql_mysql: Starting connect to MySQL server for #1

rlm_sql (sql): Connected new DB handle, #1

rlm_sql (sql): starting 2

rlm_sql (sql): Attempting to connect rlm_sql_mysql #2

rlm_sql_mysql: Starting connect to MySQL server for #2

rlm_sql (sql): Connected new DB handle, #2

rlm_sql (sql): starting 3

rlm_sql (sql): Attempting to connect rlm_sql_mysql #3

rlm_sql_mysql: Starting connect to MySQL server for #3

rlm_sql (sql): Connected new DB handle, #3

rlm_sql (sql): starting 4

rlm_sql (sql): Attempting to connect rlm_sql_mysql #4

rlm_sql_mysql: Starting connect to MySQL server for #4

rlm_sql (sql): Connected new DB handle, #4

Module: Instantiated sql (sql)

Module: Loaded Acct-Unique-Session-Id

acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-

Address, C lient-IP-Address, NAS-Port"

Module: Instantiated acct_unique (acct_unique)

Module: Loaded realm

realm: format = "suffix"

realm: delimiter = "@"

realm: ignore_default = no

realm: ignore_null = no

Module: Instantiated realm (suffix)

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 41/54

Page 42: Mini HOW-To Free Radius en Debian (WPA)

Module: Loaded detail

detail: detailfile = "/usr/local/var/log/radius/radacct/%{Client-

IP-Address}/detail-%Y%m%d"

detail: detailperm = 384

detail: dirperm = 493

detail: locking = no

Module: Instantiated detail (detail)

Module: Loaded radutmp

radutmp: filename = "/usr/local/var/log/radius/radutmp"

radutmp: username = "%{User-Name}"

radutmp: case_sensitive = yes

radutmp: check_with_nas = yes

radutmp: perm = 384

radutmp: callerid = yes

Module: Instantiated radutmp (radutmp)

Listening on authentication *:1812

Listening on accounting *:1813

Ready to process requests.

Y ya tenemos nuestro servidor configurado con EAP/PEAP!!!

Durante este proceso de configuración experimentamos un par

de problemas:

· Al inicializar el servidor, nos indicaba lo siguiente:

rlm_eap_tls: Loading the certificate file as a chain

rlm_eap: SSL error error:0906D06C:PEM

routines:PEM_read_bio:no start line

rlm_eap_tls: Error reading private key file

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 42/54

Page 43: Mini HOW-To Free Radius en Debian (WPA)

rlm_eap: Failed to initialize type tls

radiusd.conf[1]: eap: Module instantiation failed.

radiusd.conf[398] Unknown module "eap".

radiusd.conf[381] Failed to parse authenticate section.

La causa de este problema fue que por un error al tipear el

PASSWORD con que se crearon los certificados y el password

configurado para ellos en eap.conf no coincidà an. Utilizando los

mismos password este problema desapareció.

· Otro error que cometimos en un principio fue el configurar

freeradius como proxy pensando en dar acceso hacia internet.

Esto fue un error de concepto, ya que cuando un servidor

RADIUS actúa como proxy, su función es exclusivamente el

redireccionar determinados paquetes del protocolo RADIUS hacia

otros servidores RADIUS, y NO es un proxy http. Esta

configuración de proxy permite tener diferentes servidores

RADIUS, cada uno se encarguandose de funciones especà ficas

como accounting, authentication, etc.

2.4. Definición de grupos y usuarios de prueba

Para probar nuestro servidor crearemos 3 grupos de usuarios y

3 usuarios de prueba. Los grupos de usuarios los llamaremos

dromero, profesores y alumnos, y le asignaremos las VLANs 2, 3

y 4 respectivamente para asà aislar el tráfico de cada grupo

como si estuvieran en redes fà sicas individuales. Para insertar

estos grupos y usuarios a MySQL puedes referirte a la sección

1.2 de este tutorial.

Las propiedades para los grupos y usuarios quedarà an de la

siguiente manera:

Grupo admin

Auth-Type := EAP

Framed-Protocol := PPP

Service-Type := Framed-user

Framed-Compression := Van-Jacobsen-TCP-IP

Tunnel-Medium-Type := 6

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 43/54

Page 44: Mini HOW-To Free Radius en Debian (WPA)

Tunnel-Type := 13

Tunnel-Private-Group-Id := 2

Grupo profesores

Auth-Type := EAP

Framed-Protocol := PPP

Service-Type := Framed-user

Framed-Compression := Van-Jacobsen-TCP-IP

Tunnel-Medium-Type := 6

Tunnel-Type := 13

Tunnel-Private-Group-Id := 3

Grupo alumnos

Auth-Type := EAP

Framed-Protocol := PPP

Service-Type := Framed-user

Framed-Compression := Van-Jacobsen-TCP-IP

Tunnel-Medium-Type := 6

Tunnel-Type := 13

Tunnel-Private-Group-Id := 4

Tunnel-Type se refiere al protocolo que se utilizará para los

túneles.

'Framed-IP-Address'Tunnel-Medium-Type se refiere al medio de

transporte utilizado para los túneles.

Tunnel-Private-Group-Id se refiere al identificador del túnel a

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 44/54

Page 45: Mini HOW-To Free Radius en Debian (WPA)

utilizar (VLAN tag).

Información detallada acerca de los atributos de los túneles

puede ser encontrada en RFC 2868.

Usuario dromero perteneciente al grupo admin

Password := hola

Usuario profesor01 perteneciente al grupo profesores

Password := siempreflojo

Usuario alumno01 perteneciente al grupo alumnos

Password := copypaste

En el primer capitulo de este tutorial creamos un usuario que

tenà a en el atributo Framed-IP-Address una IP especificada. Al

utilizar EAP/PEAP estas IP no son utilizadas y esta función debe

seguir siendo realizada por un DHCP. El atributo Framed-IP-

Address fue creado para trabajar principalmente con usuarios

Dial-up como por ejemplo conexiones xDSL.

Ahora que nuestro servidor esta ejecutándose y que tenemos

ingresados los grupos y usuarios que usaremos estamos listos

para conectarnos a través de nuestro NAS.

2.5. Configuración del suplicante en Windows XP SP2

El primer paso es instalar el certificado del servidor. Este

certificado corresponde al archivo root.pem que está en la

carpeta raddb/certs de nuestro servidor. Deberemos copiar este

archivo a cada PC con el que queramos conectarnos a la red.

Para instalarlo comenzaremos por hacer doble click sobre él,

con lo cual aparecerá la siguiente ventana:

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 45/54

Page 46: Mini HOW-To Free Radius en Debian (WPA)

Luego hacemos click en Instalar Certificado...

Seleccionamos “Colocar todos los certificados en el siguiente

almacén†y apretamos “Examinar†.

Seleccionamos “Entidades emisoras raà z de confianza†y

apretamos “Aceptarâ€

Apretamos “Siguiente†y después finalizamos la

instalación del certificado.

Ahora lo único que falta es conectarnos!!!

Para eso iremos a ver las redes inalámbricas que están

disponibles:

En esta ventana debemos seleccionar la red a la cual nos

queremos conectar. En nuestro caso esta red se llama â

€œRadiusLab†y como se puede apreciar en la imágen posee

seguridad WPA.

Para ir a configurar esta red debemos hacer click en â

€œCambiar configuración avanzadaâ€.

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 46/54

Page 47: Mini HOW-To Free Radius en Debian (WPA)

Luego le damos a “Agregarâ€

Indicamos el nombre de nuestra red y seleccionamos WPA para

la autenticación y TKIP para el cifrado, ya que nuestro AP se ha

configurado con ese mecanismo y no con AES.

Luego nos vamos a la pestaña de “Autenticaciónâ€

Seleccionamos “EAP protegido PEAP†y luego nos vamos â

€œPropiedadesâ€

Aquà debemos dejar marcadas las opciones tal cual como se

indica en la imágen y en la lista de “Entidades emisoras de

certificados raà z de confianza†debemos buscar y seleccionar

el certificado de nuestro servidor que instalamos anteriormente.

Si este no aparece, significa que no se instaló correctamente o

que no lo instalamos en el amacén “Entidades emisoras

raà z de confianza†como se ha especificado en este tutorial. De

se este el caso debemor tratar de reinstalarlo, ya que sin él

NO podremos ingresar a la red.

Luego debemos ir a “Configurar†y en la ventana que

aparecerá dejar todo desmarcado.

Luego aceptamos todo una y otra vez hasta salir de la

configuración de la red y volver al listado de conexiones de

redes inalámbricas.

Seleccionamos nuestra red y apretamos “Conectarâ€

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 47/54

Page 48: Mini HOW-To Free Radius en Debian (WPA)

El suplicante procederá a conectarse y nos desplegará una

ventana en donde deberemos ingresar nuestro nombre de

usuario y password.

Ingresamos la información del usuario y luego apretamos â

€œAceptarâ€.

Si todo va bien lograremos autenticarnos logrando acceder a la

red.

De ocurrir algún problema, se no sindicará en la esquina

superior derecha, en el lugar en donde en la foto aparece â

€œConectadoâ€.

Si no hemos instalado el certificado del servidor o este no es

inválido la autenticación fallará y se nos bloqueará el acceso

a la red.

Al autenticarnos con este usuario en nuestro servidor veremos el

siguiente log:

rad_recv: Access-Request packet from host

192.168.100.185:1372, id=0, length=202

Message-Authenticator =

0x7fc3ea093d12cda33ad83cd169ed5bca

Service-Type = Framed-User

User-Name = "dromero"

Framed-MTU = 1488

Called-Station-Id = "00-18-6E-18-62-00:RadiusLab"

Calling-Station-Id = "00-0E-6A-9B-86-20"

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 48/54

Page 49: Mini HOW-To Free Radius en Debian (WPA)

NAS-Identifier = "3Com Access Point 7760"

NAS-Port-Type = Wireless-802.11

Connect-Info = "CONNECT 54Mbps 802.11g"

EAP-Message = 0x0200000c0164726f6d65726f

NAS-IP-Address = 192.168.100.185

NAS-Port = 3

NAS-Port-Id = "STA port # 3"

Processing the authorize section of radiusd.conf

.

. *muchos mensajes*

.

modcall[post-auth]: module "sql" returns ok for request 16

modcall: leaving group post-auth (returns ok) for request 16

Sending Access-Accept of id 8 to 192.168.100.185 port 1372

Framed-Protocol := PPP

Service-Type := Framed-User

Framed-Compression := Van-Jacobson-TCP-IP

Tunnel-Type:0 := VLAN

Tunnel-Medium-Type:0 := IEEE-802

Tunnel-Private-Group-Id:0 := "2"

MS-MPPE-Recv-Key =

0x7cfe3b6a3288cd2317c91bb8e3e79785d08506aba199e9bf1a58

253886bbd074

MS-MPPE-Send-Key =

0x98944f7295b2e93fe8a843bd9a73251a32b37918f3d9d0828eb5

a693d92f48ef

EAP-Message = 0x03080004

Message-Authenticator =

0x00000000000000000000000000000000

User-Name = "dromero"

Finished request 16

Going to the next request

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 49/54

Page 50: Mini HOW-To Free Radius en Debian (WPA)

Waking up in 5 seconds...

En donde entre otras cosas podemos ver que la respuesta final

fue un Access.Accept y que el usuario está dentro de la VLAN 2

(Tunnel-Private-Group-Id:0 := "2").

Si ingresamos con el usuario profesor01 y alumno01 veremos lo

siguiente:

rad_recv: Access-Request packet from host

192.168.100.185:1391, id=36, length=208

Message-Authenticator =

0x2e69d9b0d8c5a078c157f7e3f554e707

Service-Type = Framed-User

User-Name = "profesor01"

Framed-MTU = 1488

Called-Station-Id = "00-18-6E-18-62-00:RadiusLab"

Calling-Station-Id = "00-0E-6A-9B-86-20"

NAS-Identifier = "3Com Access Point 7760"

NAS-Port-Type = Wireless-802.11

Connect-Info = "CONNECT 54Mbps 802.11g"

EAP-Message = 0x0224000f0170726f6665736f723031

NAS-IP-Address = 192.168.100.185

NAS-Port = 3

NAS-Port-Id = "STA port # 3"

.

.

.

Sending Access-Accept of id 44 to 192.168.100.185 port 1391

Framed-IP-Address := 192.168.100.211

Framed-IP-Netmask := 255.255.255.0

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 50/54

Page 51: Mini HOW-To Free Radius en Debian (WPA)

Framed-Protocol := PPP

Service-Type := Framed-User

Framed-Compression := Van-Jacobson-TCP-IP

Tunnel-Medium-Type:0 := IEEE-802

Tunnel-Type:0 := VLAN

Tunnel-Private-Group-Id:0 := "3â€

MS-MPPE-Recv-Key =

0x1714c6bb40821fd973e97f7bbfa7a05110206fb083138414a453f

b4c08ab3b56

MS-MPPE-Send-Key =

0x6d7baa66c5cea48be8998e1bf9b04a46ae59905700e923b6f9a1

462da7ce3b22

EAP-Message = 0x032c0004

Message-Authenticator =

0x00000000000000000000000000000000

User-Name = "profesor01"

Finished request 8

Going to the next request

---------------------------------------------------------------------------

------------------------------------

rad_recv: Access-Request packet from host

192.168.100.185:1030, id=18, length=204

Message-Authenticator =

0x286de06d779a4fb34c5f0992036c45c1

Service-Type = Framed-User

User-Name = "alumno01"

Framed-MTU = 1488

Called-Station-Id = "00-18-6E-18-62-00:RadiusLab"

Calling-Station-Id = "00-0E-6A-9B-86-20"

NAS-Identifier = "3Com Access Point 7760"

NAS-Port-Type = Wireless-802.11

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 51/54

Page 52: Mini HOW-To Free Radius en Debian (WPA)

Connect-Info = "CONNECT 54Mbps 802.11g"

EAP-Message = 0x0212000d01616c756d6e6f3031

NAS-IP-Address = 192.168.100.185

NAS-Port = 1

NAS-Port-Id = "STA port # 1"

.

.

.

Sending Access-Accept of id 26 to 192.168.100.185 port 1030

Framed-IP-Address := 192.168.100.212

Framed-IP-Netmask := 255.255.255.0

Framed-Protocol := PPP

Service-Type := Framed-User

Framed-Compression := Van-Jacobson-TCP-IP

Tunnel-Medium-Type:0 := IEEE-802

Tunnel-Type:0 := VLAN

Tunnel-Private-Group-Id:0 := "4â€

MS-MPPE-Recv-Key =

0xe0149d60e451a3b6b9f7e9806f66786ae8a8ee42b26136dc8bb6

1107b6a93dce

MS-MPPE-Send-Key =

0xca9ca668a8580fa06b0ccf3a7c38798d3d7be0b247ae4d5f165dbf

7ce5f4d8ba

EAP-Message = 0x031a0004

Message-Authenticator =

0x00000000000000000000000000000000

User-Name = "alumno01"

Finished request 8

Going to the next request

Si la autenticación falla en vez de una Access-Accept veremos:

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 52/54

Page 53: Mini HOW-To Free Radius en Debian (WPA)

Publicar un comentario en la entrada

rad_recv: Access-Request packet from host

192.168.100.185:1367, id=7, length=246

Sending Access-Reject of id 7 to 192.168.100.185 port 1367

EAP-Message = 0x04070004

Message-Authenticator =

0x00000000000000000000000000000000

--- Walking the entire request list ---

Si hemos logrado ingresar a la red significa que nuestro servidor

y suplicante estan bien configurados y que nuestra red se

encuentra protegida con 802.1x. Luego podremos definir más

grupos y usuarios según vayan siendo los requerimeintos de la

red.

Con esto hemos concluà do nuestro tutorial, dejando en

funcionamiento una red inalambrica protegida con 802.1x (en

particular EAP/PEAP) que brinda acceso a una red fà sica dentro

de nuestra organización.

3. Referencias

1. FREERADIUS WIKI (http://wiki.freeradius.org/index.php/FAQ)

2. Authentication Server: Setting up FreeRADIUS

(http://www.tldp.org/HOWTO/8021X-HOWTO/freeradius.html)

3. The Freeradius-Users Archives

(https://list.xs4all.nl/pipermail/freeradius-users)

mar jul 15, 04:41:00 AM CEST

the root dijo...

Me alegro de que te haya funcionado. La verdad es que a mi me

funcionó de la manera que lo tengo explicado, pero como se

suele decir lo que a mi me ha funcionado no tiene porque

funcionarle a los demás. Bueno ahora a disfrutar de tu red

inálambrica segura.

Saludos.

mar jul 15, 07:49:00 AM CEST

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 53/54

Page 54: Mini HOW-To Free Radius en Debian (WPA)

Entrada más reciente Entrada antigua

Publicar un comentario en la entrada

Página principal

Suscribirse a: Enviar comentarios (Atom)

29-04-2011 Debianitas frikis: Mini HOW-TO Freeradi…

…blogspot.com/…/mini-how-to-freeradi… 54/54


Recommended