Para ello necesitamos comprender los protocolos
WPA1/2 enterprise
EAP/PEAP/TTLS
AAA
AAA viene de Autorización, Autenticación y Accounting, que en español nos dice los pasos de filtrado que tenemos con WPA (Wi-Fi Protected Access) o Acceso Wifi Protegido.y por ultimo EAP (Extensible Authentication Protocol) o protocolo de autenticación extensible.
PEAP es una proposicion conjunta entre Microsoft, Cisco y Rsa Security, esta presente en muchos productos y provee una buena seguridad a la autenticación del cliente. Es similar en diseño a EAP-TTLS solo que este requiere solo un certificado PKI del lado servidor para crear un tunel tls seguro para la transmisión de datos.
Unas siglas mas aca y mencionamos el diccionario completo, pero por largo que sea es recomendable familiarizarse con los terminos ya que seran pronunciados mas adelante.
Los pasos que seguiremos para completar este manual son:
Instalar el sistema operativo.
Instalar openssl
Generar lo certificados digitales
Instalar y configurar freeradius
Configurar Access Point.
Configurar los clientes.
Anotamos lo séte.
Ip del Ap que se conectara.
Passprhse o palabra clave entre el ap y servidor radius.
Passprhase o palabra clave para sellar certificados.
Una ves instalado el sisitema operativo, en este caso utilizamos centos, lo instalamos en su version minima.
Luego instalamos openssl.
# yum install openssl
Empezamos a generar los certificados digitales, nos situamos dentro del directorio /etc/ssl
# cd /etc/ssl
# medir private
# medir newcerts
# touch index.txt
# echo '01' > serial
Editamos el archivo /etc/pki/tls/openssl.cnf y en la linea
dir = ../../CA # Where everything is kept
Cambiamosla a
dir = /etc/ssl
Luego de esto procedemos a crear el certificado
Para crear un certificado de autoridad autofirmado.
# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650
Se mostrara en la pantalla algo como esto
Generating a 1024 bit RSA private key
..++++++
..++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:PY
State or Province Name (full name) [Berkshire]:Ñeembucu
Locality Name (eg, city) [abbottabad]:Pilar
Organization Name (eg, company) [ciit]:DptoInformatica
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:faplicadas
Completar estos datos depende de su entorno, yo puse los datos que corresponden a mi realidad.
Crear un certificado de solicitud de servidor, tome nota del password que le colocara.
openssl req -new -nodes -keyout server_key.pem -out server_req.pem -days 730
En la pantalla se nos mostrara algo como esto
Generating a 1024 bit RSA private key
.......++++++
..................................++++++
writing new private key to 'server_key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:PY
State or Province Name (full name) [Berkshire]:Ñeembucu
Locality Name (eg, city) [abbottabad]:Pilar
Organization Name (eg, company) [ciit]:DptoInformatica
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:Pialr
Email Address []: This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []( El password que anotamos)
An optional company name []:
Firmamos el certificado de autoridad del servidor creado anterirmente.
Ahora creamos una xpextensions
# cat 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
# openssl ca -policy policy_anything -out server_cert.pem -extensions xpserver_ext -extfile /etc/ssl/xpextensions -infiles /etc/ssl/server_req.pem
Al ejecutar este comando veremos algo como esto.
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/ssl/private/cakey.pem: (Contraseña anotada)
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jun 10 03:22:22 2008 GMT
Not After : Jun 10 03:22:22 2009 GMT
Subject:
countryName = py
stateOrProvinceName = Ñeembucu
localityName = Pilar
organizationName = DptoInformatica
commonName = Pilar
emailAddress = This e-mail address is being protected from spambots. You need JavaScript enabled to view it
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Server Authentication
Certificate is to be certified until Jun 10 03:22:22 2009 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Crearemos ahora el archivo del servidor con la llave del servidor y su certificado
# cat server_key.pem server_cert.pem > server_keycert.pem
Creamos el cetificado del cliente a solicitar
# openssl req -new -keyout client_key.pem -out client_req.pem -days 730
Generating a 1024 bit RSA private key
.........++++++
..............++++++
writing new private key to 'client_key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:pk
State or Province Name (full name) [Berkshire]:pakhtoonkhwa
Locality Name (eg, city) [abbottabad]:abbottabad
Organization Name (eg, company) [ciit]:ciit
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ciitwifi
Email Address []: This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:whateverdotwhat
An optional company name []:
Ahora firmaremos el certificado del clienteusadno el certificado de autoridad creado anteriormente (Incluido las extensiones XP) Obs: De pedirle un passprhrase coloquenle el que se habia anotado desde un inicio.
# openssl ca -policy policy_anything -out client_cert.pem -extensions xpclient_ext -extfile /etc/ssl/xpextensions -infiles /etc/ssl/client_req.pem
Luego exportamos el certificado del cliente en el formato apropiado (P12) para un cliente XP. Obs: Cualquier password o passprhase debe ser el mismo en e l que anotamos o si en caso de cambiar anotemoslo.
# openssl pkcs12 -export -in client_cert.pem -inkey client_key.pem -out client_cert.p12 –clcerts
Por ultimo en cuanto a certificados exportamos el certificado root del servidor en un formato apropiado para clientes Xp
# openssl x509 -setalias " This e-mail address is being protected from spambots. You need JavaScript enabled to view it " -outform DER -in cacert.pem -out cacert.der
He aquí que podemos disponer y copiar a una carpeta o dispositivo movil los archivos client_cert.p12 y cacert.der, recuerden que estos dos archivos seran usados para autenticarnos contra el servidor radius de tal manera a crear el tunneling de datos previsto por el modulo EAP de freeradius, de otra forma no seriamos capaces de conectarnos al AP.
Pensaban que termino, no, la tortura sigue (en sentido literal), parece tedioso todo estos pasos pero como todo en la vida, hay que sacrificarse para obtener logros, le parecera tanto para una conexión simple de wíreless pero recuerde algo, si usted precia de la validez de sus datos y de la confidencialidad de los mismos no pestañeara en decidir hacer todo esto. Bueno siguiendo el hilo del tema, ahora pasaremos a instalar y configurar freeradius para que el mismo se encargue de leer los certficados que realizamos. En la consola.
# yum install freeradius
Ahora borraremos todos los certificados que tenga freeradius y que los haya instalas por defecto.
# rm –Rf /etc/raddb/demoCA
Creamos una copia de la carpeta certs dentro de raddb
# mv /etc/raddb/certs /etc/raddb/back_certs
Luego de esto borramos certs y creamos otra carpeta en su lugar con el mismo nombre
# rm –Rf /etc/raddb/certs
# mkdir /etc/raddb/certs
Trasladamos los certificados que creamos en la seccion anterior a la carpeta de freeradius
# cp /etc/ssl/cacert.pem /etc/raddb/certs/ -v
# cp /etc/ssl/server_keycert.pem /etc/raddb/certs/ -v
Creamos los paramotros Diffie-Hellman para el archivo TLS.
# openssl dhparam -check -text -5 512 -out dh
Obs: Acuerdese que todos los comandos openssl lo hacemos situados dentro de la carpeta /etc/ssl.
Copiamos El dh a la carpeta de freeradius
# cp /etc/ssl/dh /etc/raddb/certs –v
Ahora nos trasladamos a la carpeta de certificados de frerdius para crear el archivo random.
# cd /etc/raddb/certs
# dd if=/dev/urandom of=random count=2
Recuerde que el demonio(proceso o servicio) de freeradius arranca con la autoria del usuario radiusd, asi que los certificadso tendran que ser leidos por ese ususario.
Para ello cambiamos los premisos y asignamos propietario.
# chown -R radiusd /etc/raddb/certs
Ahora cambiemos, habilitemos o comentemos las lineas que sean necesaria para que el archivo /etc/raddb/eap.conf quede como este.
eap {
default_eap_type = ttls
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls {
private_key_password = aquí el password que habiamos anotado
private_key_file = ${raddbdir}/certs/server_keycert.pem
certificate_file = ${raddbdir}/certs/server_keycert.pem
CA_file = ${raddbdir}/certs/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
}
ttls {
default_eap_type = mschapv2
use_tunneled_reply = yes
}
peap {
default_eap_type = mschapv2
}
mschapv2 {
}
}
Ahora nuestro servidor radius tiene que reconocer a los ap que le solicitaran tunneling tls y autenticación, para ello añadimos al archivo /etc/raddb/clients.conf la séte. Linea.
client 192.168.1.X {
secret =
shortname = AP3200
nastype = other
}
Cerciórese que en el archivo /etc/raddb/radius.conf queden como aquí se describe.
log_auth = yes
authorize {
preprocess
chap
mschap
suffix
pap
eap
files
}
authenticate{
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
# unix
eap
}
Por ultimo modifiquemos y agreguemos la séte. Linea al archivo /etc/raddb/users
“Fulano” Cleartext-Password := "1223456"
Recuerde que Fulano sera el usuario que se autenticara en el cliente xp cuando se le pida ingreso de ususario y contraseña, el resto se explica por si solo.
Reiniciemos el servidor freeradius.
# /etc/init.d/radiusd restart
No esta demas hechar una miradita al log ubicado en /var/log/radiusd/radius.log
La instalacion de los certificados y validación de la red en el cliente lo haremos en un video manual para que quede mas claro.












