Professional Documents
Culture Documents
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
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 .
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:
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