You are on page 1of 8

Instalar FreeRadius en Ubuntu (+ LDAP)

RADIUS (acrnimo en ingls de Remote Authentication Dial-In User Server).

Es

un

protocolo

de autenticacin y autorizacin para aplicaciones de acceso a la red o movilidad IP. Utiliza el puerto 1812 UDP para establecer sus conexiones. Cuando se realiza la conexin con un ISP mediante mdem, DSL, cablemdem, Ethernet o WiFi, se enva una informacin que generalmente es un nombre de usuario y una contrasea. Esta informacin se transfiere a un dispositivo Network Access Server (NAS) sobre el protocolo PPP, quien redirige la peticin a un servidor RADIUS sobre el protocolo RADIUS. El servidor RADIUS comprueba que la informacin es correcta utilizando esquemas de autenticacin

como PAP, CHAP o EAP. Si es aceptado, el servidor autorizar el acceso al sistema del ISP y le asigna los recursos de red como una direccin IP, y otros parmetros como L2TP, etc. Una de las caractersticas ms importantes del protocolo RADIUS es su capacidad de manejar sesiones, notificando cuando comienza y termina una conexin, as que al usuario se le podr determinar su consumo y facturar en consecuencia; los datos se pueden utilizar con propsitos estadsticos. FreeRadius es un servidor Radius de cdigo abierto.

(Fuente Wikipedia)

Para instalar un servidor freeRadius basta con usar los paquetes prpios de la distribucin Ubuntu: aptitude install freeradius freeradius-utils freeradius-ldap Con estos paquetes tendremos instalado el servidor, utilidades y el plugin para validaciones LDAP. Para instalar el OpenLDAP podemos seguir un artculo ya publicado en este blog: Instalar un servidor OpenLDAP en Ubuntu

Una vez instalado el servidor Radius y el servidor OpenLDAP, solo necesitaremos decirle al servidor freeradius que se autentifique con OpenLDAP:

En /etc/freeradius/sites-available/default descomentamos la linea que pone ldap para habilitar el mdulo LDAP

En /etc/freeradius/modules/ldap configuramos los parmetros de conexin con nuestro OpenLDAP

Con esto ya es suficiente para validarse (recordar reiniciar el servicio). Para probarlo podemos usar radtest: radtest usuario Contrasea localhost 0 testing123 NOTA: testing123 es la contrasea por defecto que tiene el parmetro secret en el archivo clients.conf .

Instalar un servidor OpenLDAP en Ubuntu


OpenLDAP es una implementacin libre y de cdigo abierto del protocolo Lightweight Directory Access Protocol (LDAP) desarrollada por el proyecto OpenLDAP. Est liberada bajo su propia licencia OpenLDAP Public License. LDAP es un protocolo de comunicacin independiente de la plataforma. Muchas distribuciones GNU/Linux incluyen el software OpenLDAP para el soporte LDAP. Este software tambin corre en plataformas BSD, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (NT y derivados, incluyendo 2000, XP, Vista), y z/OS.

Bsicamente, OpenLDAP posee tres componentes principales: slapd - Dominio de servidor y herramientas Bibliotecas que implementan el protocolo LDAP Programas cliente: ldapsearch, ldapadd, ldapdelete, entre otros

Adicionalmente, el proyecto OpenLDAP es anfitrin de los subproyectos: JLDAP - biblioteca de clases LDAP para Java JDBC-LDAP - controlador Java JDBC - LDAP ldapc++ - biblioteca de clases LDAP para C++

(Fuente Wikipedia) Instalarlo es sumamente sencillo. Simplemente tendremos que hacer lo siguiente:
sudo apt-get install slapd ldap-utils

Si usamos el archivo slapd.conf (en la versin 2.4.21 es opcional pero en breve dejar de usarse) podremos modificar los datos de administrador y asignarle una contrasea: Despus podemos crear la contrasea del usuario root:

slappasswd New password: Re-enter new password: {SSHA}cWB1VzxDXZLf6F4pwvyNvApBQ8G/DltW

y aplicarla al archivo /etc/ldap/slapd.conf


database bdb suffix "dc=admineithel,dc=es" rootdn "cn=Manager,dc=admineithel,dc=es" rootpw {SSHA}cWB1VzxDXZLf6F4pwvyNvApBQ8G/DltW

En versiones nuevas (2.4.21 o superiores) el archivo slapd.conf no existe a menos de que vengamos de una migracin. Tampoco hay una contrasea por defecto de inicio (en la instalacin no nos pide ninguna contrasea tampoco), as que deberemos introducirle esta informacin basndonos en la linea de comandos.Yo
en estos casos aconsejaria ejecutar el siguiente script que facilitar la administracin (este script incluye la instalacin de los paquetes). ===========cortar por aqui=========================

#!/bin/bash fqdn="dc=dominio,dc=es" organisation="MI_ORGANIZACION" admin_pass_plain="mipass_plano" uri="ldapi://%2fvar%2frun%2fslapd%2fldapi/" # ---------------------------------------------------------------mkdir -p tmp chmod 750 tmp echo;echo "Installing packages" aptitude -y install slapd ldap-utils ldapscripts admin_pass=`slappasswd -s $admin_pass_plain` echo;echo "Base schemas" ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

echo;echo "Backend" cat > tmp/backend.ldif << EOF dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: $fqdn olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,$fqdn olcRootPW: $admin_pass olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcLastMod: TRUE olcDbCheckpoint: 512 30 olcAccess: to attrs=userPassword by dn="cn=admin,$fqdn" write by anonymous auth by self write by * none olcAccess: to attrs=shadowLastChange by self write by * read olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=admin,$fqdn" write by * read EOF ldapadd -Y EXTERNAL -H ldapi:/// -f tmp/backend.ldif echo;echo "Frontend" cat > tmp/frontend.ldif << EOF dn: $fqdn objectClass: top objectClass: dcObject objectclass: organization o: $organisation dc: $organisation description: $organisation dn: cn=admin,$fqdn objectClass: simpleSecurityObject objectClass: organizationalRole

cn: admin description: LDAP administrator userPassword: $admin_pass dn: ou=people,$fqdn objectClass: organizationalUnit ou: people dn: ou=groups,$fqdn objectClass: organizationalUnit ou: groups dn: ou=machines,$fqdn objectClass: organizationalUnit ou: machines EOF ldapadd -x -D cn=admin,$fqdn -w $admin_pass_plain -f tmp/frontend.ldif echo;echo "Indexes" cat > tmp/indexes.ldif << EOF dn: olcDatabase={1}hdb,cn=config add: olcDbIndex olcDbIndex: uid eq,pres,sub olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: memberUid eq olcDbIndex: uniqueMember eq EOF ldapmodify -Y EXTERNAL -H ldapi:/// -f tmp/indexes.ldif /etc/init.d/slapd restart echo;echo "Authentication" cat > /etc/ldap.conf << EOF base $fqdn uri $uri ldap_version 3 #binddn #bindpw rootbinddn cn=admin,$fqdn timelimit 5 bind_timelimit 5 pam_password md5 EOF

ln -fs ../ldap.conf /etc/ldap/ldap.conf cat > /etc/ldapscripts/ldapscripts.conf << EOF SERVER="$uri" BINDDN="cn=admin,$fqdn" #BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" BINDPWDFILE="/etc/ldap.secret" SUFFIX="$fqdn" GSUFFIX="ou=groups" USUFFIX="ou=people" MSUFFIX="ou=machines" GIDSTART="10000" UIDSTART="10000" MIDSTART="20000" CREATEHOMES="no" PASSWORDGEN="" RECORDPASSWORDS="no" PASSWORDFILE="/var/log/ldapscripts_passwd.log" LOGFILE="/var/log/ldapscripts.log" TMPDIR="/tmp" LDAPSEARCHBIN="/usr/bin/ldapsearch" LDAPADDBIN="/usr/bin/ldapadd" LDAPDELETEBIN="/usr/bin/ldapdelete" LDAPMODIFYBIN="/usr/bin/ldapmodify" LDAPMODRDNBIN="/usr/bin/ldapmodrdn" LDAPPASSWDBIN="/usr/bin/ldappasswd" GETENTPWCMD="getent passwd" GETENTGRCMD="getent group" GTEMPLATE="" UTEMPLATE="" MTEMPLATE="" EOF rm /etc/ldapscripts/ldapscripts.passwd aptitude -y install libnss-ldap

echo -n $admin_pass_plain > /etc/ldap.secret chmod 400 /etc/ldap.secret auth-client-config -t nss -p lac_ldap pam-auth-update echo "session required pam_mkhomedir.so" > /etc/pam.d/common-session.new cat /etc/pam.d/common-session >> /etc/pam.d/common-session.new mv /etc/pam.d/common-session.new /etc/pam.d/common-session #rm -rf tmp

===========cortar por aqui=========================

You might also like