Configurando o Asterisk com autenticação LDAP

O Asterisk é um PBX VoIP capaz de integrar-se com a telefonia convencional. Esse tutorial tem como finalidade auxiliar na configuração do Asterisk utilizando como base de dados o serviço de diretórios LDAP.

[ Hits: 65.117 ]

Por: Fabrício Rodrigo em 22/06/2010


Integrando o Asterisk ao LDAP



O Asterisk possui muitos recursos. Nesta seção serão abordados os seguintes tópicos: o módulo SIP, módulo de extensão e configuração para acesso a base do LDAP.

2) Configuração SIP:

Os usuários SIP serão armazenados no serviço de diretórios. Edite o arquivo sip.conf com as seguintes configurações gerais:

[general]
videosupport=yes
allow=all
bindaddr=0.0.0.0
realm=dominio.com

Onde:
  • videosupport: habilita o suporte ao streaming de vídeo.
  • allow: lista os codecs permitidos, allow libera todos.
  • bindaddr: IP do dispositivo que será vinculado. "0.0.0.0" permitirá escutar todos os dispositivos disponíveis.
  • realm: domínio de autenticação.

3) Definindo contexto:

Assim como os usuários SIP, as extensões serão configuradas na base de dados do LDAP. Algumas configurações gerais serão armazenadas no arquivo /etc/asterisk/extensions.conf. Edite-o e salve as alterações:

[users]
switch => Realtime/@

[echo]
switch => Realtime/@

[default]
include => users
include => echo

Nessa configuração serão definidos três contextos: default, users, echo. O contexto default subdivide em users e echo. A expressão "switch => Realtime/@" define que as extensões do contexto serão acessadas em tempo real, no diretório LDAP.

4) Ativando configurações externas:

Para que seja ativado o acesso a informações externas, é necessário que sejam definidas as seguintes configurações dentro do arquivo /etc/asterisk/extconfig.conf:

[settings]
sipusers => ldap,"dc=dominio,dc=com",sip
sippeers => ldap,"dc=dominio,dc=com",sip
extensions => ldap,"dc=dominio,dc=com",extensions

Através dessa configuração informamos ao Asterisk que os usuários SIP estarão localizados no diretório LDAP (DN = dominio.com), nas OU sipusers e sippeers. As extensions serão armazenadas na OU extensions.

5) Mapa de atributos de configuração:

Para que o Asterisk acesse as configurações é necessário que seja feito o mapa correlacionando as variáveis de configuração do Asterisk com os atributos correspondentes no diretório LDAP. Para isso deve ser configurado o arquivo /etc/asterisk/res_ldap.conf, editando as seguintes variáveis:

[_general]
url=ldap://dominio.com:389
protocol=3
basedn="dc=dominio,dc=com"
user=cn=adminldap
pass=senhaadminldap

[config]
additionalFilter=(objectClass=AstConfig)
filename = AstConfigFilename
category = AstConfigCategory
variable_name = AstConfigVariableName
variable_value = AstConfigVariableValue
cat_metric = AstConfigCategoryMetric
commented = AstConfigCommented

[extensions]
context = AstContext
exten = AstExtension
priority = AstPriority
app = AstApplication
appdata = AstApplicationData
additionalFilter=(objectClass=AsteriskExtension)

[sip]
name = cn
amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup
callerid = AstAccountCallerID
canreinvite = AstAccountCanReinvite
context = AstAccountContext
dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser
fromdomain = AstAccountFromDomain
fullcontact = AstAccountFullContact
host = AstAccountHost
ipaddr = AstAccountIPAddress
insecure = AstAccountInsecure
mailbox = AstAccountMailbox
md5secret = AstAccountRealmedPassword
nat = AstAccountNAT
deny = AstAccountDeny
permit = AstAccountPermit
pickupgroup = AstAccountPickupGroup
port = AstAccountPort
qualify = AstAccountQualify
restrictcid = AstAccountRestrictCID
rtptimeout = AstAccountRTPTimeout
rtpholdtimeout = AstAccountRTPHoldTimeout
type = AstAccountType
disallow = AstAccountDisallowedCodec
allow = AstAccountAllowedCodec
MusicOnHold = AstAccountMusicOnHold
regseconds = AstAccountExpirationTimestamp
regcontext = AstAccountRegistrationContext
regexten = AstAccountRegistrationExten
CanCallForward = AstAccountCanCallForward
defaultuser = AstAccountDefaultUser
regserver = AstAccountRegistrationServer
lastms = AstAccountLastQualifyMilliseconds
useragent = AstAccountUserAgent
additionalFilter = (objectClass=AsteriskSIPUser)

Obs.: Dentro de [_general] ficam as configurações de acesso ao LDAP, onde:
  • url: URL do servidor LDAP;
  • protocol: versão do protocolo LDAP;
  • basedn: base DN para consultas;
  • user: nome do usuário adminisrador do LDAP;
  • pass: senha do usuário adminisrador do LDAP.

Página anterior     Próxima página

Páginas do artigo
   1. Instalação do Asterisk com suporte ao LDAP
   2. Integrando o Asterisk ao LDAP
   3. Configurando LDAP
   4. Povoando LDAP
   5. Testando conexão com LDAP
   6. Instalando e configurando o cliente VoIP
Outros artigos deste autor

Instalação e configuração do Bacula com interface web (Bweb/Brestore)

Instalação e configuração do Snort Inline (modo IPS), Baynard2, Mysql e PulledPork no Debian Squeeze

Webacula - Instalação e Configuração no Ubuntu 10.04

Leitura recomendada

Instalação e configuração do fluxbox-devel

Xen: Criando dom0 e domU no Fedora

Bluetooth no Debian 4.0

Administrando Memória SWAP no GNU/Linux

Como configurar o MySQL no Slackware

  
Comentários
[1] Comentário enviado por removido em 22/06/2010 - 11:03h

Alguem consegue me explicar oque é LDAP, por que parece isso não entra na minha cabeça.

[2] Comentário enviado por m4sk4r4 em 22/06/2010 - 14:57h

Bom o Artigo, já tem algum tempo que tenho tentado integrar o asterisk a uma base LDAP mas
não tinha sucesso, principalmente quando se tratava do schema do Asterisk para LDAP apresentava
incompatibilidade.

Vou testar seu artigo depois e ver como se comporta essa integração.

Me tire uma dúvida, numa base LDAP onde temos o Samba integrado como controlador de domínio
e onde os usuários modificam a senha através do windows pelo ctrl+alt+del, teriamos alguma forma
de utilizar a mesma senha de logon para as contas sip?

Abraço e Parabéns!!!

[3] Comentário enviado por renato_pacheco em 22/06/2010 - 21:48h

Poutz, mano! Muito fera o lance da integração do LDAP + Asterisk. Não sabia q isso era possível! Eu ainda não sei como faço pra instalar e fazer o Asterisk funcionar, mas o LDAP eu já aprendi anteriormente como se faz. Tem algum tuto ou algo semelhante q vc possa me passar sobre Asterisk? Add aos favoritos!!!

[4] Comentário enviado por fabriciorodrigo em 23/06/2010 - 08:29h

m4sk4r4, tecnicamente falando creio que tenha como fazer essa integração. No tópico 5, quando é mapeada as variáveis do asterisk para o LDAP,, é utilizado o mesmo login cn para identificação dos usuários, ou seja, com o login não teria problema. Porém o asterisk tem um atributo no schema responsável palo armazenamento da senha de acesso, que é o "AstAccountRealmedPassword".

Nessa situação que você me colocou, acho que existem duas possibilidades:
1. Fazer um script paralelo que quando o atributo de senha do usuário no samba é alterado, automaticamente seja alterado o atributo referente a senha no asterisk.
2. Alterar o mapa de variáveis direcionando o atributo de senha do asterisk para o correspondente no samba.

Tecnicamente falando creio que funcione, mas só testando mesmo pra saber. Se poder colaborar de alguma forma, fico a disposição.


renato, tem muita coisa na rede sobre o asterisk, tem algumas referências (as mais relevantes) no final do tutorial. Mais algumas interessantes são:
http://mestreasterisk.com.br/
http://www.dicas-l.com.br/dicas-l/20091213.php
http://www.asteriskonline.com.br
http://www.anderson.com.pt/asterisk-html
http://www.vivaolinux.com.br/artigo/Asterisk-O-PBX-de-codigo-aberto/




[5] Comentário enviado por fabriciorodrigo em 23/06/2010 - 08:33h

Victor, em poucas palavras, o LDAP é um "banco de dados" organizado de forma hierarquica. Tem muita coisa na rede sobre.

[6] Comentário enviado por thyago162 em 09/07/2015 - 10:03h

Otimo tutorial, porém to encontrando um problema. Quando vou cadastrar o usuário no softphone seja Zoipe ou X-litle, no terminal do asterisk está aparecendo "wrong password". Eu vi no arquivo res_ldap.conf que a senha tem que ser em MD5, mesmo gerando o MD5 e colocando a senha ele continua dando este erro. Alguma ideia?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts