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.
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.
module show like func_md5.so
Se tudo estiver certo e o módulo já estiver carregado, você deverá ver algo parecido com isso:
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:
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.
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.
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:
[auth2001]
type=auth
auth_type=md5
username=2001
md5_cred=2220963c4b5d243ea8d5471b7a767d2a
Após as alterações recerregue as configurações do PJSIP.
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:
Saída com o método 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.