Asterisk

Como usar autenticação com MD5 nos endpoints SIP do Asterisk

Quais as vantagens de utilizar autenticação com MD5 ao criar um endpoint no Asterisk?

A principal vantagem (talvez a única) é fazer com que as senhas dos endpoints não fiquem visíveis na CLI.

Para continuar, verifique se o módulo MD5 já está instalado e carregado no seu Asterisk.

Bash
asterisk -rx 'core show function MD5'

O comando acima deverá retornar as informações sobre o MD5 no Asterisk.

Aqui está outra forma de verificar se o módulo já está carregado.

Bash
module show like func_md5.so

Se tudo estiver certo e o módulo já estiver carregado, você deverá ver algo parecido com isso:

Bash
Module                         Description                              Use Count  Status      Support Level
func_md5.so                    MD5 digest dialplan functions            0          Running              core
1 modules loaded

Se por algum motivo o módulo ainda não estiver carregado, você poderá carrega-lo com o seguinte comando:

Bash
asterisk -rx 'module load func_md5.so'

Se ainda assim o módulo não aparecer como carregado, você vai precisar recompilar o Asterisk e selecionar a opção MD5 no “make menuselect”.

Agora que já estamos com o módulo instalado e carregado no Asterisk, precisamos entender como gerar o hash MD5.

Para gerar o hash, você precisará destas três informações:

  • username (usuário do endpoint)
  • password (senha do endpoint)
  • realm (por padrão é “asterisk”)

Você pode obter o realm utilizando estes comandos para SIP ou para PJSIP.

Bash
asterisk -rx "pjsip show settings" | grep "realm"
asterisk -rx "sip show settings" | grep "realm"

Agora que temos o módulo em execução e as informações necessárias, vamos para a criação do hash.

O hash pode ser criado com base nessa estrutura (username:realm:secret).

Lembre-se de substituir para os dados reais da sua estrutura.

Bash
echo -n "2001:asterisk:123456" | md5sum

O resultado será uma string com este formato: 2e40add36ae0d26b72cdc4003f3f7148

Agora no arquivo “/etc/asterisk/pjsip.conf”, localize as configurações de autenticação do endpoint e altere para fique desta forma:

Bash
[auth2001]
type=auth
auth_type=md5
username=2001
md5_cred=2220963c4b5d243ea8d5471b7a767d2a

Após as alterações recerregue as configurações do PJSIP.

Bash
asterisk -rx "pjsip reload"

Aqui está a diferença entre o método de autenticação userpass e MD5.

asterisk -rx "pjsip show auth auth2001"

Saída com o método userpass:

Asterisk com método de autenticação userpass

Saída com o método MD5:

Asterisk com método de autenticação MD5

Com relação aos endpoints (softphone, gateway, etc) nenhuma alteração será necessária, pois para este dispositivos a senha continua sendo a mesma.

O que mudamos aqui foi apenas a forma com que eles são exibidas na CLI do Asterisk.

Espero ter contibuído!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *