Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mini HOW-To Free Radius en Debian (WPA)
Mini HOW-To Free Radius en Debian (WPA)
Compartir
Siguiente blog
Crear un blog
Acceder
debianitas frikis
EMP TY YO UR CO MP UTER. BE W INDO W SLESS, SHAP ELESS. LIKE LINUX. YO U PUT LINUX INTO A P C AND IT BECO MES THE P C. YO U PUT IN A LAPTO P, IT BECO MES THE LAPTO P. LINUX CAN FLO W , O R IT CAN C RASH. BE LINUX, MY FR IEND!
Esta obra est bajo una licencia de C reative C ommons. Ahora mismo hay
blogspot.com//mini-how-to-freeradi
1/54
29-04-2011
Para montar el servidor con Freeradius yo he usado Debian etch (cmo no?!). Es un Athlon XP 64 bits con 80 gb de disco. La implementacin de Freeradius se puede llevar a cabo en todas las distribuciones Linux, aqu slo me centrar en instalarlo y configurarlo en Debian, con lo que es posible que algunos comandos cambien en tu distribucin, as como la localizacin de mucho archivos. C omo siempre que uses un Linux no necesitars una mquina muy potente para implementar una gran cantidad de servicios (no como en esos Gindoces que necesitan ordenadores de la NASA para soportar un simple IIS ;-) ) 3.- Compilando Freeradius desde las fuentes. Si an ests 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 "tcnico". 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 ms 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 (REC OMENDADO): Esta es la manera ms 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 versin 1.1.5 (versin 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 ests como root no necesitars 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` --withrlm_sql_postgresql_include_dir=`pg_config --includedir` ya que nosotros no queremos soporte para PostgreSQL. 4.- Creacin e instalacin de certificados. Una vez tenemos instalado Freeradius en nuestra mquina 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 raz:
blogspot.com//mini-how-to-freeradi
2/54
29-04-2011
CA.root
#En negrita las variables que se tienen que especificar. # C APL. Es el ejecutable de perl C A.pl que en Debian normalmente lo deberas 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 C A.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 demoC A $OPENSSL req -new -x509 -days $VALIDFOR -keyout $PEMDIR/newreq.pem -out \ $PEMDIR/newreq.pem -passin pass:$PASSWD -passout pass:$PASSWD echo "${PEMDIR}/newreq.pem" | $C APL -newca >/dev/null $OPENSSL pkcs12 -export -in demoC A/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:
blogspot.com//mini-how-to-freeradi
3/54
29-04-2011
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
blogspot.com//mini-how-to-freeradi
4/54
29-04-2011
$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 C LNAME=$1 PASSWD=$2 ROOTPASSWD=$3 mkdir -p $PEMDIR $P12DIR $DERDIR $PASSDIR if [ -z "${C LNAME}" ]; then echo "WARNING: client name not specified. Using \"client\"." C LNAME=client fi if [ -z "${PASSWD}" ]; then echo "No password specified, trying $PASSDIR/$C LNAME.pass." if [ -a $PASSDIR/$C LNAME.pass ]; then PASSWD=`cat $PASSDIR/$C LNAME.pass` else echo "Not found. Generating password, see $PASSDIR/$C LNAME.pass for contents." PASSWD=`$KEYGEN | head -c 16` cat /dev/null > $PASSDIR/$C LNAME.pass echo $PASSWD >> $PASSDIR/$C LNAME.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`
blogspot.com//mini-how-to-freeradi
5/54
29-04-2011
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/$C LNAME.p12 -clcerts -passin pass:$PASSWD -passout pass:$PASSWD $OPENSSL pkcs12 -in $P12DIR/$C LNAME.p12 -out $PEMDIR/$C LNAME.pem -passin \ pass:$PASSWD -passout pass:$PASSWD $OPENSSL x509 -inform PEM -outform DER -in $PEMDIR/$C LNAME.pem out \ $PEMDIR/$C LNAME.der rm -rf $PEMDIR/newcert.pem $PEMDIR/newreq.pem Ahora slo 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 raz: $ ./C A.root [password] El argumento "password" es opcional (pero te recomiendo ponerlo). En el proceso se te preguntarn 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: $ ./C A.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 ests creando y root-password es el password que espacificaste anteriormente al crear
blogspot.com//mini-how-to-freeradi
6/54
29-04-2011
root.pass.
el certificado raz, si no pusiste ninguno el slo buscar el archivo Se te volvern a preguntar una serie de cosas, cuando se te pregunte por "common name" debes poner el fully-qualified domainname (FQDN) del servidor (para saberlo hostname -fqdn) Finalmente creamos el certificado de cliente: $ ./C A.client client-name [password [root-password]] Donde client-name puede ser el nombre del cliente (lo mejor sera 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, necesitars repetir este paso para todos los clientes que quieras autenticar. Ahora toca instalar los certificados. C opia los ficheros der/root.der y p12/client-name.p12 al cliente XP. Primero instala el certificado raz 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 opicn C olocar todos los certificados en el siguiente almacn y tras pulsar Examinar se tiene que seleccionar el almacn "Entidades emisoras raz de confianza 5. C lick Siguiente para finalizar. Siguiente, instala el certificado de cliente: 1. Doble click en nombreFQDNDelC liente.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 C A.client. 4. Elegir la opcin Seleccionar automticamente el almacn de certificados en base al tipo de certificado. 5. C lick "Siguiente" para finalizar. En el servidor RADIUS debemos hacer los siguiente: Primero, crearemos un repositorio de certificados, por ejemplo podemos elegir: /etc/autoridad-wifi C omo root ejecutamos: # mkdir /etc/autoridad-wifi C opia las claves privadas: # cp pem/root.pem pem/server-name.pem /etc/autoridad-wifi Ahora toca asginar los permisos correctos a las claves. C omo
blogspot.com//mini-how-to-freeradi
7/54
29-04-2011
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 C onfigurando el corazn 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 # C onfiguration of this RADIUS server. # # IMPORTANT: THIS FILE C ONTAINS SEC RETS. # 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
blogspot.com//mini-how-to-freeradi
8/54
29-04-2011
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 C hecker checkrad = ${sbindir}/checkrad # Security options security { max_attributes = 200 reject_delay = 1 status_server = no } # DON'T proxy requests proxy_requests = no # C LIENTS C ONFIGURATION # Include the clients here. $INC LUDE ${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 C ONFIGURATION modules {
blogspot.com//mini-how-to-freeradi
9/54
29-04-2011
# 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 C A_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}/%{C lient-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
blogspot.com//mini-how-to-freeradi
10/54
29-04-2011
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 }
blogspot.com//mini-how-to-freeradi
11/54
29-04-2011
} # MODULE INSTANTIATION instantiate { expr daily } # AUTHORISATION PROC ESS authorize { preprocess eap files } # AUTHENTIC ATION PROC ESS authenticate { eap } # AC C OUNTING preacct { preprocess files } accounting { acct_unique detail radutmp } session { radutmp } post-auth { } Base de datos de puntos de acceso.
Aqu necesitars la clave que asignaste al certificado de servidor (C A.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 C ONTAINS SEC RETS. # 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")
blogspot.com//mini-how-to-freeradi
12/54
29-04-2011
} 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 HAC KERS NO SON BIENVENIDOS y t no tienes permiso para entrar en esta red, desiste de intentar conectarte. MRC HATE!!!!! / HAC KERS AREN'T WELC OME HERE and you don't have permission to enter this network, please desist to retry. GO AWAY!!!!!" Por cada mquina cliente que quieras conectar debers tener una lnea 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 deberamos 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 configuracin va web del AP, y en la seccin de configuracin 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 mnimo, Service Pack 1 de Windows XP y el hotfix Q815485 (descargable a travs de microsoft). Normalmente windows debera detectar automticamente todas las redes wifi al alcance de nuestra mquina cliente. Accederemos a la lista de las redes disponibles (pulsando doble click en el icono de los dos ordenadores que aparecern 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 automticamente har la autenticacin contra freeradius y se conectar a nuestra nueva y flamante red segura wifi.
blogspot.com//mini-how-to-freeradi
13/54
29-04-2011
8.- Conclusiones.
Si ests leyendo esto es porque acabaste el HOW-TO y ya tienes tu red wifi ms segura o porque no entendiste nada y an 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. C omo habris visto hay una gran diferencia entre tener una red con WEP y una red con WPA. Juzgar vosotros mismos. Por ltimo quera mandar un avso a todos de la proliferacin de las redes wifi gemelas, esto consiste en crear una red de las mismas caractersticas a una red que exista, con el mismo SSID y dems, as cuando un usuario (con pocas luces por cierto) quiera conectarse a la red ver dos redes iguales y por equivocacin 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.
9 comentarios:
minu dijo...
Algo de ayuda a la comunidad?. Nen, tu comunidad bloggera somos los de siempre (Laia, lex, Norma, Minu... y poco ms). Si quieres ayudarnos vuelve a ser el de antao y no nos hables en xino to. Por cierto, si me echas un cable con cambiar mi plantilla te estar eternamente agradecido que tengo un mierdn que lo flipas y no me mola nada. vie may 11, 12:17:00 PM C EST
blogspot.com//mini-how-to-freeradi
14/54
29-04-2011
the root dijo...
cameraphp dijo...
Hola, soy nuevo en esto, lme llamo Juan Pablo C amera logre seguir al pie de la letra tus pasos, pero cuanto ejecuto ./C A.server server-name [password [root-password]] ./C A.client client-name [password [root-password]] me da el sgte error bash: ./C A.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 C EST
cameraphp dijo...
Favor enviar pronta respuesta y muchas gracias de antemano vie jul 04, 12:35:00 AM C EST
blogspot.com//mini-how-to-freeradi
15/54
29-04-2011
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 C A.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 Pea romero.cl@gmail.com Escuela de Ingenier a Informtica Universidad Diego Portales Santiago, C hile.
C ontenidos:
1. C onfiguraci n de Servidores. 1 1.1. Descarga e instalaci n de freeradius. 1 1.2. Instalaci n de MySQL 4.1. 5 1.3. C onfiguraci n base de freeradius. 6
blogspot.com//mini-how-to-freeradi
16/54
29-04-2011
1. C onfiguraci n de Servidores
En el presente cap tulo se explicar como instalar freeradius y MySQL en un sistema Debian, dejndolo en funcionamiento con su configuraci n por defecto. Para esto necesitaremos un PC que cuente con el sistema operativo anteriormente sealado recin instalado, sin programas ajenos a la distribuci n del sistema, y con su interfaz de red ya configurada para acceder a Internet.
El primer paso es obtener el c digo fuente o un paquete prehecho 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.
blogspot.com//mini-how-to-freeradi
17/54
29-04-2011
C on esto los archivos sern 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 C ompiler C ollection, antes GNU C C ompiler). En Debian podemos instalar gcc simplemente ejecutando:
blogspot.com//mini-how-to-freeradi
18/54
29-04-2011
Para solucionar este error debemos instalar el paquete libc6-dev, correspondiente a GNU C Library: Development Libraries and Header Files. C on esto el sistema quedar en condiciones de crear los archivos ejecutables.
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... C omo lo menciona el mensaje, lo que falta es instalar la aplicaci n make. Para esto nuevamente recurriremos a apt:
blogspot.com//mini-how-to-freeradi
19/54
29-04-2011
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# ./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=.
blogspot.com//mini-how-to-freeradi
20/54
29-04-2011
OK
Luego ejecutamos:
C on 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
blogspot.com//mini-how-to-freeradi
21/54
29-04-2011
Ready to process requests.
C on 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 pequeo 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
blogspot.com//mini-how-to-freeradi
22/54
29-04-2011
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. C on esto podemos verificar que a lo menos el servidor se esta ejecutando de manera correcta.
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:
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. C ommands 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.
blogspot.com//mini-how-to-freeradi
23/54
29-04-2011
mysql>
Luego ejecutamos las siguientes instrucciones SQL, las que crearn la base de datos con el nombre radius, crearn un usuario tambin de nombre radius con todos los permisos sobre esta base de datos y le asignarn 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 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 algn 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');
blogspot.com//mini-how-to-freeradi
24/54
29-04-2011
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);
C on esto hemos creado un usuario dromero con password dromero, el cual pertenece al grupo admin que posee un conjunto de atributos determinados. Adems hemos agregado un NAS de nombre test, tipo 3coml, y secret radiusUDP. 1.3. C onfiguraci n base de freeradius
C omo 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 almacenarn en MySQL, por lo que no tocaremos este archivo.
El archivo clients.conf se utiliza para configurar los NAS con que interacta 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:
blogspot.com//mini-how-to-freeradi
25/54
29-04-2011
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:
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:
blogspot.com//mini-how-to-freeradi
26/54
29-04-2011
} authenticate { Auth-Type PAP { pap } Auth-Type C HAP { chap } Auth-Type MS-C HAP { mschap } } preacct { preprocess acct_unique suffix } accounting { detail radutmp sql } session { radutmp sql } post-auth { sql }
blogspot.com//mini-how-to-freeradi
27/54
29-04-2011
pre-proxy { } post-proxy { eap }
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 C HAP Module: Instantiated chap (chap) Module: Loaded MS-C HAP 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
blogspot.com//mini-how-to-freeradi
28/54
29-04-2011
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): C onnected new DB handle, #0 . . . Initializing the thread pool... Listening on authentication *:1812 Listening on accounting *:1813 Ready to process requests.
C ada fabricante provee una interfs 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 ms detalles consulte el manual del NAS que utilizar. 2.2. C reaci 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 pblico, por lo que procederemos a crear certificados propios.
blogspot.com//mini-how-to-freeradi
29/54
29-04-2011
OpenSSL.
Teniendo instalado OpenSSL debemos proceder a configurarlo para nuestra mquina. 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:
[ C A_default ]
dir = ./demoC A 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/demoC A/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 interacta con 2 scripts ms que se encuentran en el mismo directorio: C A.all y C A.certs.
blogspot.com//mini-how-to-freeradi
30/54
29-04-2011
Adicionalmente, en el archivo C A.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. # C OUNTRY="C L" PROVINC E="Regi n Metropolitana" C ITY="Santiago" ORGANIZATION="UDP" ORG_UNIT=`RadiusUDP` PASSWORD="radiusUDP" C OMMON_NAME_C LIENT="RadiusUDP C lient certificate" EMAIL_C LIENT="client@example.com"
blogspot.com//mini-how-to-freeradi
31/54
29-04-2011
#### Una vez editados estos 3 archivos crearemos los certificados ejecutando: #sh certs.sh
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/
blogspot.com//mini-how-to-freeradi
32/54
29-04-2011
C on 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/.
Nuevamente deberemos ir a editar los archivos radiusd.conf y eap.conf para habilitar la autenticaci n con eap/peap y mschapv2.
eap.conf
tls { private_key_password = radiusUDP private_key_file = ${raddbdir}/certs/cert-srv.pem certificate_file = ${raddbdir}/certs/cert-srv.pem C A_file = ${raddbdir}/certs/demoC A/cacert.pem dh_file = ${raddbdir}/certs/dh random_file = ${raddbdir}/certs/random }
peap {
blogspot.com//mini-how-to-freeradi
33/54
29-04-2011
default_eap_type = mschapv2 }
mschapv2 { } }
Lo que hicimos fue configurar como eap predeterminado peap, habilitar las contraseas mschapv2 y configurar las rutas hacia los diferentes certificados que creamos en la secci n anterior adems 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.
La configuraci n de las otras secciones ser la siguiente (lo que no aparece aqu se deja como viene por defecto):
blogspot.com//mini-how-to-freeradi
34/54
29-04-2011
instantiate { exec expr } authorize { preprocess eap sql } authenticate { Auth-Type MS-C HAP { mschap } eap } preacct { preprocess acct_unique suffix } accounting { detail radutmp sql }
session {
blogspot.com//mini-how-to-freeradi
35/54
29-04-2011
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 C onfig: including file: /usr/local/etc/raddb/proxy.conf C onfig: including file: /usr/local/etc/raddb/clients.conf C onfig: including file: /usr/local/etc/raddb/eap.conf C onfig: 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
blogspot.com//mini-how-to-freeradi
36/54
29-04-2011
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
blogspot.com//mini-how-to-freeradi
37/54
29-04-2011
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: C A_path = "(null)"
blogspot.com//mini-how-to-freeradi
38/54
29-04-2011
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: C A_file = "/usr/local/etc/raddb/certs/demoC A/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
blogspot.com//mini-how-to-freeradi
39/54
29-04-2011
blogspot.com//mini-how-to-freeradi
40/54
29-04-2011
blogspot.com//mini-how-to-freeradi
41/54
29-04-2011
Module: Loaded detail
detail: detailfile = "/usr/local/var/log/radius/radacct/%{C lientIP-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.
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
blogspot.com//mini-how-to-freeradi
42/54
29-04-2011
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 acta 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.
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 trfico 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 quedaran de la siguiente manera:
Grupo admin
Auth-Type := EAP Framed-Protocol := PPP Service-Type := Framed-user Framed-C ompression := Van-Jacobsen-TC P-IP Tunnel-Medium-Type := 6
blogspot.com//mini-how-to-freeradi
43/54
29-04-2011
Tunnel-Type := 13 Tunnel-Private-Group-Id := 2
Grupo profesores
Auth-Type := EAP Framed-Protocol := PPP Service-Type := Framed-user Framed-C ompression := Van-Jacobsen-TC P-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-C ompression := Van-Jacobsen-TC P-IP Tunnel-Medium-Type := 6 Tunnel-Type := 13 Tunnel-Private-Group-Id := 4
Tunnel-Type se refiere al protocolo que se utilizar para los tneles. 'Framed-IP-Address'Tunnel-Medium-Type se refiere al medio de transporte utilizado para los tneles.
blogspot.com//mini-how-to-freeradi
44/54
29-04-2011
utilizar (VLAN tag).
Informaci n detallada acerca de los atributos de los tneles puede ser encontrada en RFC 2868.
Password := hola
Password := siempreflojo
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 DHC P. El atributo Framed-IPAddress fue creado para trabajar principalmente con usuarios Dial-up como por ejemplo conexiones xDSL.
Ahora que nuestro servidor esta ejecutndose y que tenemos ingresados los grupos y usuarios que usaremos estamos listos para conectarnos a travs de nuestro NAS. 2.5. C onfiguraci 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:
blogspot.com//mini-how-to-freeradi
45/54
29-04-2011
Para eso iremos a ver las redes inalmbricas que estn 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 imgen posee seguridad WPA.
Para ir a configurar esta red debemos hacer click en C ambiar configuraci n avanzada.
blogspot.com//mini-how-to-freeradi
46/54
29-04-2011
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.
Aqu debemos dejar marcadas las opciones tal cual como se indica en la imgen 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 amacn 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 aceptamos todo una y otra vez hasta salir de la configuraci n de la red y volver al listado de conexiones de redes inalmbricas. Seleccionamos nuestra red y apretamos C onectar
blogspot.com//mini-how-to-freeradi
47/54
29-04-2011
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 algn problema, se no sindicar en la esquina superior derecha, en el lugar en donde en la foto aparece C onectado.
Si no hemos instalado el certificado del servidor o este no es invlido la autenticaci n fallar y se nos bloquear el acceso a la red.
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 C alled-Station-Id = "00-18-6E-18-62-00:RadiusLab" C alling-Station-Id = "00-0E-6A-9B-86-20"
blogspot.com//mini-how-to-freeradi
48/54
29-04-2011
blogspot.com//mini-how-to-freeradi
49/54
29-04-2011
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").
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 C alled-Station-Id = "00-18-6E-18-62-00:RadiusLab" C alling-Station-Id = "00-0E-6A-9B-86-20" NAS-Identifier = "3C om Access Point 7760" NAS-Port-Type = Wireless-802.11 C onnect-Info = "C ONNEC T 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
blogspot.com//mini-how-to-freeradi
50/54
29-04-2011
Framed-Protocol := PPP Service-Type := Framed-User
Framed-C ompression := Van-Jacobson-TC P-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 C alled-Station-Id = "00-18-6E-18-62-00:RadiusLab" C alling-Station-Id = "00-0E-6A-9B-86-20" NAS-Identifier = "3C om Access Point 7760" NAS-Port-Type = Wireless-802.11
blogspot.com//mini-how-to-freeradi
51/54
29-04-2011
blogspot.com//mini-how-to-freeradi
52/54
29-04-2011
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 ms grupos y usuarios segn vayan siendo los requerimeintos de la red.
C on 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
blogspot.com//mini-how-to-freeradi
53/54
29-04-2011
Publicar un comentario en la entrada Entrada ms reciente
Pgina principal
Entrada antigua
blogspot.com//mini-how-to-freeradi
54/54