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: 59.443 ]

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

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

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

Leitura recomendada

Slackware descomplicado para iniciantes

APT-GET sem CD: criando repositórios locais

Cluster de Virtualização com Ganeti

ProFTPD com autenticação via MySQL

Autenticação de cliente 802.1x WPA utilizando EAP-TTLS FreeRADIUS + Samba + LDAP

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts