Запись телефонных разговоров в Asterisk

Опишу пример настройки записи телефонных разговоров в Asterisk, первым делом убедимся что загружены необходимые модули.

Подключимся к консоли Asterisk и посмотрим/загрузим модули следующими командами:

sudo asterisk -r
module show like МОДУЛЬ
module load МОДУЛЬ

Для автозагрузки модули указываются в файле /etc/asterisk/modules.conf, открыть его можно например текстовым редактором nano (в нем клавиши Ctrl+X для выхода, y/x и Enter для сохранения или отмены изменений):

sudo nano /etc/asterisk/modules.conf

Следующие строки нужны для загрузки модулей:

load => res_monitor.so
load => func_strings.so
load => func_callerid.so
load => app_dial.so
load => func_periodic_hook.so
load => format_wav.so

Откроем конфигурационный файл extensions.conf например тем же редактором nano:

sudo nano /etc/asterisk/extensions.conf

Добавим в нужный диалплан две строки, в первой укажем с каким именем сохранять файл, а во второй куда сохранять, третья ваша стандартная и т.д.(вместо wav можно указать другой кодек, например gsm чтоб файлы были меньшего размера, кстати gsm можно воспроизводить используя QuickTime):

[sip-dialout]
exten => 6000,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M)}-${CALLERID(number)}-${EXTEN})
exten => 6000,2,Monitor(wav,/home/andrew/monitor/${fname},mb)
exten => 6000,3,Dial(SIP/6000)

Подключимся к Asterisk и перезагрузим конфигурацию диалплана:

sudo asterisk -r
dialplan reload

Теперь при звонках на номер 6000 будет записываться разговор в указанную директорию, например с именами в виде 201610281731-6001-6000.wav (дата-звонящий_номер-номер_куда_звонят).

Настройка Fail2Ban под Asterisk

На тесте буду использовать Asterisk 13.1.0 и Fail2Ban 0.9.3-1 установленные в Ubuntu Server 16.04.1 LTS.

Установим Fail2Ban как я писал в этой статье — Установка и настройка Fail2ban

Откроем конфигурационный файл Asterisk отвечающий за логирование событий в /var/log/asterisk/messages:

sudo nano /etc/asterisk/logger.conf

Добавим security в messages:

messages => notice,warning,error,security

Перезапустим систему логирования asterisk:

sudo asterisk -rvv
logger reload
quit

Добавим файл настроек Asterisk в директорию с конфигурацией Fail2Ban тем самым активировав наблюдение его логов:

sudo nano /etc/fail2ban/jail.d/asterisk.conf

где 86400 в секундах = 24 часа, то есть злоумышленник будет блокироваться на сутки.

[asterisk]
enabled = true
bantime = 86400

Либо изменим в файле /etc/fail2ban/jail.conf где [asterisk-tcp] и [asterisk-udp] параметр false на true.

Перезапустим fail2ban чтобы новый файл настроек загрузился:

sudo fail2ban-client reload

Проверим работу:

sudo fail2ban-client status asterisk

Все, теперь Fail2Ban будет блокировать IP-адреса с которых не верно вводятся пароли к аккаунтам Asterisk.

Добавление SIP клиентов в Asterisk

SIP клиенты в Asterisk указываются в файле sip.conf, поэтому откроем его например в текстовом редакторе nano (Ctrl+X для выхода из редактора, y или n для сохранения или отмены изменений):

sudo nano /etc/asterisk/sip.conf

Сначала укажем следующий параметр, запретив принимать анонимные звонки:

allowguest=no

Теперь в самом конце файла добавим клиента:

[6000]
type=friend
secret=ПАРОЛЬ 
nat=no
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip-dialout
callerid=6000
deny=0.0.0.0/0
permit=192.168.0.10/32

Кратко опишу параметры которые я указывал:
type — тип клиента, может быть user (идентификация по паролю), peer (идентификация по адресу хоста), fried (либо по паролю, либо по хосту).
secret — пароль пользователя.
nat=no — указывает, что клиент может быть за NAT, смотрите мою статью по поводу этого Звонок через NAT.
host=dynamic — нет привязки клиента к адресу хоста.
dtmfmode=rfc2833 — метод передачи dtmf тонов набора номера.
disallow=all — запрет всех кодеков.
allow=ulaw — разрешим только кодек ulaw
context=sip-dialout — имя диалплана (он описывается в extensions.conf)
callerid=6000 — внутренний номер телефона клиента.
deny=0.0.0.0/0 — запрещаем подключение со всех IP адресов.
permit=192.168.0.10/32 — разрешаем подключение только с указанного IP адреса.

После добавления клиента подключимся к Asterisk и обновим конфигурацию sip:

sudo asterisk -r
sip reload

Посмотреть список клиентов можно командой:

sip show users

Для выхода из консоли Asterisk наберем:

quit

Теперь уже можно подключится добавленному клиенту к серверу Asterisk используя например программу X-Lite, Zoiper или VoIP телефон, но звонить пока некуда, поэтому добавим для теста второго клиента в sip.conf:

[6001]
type=friend
secret=ПАРОЛЬ
nat=no
host=dynamic 
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip-dialout
callerid=6001
deny=0.0.0.0/0
permit=192.168.0.10/32

Откроем в редакторе файл extensions.conf:

sudo nano /etc/asterisk/extensions.conf

И укажем в его конце следующие строки, чтобы пользователи могли звонить друг другу:

[sip-dialout]
exten => 6000,1,Dial(SIP/6000)
exten => 6001,1,Dial(SIP/6001)

Перезапустим Asterisk чтобы применить изменения:

sudo service asterisk restart

Все, мы добавили двух пользователей и они могут звонить друг другу.

Смотрите также:
Добавление SIP клиента во FreePBX

Установка Asterisk в Ubuntu Server

Приведу пример быстрой установки Asterisk на Ubuntu Server.
На тесте установлю на версиях 14.04 LTS и 16.04 LTS.

Сначала проверим есть ли обновления для системы и установим их:

sudo apt-get update
sudo apt-get upgrade

Выполним установку Asterisk:

sudo apt-get install asterisk

Установим дополнительные компоненты:

sudo apt-get install dahdi asterisk-dahdi asterisk-mp3 asterisk-mysql asterisk-core-sounds-ru asterisk-core-sounds-ru-g722 asterisk-core-sounds-ru-gsm asterisk-dev asterisk-core-sounds-ru-wav lame

Посмотреть запущен ли Asterisk и его версию можно командами:

ps aux | grep asterisk
sudo netstat -tap | grep asterisk
sudo netstat -na | grep 5060
sudo netstat -na | grep :5060 | wc -l
asterisk -V

Подключится к консоли Asterisk можно командой:

sudo asterisk -vvr

На этом установка Asterisk завершена, так как мы не ставили лишних веб-интерфейсов для управления, а для опытных пользователей и тонкой настройки они и не нужны, то все настройки необходимо выполнять в конфигурационных файлах которые находятся в директории /etc/asterisk/.

В файле sip.conf в блоке [general] изменим указанные параметры в целях безопасности:

alwaysauthreject=yes
allowguest=no

И перезапустим asterisk:

sudo service asterisk restart

В случае неполадок можно анализировать приходящие пакеты например через tcpdump:

tcpdump -i any -vnn -s0 port 5060
tcpdump -i any -vnn -s0 port 5060 and net 192.168.1.0/24

Если используется IPTables, то читайте мою статью — IPTables правила для Asterisk

Читайте другие мои статьи о настройках.

Установка Digium Asterisk GUI

Digium Asterisk GUI — web-интерфейс управления Asterisk.

Сегодня буду лепить его к Asterisk 11 на Ubuntu Server 14.04 LTS.
Переключимся сразу на root пользователя:

sudo -i

Скачаем его:

apt-get install subversion
mkdir -p ~/asterisk-gui
cd ~/asterisk-gui
svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0/

Скомпилируем и установим:

cd 2.0
./configure
make
make install

На всякий случай сделаем копию файлов конфигурации Asterisk:

cp -r /etc/asterisk /etc/asterisk.original

Откроем конфигурационный файл manager.conf например в редакторе nano (Ctrl+X для выхода из редактора, y/n для сохранения или отмены изменений):

nano /etc/asterisk/manager.conf

Основные параметры которые должны быть настроены в конфигурационном файле manager.conf:

[general]
enabled = yes
webenabled = yes
bindaddr = 0.0.0.0
[ИМЯ_ПОЛЬЗОВАТЕЛЯ]
secret = ПАРОЛЬ
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config

В самом конце файла заменим обязательно символ # на ; иначе не сможете зайти под прописанным выше логином и паролем.

Теперь отредактируем http.conf:

nano /etc/asterisk/http.conf

В нем укажем следующие параметры веб сервера:

enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
prefix=asterisk

Выполним проверку настроек:

make checkconfig

Удалим пустую папку и укажем ссылку на реальную с файлами веб-сервера:

rmdir /usr/share/asterisk/static-http/
ln -s /var/lib/asterisk/static-http/ /usr/share/asterisk/

Перезапустим Asterisk:

/etc/init.d/asterisk restart

Теперь Digium Asterisk GUI должен открываться по ссылке http://192.168.56.102:8088/asterisk/static/config/index.html, где 192.168.56.102 это IP или домен севрера с Asterisk.

Для входа укажем логин и пароль прописанные ранее в файле manager.conf

Все.

Установка Asterisk + FreePBX

Сегодня буду устанавливать Asterisk на Ubuntu Server 14.04 LTS и FreePBX 12 в качестве интерфейса управления.

И так, переключимся сразу на root пользователя:

sudo -i

Проверим есть ли обновления для системы и установим их:

apt-get update
apt-get upgrade

Установим необходимые компоненты:

apt-get install build-essential linux-headers-`uname -r` apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libiksemel-dev libiksemel-utils libiksemel3

Перезагрузим систему:

reboot

Снова переключимся на пользователя root и установим PearDB (последнюю версию можно посмотреть на сайте http://pear.php.net/package/DB/download):

sudo -i
pear uninstall db
pear channel-update pear.php.net
pear install -Z db-1.7.14
pear list

Можно обновить все командой:

pear upgrade-all

Скомпилируем и установим Lame (это кодек mp3, его можно также установить автоматически командой sudo apt-get install lame):

cd /usr/src
wget https://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
tar zxvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
make install

Скомпилируем и установим DAHDI (драйвер для плат, его также можно установить автоматически командой sudo apt-get install dahdi):

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar xvfz dahdi-linux-complete-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-*
make all
make install
make config

Скомпилируем и установим LibPRI (необходимая библиотека, можно установить также через apt-get install libpri1.4):

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
tar xvfz libpri-current.tar.gz
cd /usr/src/libpri-*
make
make install

Скомпилируем и установим PJSIP (необходимая библиотека):

cd /usr/src
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
tar -xjvf pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install

Скомпилируем и установим jansson:

cd /usr/src
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf -i
./configure
make
make install

Посмотрим какая новая версия Asterisk есть на официальном сайте http://downloads.asterisk.org/pub/telephony/asterisk/, я взял последнюю asterisk-13, скомпилируем и установим её:

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvfz asterisk-13-current.tar.gz
cd asterisk-*
./configure
contrib/scripts/get_mp3_source.sh
make menuselect

Для поддержки mp3 включим модуль ‘format_mp3’, отметим также что связано с mysql, в Core Sound Packages отметим поддержку русских файлов, в Extra Sound Packages выберем дополнительные звуковые файлы и выберем «Save & Exit».

Продолжаем установку:

make
make install
make config
ldconfig

Посмотрим новую версию FreePBX на официальном сайте https://www.freepbx.org/ и скачаем её:

cd /usr/src
wget http://mirror.freepbx.org/freepbx-12.0.43.tgz
tar zxvf freepbx-*.tgz
cd /usr/src/freepbx

Создадим пользователя Asterisk и зададим права:

useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk

Изменим некоторые настройки в конфигурационном файле Apache2:

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Kiev"/g' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/'  /etc/apache2/apache2.conf
service apache2 restart

Создадим базы данных MySQL:

mysqladmin -u root -p create asterisk
mysqladmin -u root -p create asteriskcdrdb

Создадим пользователя и пароль для доступа к базам MySQL:

mysql -u root -p -e "GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'ПАРОЛЬ';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'ПАРОЛЬ';"
mysql -u root -p -e "flush privileges;"

Запустим Asterisk и установим FreePBX:

cd /usr/src/freepbx
./start_asterisk start
./install_amp --installdb --username=asterisk --password=ПАРОЛЬ

Для FreePBX нужно активировать mod_rewrite модуль в apache2:

a2enmod rewrite
service apache2 restart

Подключится к консоли Asterisk можно командой:

asterisk -vvr

В браузере набрав IP сервера должна открываться панель FreePBX.

У меня в панели FreePBX отобразилось уведомление безопасности, по этому проверим права на файлы и перезапустим amportal:

amportal chown
amportal a ma refreshsignatures
amportal a reload

Также желательно обновить версии модулей в меню admin — module admin.

Владельцем http файлов должен быть asterisk, если вдруг права нарушены, можно вернуть их командой:

chown -R asterisk:asterisk /var/www/html/

На этом установка завершена, далее следует настройка, но об этом уже в другой статье.