Realtime-ldap en Asterisk 1.6
1.- Instalación.
Aparte de las típicas librerías y programas de compilación, necesitamos las librerías de desarrollo libxml2-dev y libldap2-dev.
./configure –with-ldap para tener el soporte del módulo res_config_ldap. Podemos comprobar si está activado con make menuselect. Procedemos a compilar e instalar.
2.- Configuración.
* Antes de comenzar comentar que tanto el esquema asterisk.schema como el archivo res_ldap.conf tienen erratas, no funcionará con las que instala por defecto. Las tenéis que sustituir por las que podéis descargar Aquí.
Copiamos el archivo asterisk.schema en /etc/ldap/schema y agregamos la entrada siguiente en slapd.conf:
include /etc/ldap/schema/asterisk.schema
Reiniciamos el servidor ldap
Los archivos de configuración son los mismos, tenemos el extconfig.conf donde activamos y configuramos las partes que queremos manejar con ldap:
;iaxusers => odbc,asterisk
;iaxpeers => odbc,asterisk
sipusers => ldap,"dc=dominio,dc=com",sip
sippeers => ldap,"dc=dominio,dc=com",sip
;sipregs => odbc,asterisk
voicemail => ldap,"dc=dominio,dc=com",voicemail
;extensions => ldap,"dc=dominio,dc=com",extensions
;queues => ldap,"dc=dominio,dc=com",queue
;queue_members => odbc,asterisk
;musiconhold => mysql,asterisk
;queue_log => mysql,aasterisk
Dejamos comentadas las que no usaremos.
Y en el res_ldap.conf configuramos los datos del servidor ldap, que quedaría así:
host=localhost
port=389
;url=ldap://ldap3.mydomain.com:3890 ← si el servidor ldap es remoto
protocol=3
basedn=dc=dominio,dc=com
user=cn=admin,dc=dominio,dc=com *
pass=password
* Como medida de seguridad le asignaremos permisos 660 a este archivo, para que no pueda ser vista la contraseña por nadie que no sea el root.
El resto del archivo declara las variables usadas por ldap, lo dejamos como está.
Reiniciamos asterisk y si todo va bien la salida del comando'realtime ldap status' nos dejará algo como esto:
“Connected to 'ldap://localhost:389', baseDN dc=dominio,dc=com with username cn=admin,dc=dominio,dc=com for 1 minutes, 8 seconds.”
3.- Creación de usuarios.
Básicamente tenemos que respetar, en este orden, estos dos objectClass: “asteriskExtension” y “asteriskSIPUser” que tienen como atributo obligado “cn” y permiten todos los declarados en el res_ldap.conf. Un ejemplo sencillo sería este:
dn: cn=100,ou=asterisk,dc=dominio,dc=com
cn: 100
objectClass: top
objectClass: device
objectClass: asteriskExtension
objectClass: asteriskSIPUser
AstAccountType: friend
AstAccountRealmedPassword: {MD5}md5pass (1)
AstAccountNAT: no
AstAccountCallerID: Antonio
AstAccountCanReinvite: no
AstAccountHost: dynamic
AstAccountQualify: yes
AstAccountMailbox: 100@default
(1)- Para crear las contraseñas MD5 (y no aparezcan en texto plano al hacer búsquedas):
echo -n "usuario:realm:contraseña" | md5sum
El realm es asterisk, con lo que un ejemplo sería echo -n "100:asterisk:pass" | md5sum
Las salida es la contraseña que hay que colocar después de {MD5}, sin espacios y quitando el guión y el espacio que aparece.
Por supuesto antes tenemos que crear la unidad organizacional “asterisk”:
dn: ou=asterisk,dc=dominio,dc=com
ou: asterisk
objectClass: top
objectClass: organizationalUnit
Podemos compartir la configuración ldap con postfix, samba, etc.
Agrego un par de datos para las modificaciones realtime:
1) Modificar el usuario 100 pasándolo al contexto restringido:
realtime update sipusers name 100 context restringido
2) Forzar desregistro de la extensión 100:
sip prune realtime user 100