Я только что повысил безопасность Asterisk, следуя этому руководству:
https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial#SecureCallingTutorial-Keys
Обратите внимание, что asterisk не устанавливается по умолчанию с srtp по умолчанию. Чтобы иметь возможность следовать этому руководству, вы должны установить asterisk с libsrtp и pjsip. Вот как я установил asterisk для поддержки 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
В любом случае, это не является частью вопроса.
Поэтому я последовал инструкциям и смог совершать зашифрованные звонки.
Пока я повторял шаги, чтобы подключить все телефоныЯ не понял, зачем мне нужно генерировать сертификат для каждого SIP-устройства.. На сервере уже есть один сертификат, почему телефонам нужен еще один сертификат? Другими словами, я не понял, почему мне нужно было выполнить шаг из руководства, в котором говорится:
«мы генерируем клиентский сертификат для нашего 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
Поэтому с одним из телефонов я решил пропустить этот шаг просто из любопытства. Я не сгенерировал клиентский сертификат для телефона X, и по какой-то причине телефон X все равно смог подключиться к asterisk и совершать звонки. Телефон X также выдавал замочек на экране при совершении звонков, что означало, что звонок был зашифрован. Asterisk показал, что звонок проходил через SRTP.Я не смог заметить разницу между телефонами с сертификатом CLIENT и телефоном X. Поэтому у меня вопрос: почему в руководстве говорится, что нужно сгенерировать сертификат клиента?
решение1
Раньше я использовал SRTP с Asterisk, не требуя клиентского сертификата, но, как уже отмечалось, это позволяет контролировать доступ на основе издателя сертификата и гарантировать источник SIP-запроса.
Это позволяет вам подтвердить, что телефон настроен вами, а не просто случайным человеком, который нашел ваш SIP-сервер. Так же, как сервер представляет сертификат при использовании TLS, вы можете подтвердить, что сервер не является просто случайной атакой Man-in-the-Middle из-за сложности создания действительного дубликата сертификата. Если вы единственный, кто может выдать сертификат для ваших SIP-устройств, то только устройства с вашим сертификатом являются настоящими устройствами, все остальное — просто мошенничество.
Начните здесь и следуйте по пути взаимной аутентификации:https://en.wikipedia.org/wiki/Клиентский_сертификатА также это:https://en.wikipedia.org/wiki/AAA_(компьютерная_безопасность)
SRTP — это всего лишь механизм шифрования, который позволяет вам не допустить прослушивания разговора другими людьми при использовании чего-то вроде Wireshark в открытой сети. Представьте себе открытый Wi-Fi в вашем местном кафе. Однако одного SRTP недостаточно для гарантии безопасности; то, что связь зашифрована, не означает, что источник или пункт назначениядействительный.