Acabei de adicionar segurança ao Asterisk seguindo este tutorial:
https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial#SecureCallingTutorial-Keys
Observe que o asterisk não é instalado por padrão com o srtp por padrão. Para poder seguir esse tutorial você deve instalar o asterisk com libsrtp e pjsip. Aqui está como instalei o asterisk para oferecer suporte ao srtp:
# (1) make sure everything is up to date
apt-get update
apt-get upgrade
# (2) Install dependencies that will be needed in order to install asterisk pjproject etc...
apt-get install aptitude -y
aptitude install build-essential -y
aptitude install git -y
aptitude install libssl-dev -y
aptitude install zlib1g-dev -y
aptitude install openssl -y
aptitude install libxml2-dev -y
aptitude install libncurses5-dev -y
aptitude install uuid-dev -y
aptitude install sqlite3 -y
aptitude install libsqlite3-dev -y
aptitude install pkg-config -y
aptitude install libjansson-dev -y
# (3) make sure everything is up to date again
apt-get update
apt-get upgrade
# (4) Install libsrtp (library used to encrypt rtp)
cd /root
wget https://github.com/cisco/libsrtp/archive/v1.6.0.tar.gz
tar -xzf v1.6.0.tar.gz
cd libsrtp-1.6.0
./configure CFLAGS=-fPIC --prefix=/usr
make
make runtest
make install
cd ..
# (5) install pjproject
git clone https://github.com/asterisk/pjproject pjproject
cd pjproject
./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --with-external-srtp
make dep
make
make install
cd ..
# (6) Install Asterisk WITH SRTP AND PJPROJECT
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvf asterisk-13-current.tar.gz
cd asterisk-13.19.2
./configure --with-pjproject --with-ssl --with-srtp
make
make install
make samples
make config
De qualquer forma, isso não faz parte da questão.
Então segui o tutorial e consegui fazer chamadas criptografadas.
Enquanto repetia os passos para conectar todos os telefonesNão entendi porque tive que gerar um certificado para cada dispositivo sip. O servidor já possui um certificado, por que os telefones precisam de outro certificado? Em outras palavras, não entendi porque tive que realizar a etapa do tutorial que diz:
"geramos um certificado de cliente para nosso dispositivo SIP"
./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm
Então, com um dos telefones resolvi pular essa etapa só por curiosidade. Não gerei um certificado de cliente para o telefone X e, por algum motivo, o telefone X ainda conseguiu se conectar ao asterisk e fazer chamadas. O Phone X também bloqueou a tela ao fazer chamadas, o que significa que a chamada foi criptografada. O Asterisk mostrou que a chamada estava passando pelo SRTP.Não consegui perceber a diferença entre os telefones que tinham um certificado de CLIENTE e o telefone X. Então, minha pergunta é: por que o tutorial diz para você gerar um certificado de cliente?
Responder1
Já usei SRTP com Asterisk antes sem exigir certificado de cliente, mas como apontado, isso permite controlar o acesso com base no emissor do certificado e garantir a origem da solicitação SIP.
Isso permite que você valide se o telefone foi configurado por você, e não apenas por alguém aleatório que encontrou seu servidor SIP. Assim como um servidor apresentando um certificado ao usar TLS, você pode confirmar que o servidor não é apenas um ataque aleatório do tipo Man-in-the-Middle devido à dificuldade de produzir um certificado válido e duplicado. Se você é o único que pode emitir certificados para seus dispositivos SIP, então apenas os dispositivos com seu certificado são os dispositivos reais, todo o resto é apenas uma farsa.
Comece aqui e siga a trilha para autenticação mútua:https://en.wikipedia.org/wiki/Client_certificateTambém isto:https://en.wikipedia.org/wiki/AAA_(computer_security)
SRTP é apenas um mecanismo de criptografia que permite impedir que outras pessoas ouçam a conversa ao usar algo como o Wireshark em uma rede aberta. Pense em wi-fi aberto em sua cafeteria local. Porém, apenas o SRTP em si não é suficiente para garantir a segurança; só porque a comunicação é criptografada, não significa que a origem ou o destino sejaválido.