Установка и настройка телефонии Asterisk в Linux Ubuntu. Установка Asterisk: пошаговая инструкция.

Добрый день, в этой статье я расскажу как установить самый популярный сервер VoIP телефонии Asterisk. С помощью данного сервера Вы сможете организовать телефонию в офисе, дома, или реализовать автоматическое оповещение, но об этом я расскажу в других статьях. И так приступим к установки asterisk на ubuntu server.

Установить Asterisk на Ubuntu Server крайне просто, понадобится всего одна команда:


sudo apt-get install asterisk

Первым делом после установки Asterisk, необходимо отключить возможность принимать звонки анонимно. Для этого открываем файл sip.conf и снимаем комментарий со строки allowguest=no, так как по умолчанию там стоит Yes. Кстати для поиска данной строки в nano можно нажать Ctrl+W и ввести искомую часть строки и нажать на Enter, если таких слов несколько в тексте то, для продолжения поиска нажать Ctrl+W и Enter.


sudo nano /etc/asterisk/sip.conf

В этом же файле можем указать провайдеров VoIP и своих внутренних абонентов. Я использую оператора it-sekret, так как у него дешевые звонки it-sekret.ru . Для этого в конце файла добавляем

Для оператора:

type=peer context=it-sekret host=xxx.it-sekret.ru username=USERNAME secret=PASSWORD fromuser=USERNAME nat=force_rport insecure=port,invite

Если у оператора нужна постоянная регистрация, например для входящих вызовов, то надо написать вот такую строку

Register => userID:[email protected]/userID

Где userID это имя пользователя выданное оператором и PASSWORD это пароль, xxx.it-sekret.ru адрес сервера выданный оператором.

Создаем внутреннего абонента:

type=friend context=internal host=dynamic username=1001 secret=1234

После добавления этих записей сохраняем файл и выходим. Для того, чтоб применить настройки необходимо либо перезапустить сервер, либо сказать ему, чтоб он перечитал настройки. Этот способ лучше, так как если сервер у Вас действующий, то звонки которые сейчас идут не оборвутся.


sudo asterisk -r
reload

Настройка телефона или софтфона

Теперь настроим телефон или софтфон. Я использую X-lite, программных телефонов достаточно много, можете использовать на Ваш вкус. Настройки X-lite выполните как на скриншоте.

Для проверки правильности выполненных настроек в CLI Asterisk (далее просто CLI) выполните команду sip show peers

Настройка правил набора Asterisk.(Диал план)

Первым делом сделаем копию оригинального файла extension.conf


sudo mv /etc/asterisk/extensions.conf
/etc/asterisk/extensions.conf.bak

Теперь в extension.conf пропишем правило для исходящего звонка.


sudo nano /etc/asterisk/extensions.conf exten => _X.,1,Dial(SIP/it-sekret/${EXTEN})

В CLI выполним команду reload, для применения настроек. И теперь попробуем совершить звонок.

Звонок прошел, теперь надо настроить входящий звонок. Для этого нужно прописать правило набора.


sudo nano /etc/asterisk/extensions.conf exten => s,1,Dial(SIP/1001)

На этом простая настройка заканчивается, в следующих статьях я расскажу как сделать запись разговоров, настроить IVR, сделать CallBack(обратный звонок) с сайта и многое другое.

В этой статье Вы найдёте полностью работоспособную инструкцию для установки и запуска собственной АТС на базе современного сервера IP телефонии Asterisk 13, а также системы управления им через веб-интерфейс FreePBX 13.

Почему FreePBX?

Многие недолюбливают FreePBX ссылаясь на его дырявость, кривую русификацию и местами непонятный интерфейс. Хочу сразу сказать, что в последней версии продукта исправлены многие ошибки, улучшено визуальное оформление и удобство навигации, даже перевод интерфейса выполнен на значительно новом качественном уровне. Не стоит забывать, что FreePBX позволит поднять сервер телефонии за считанные часы практически любому специалисту в том числе и с начальным уровнем знаний. В конфигурации по умолчанию вы получите широчайшие возможности, этих возможностей из «коробки» хватит для решения задач даже для крупных компаний. Конечно если Вам по каким-либо причинам не хватает возможностей веб-интерфейса, и нужно реализовать какую-то уникальную (не стандартную) фишку, скорее всего Вы обнаружите ряд проблем, связанных с использованием FreePBX, это различные костыли и затрудненность дебага. В таком случае Вам стоит сразу начинать разбираться в чистом Asterisk, не пугайтесь консоли! Вы получите огромное количество знаний, а главное глубокое понимание принципов работы сервера.

Чем отличается данная статья от официального мануала, или множества других статей на просторах интернета:

  • В данной статье Вы найдете описание (кто и зачем) устанавливаемых пакетов и библиотек;
  • Рассмотрены многие аспекты безопасности и защиты Вашего сервера телефонии;
  • Установка FreePBX выполняется в соответствии высокому уровню безопасности;
  • Мои старания сделать материал доступным и интересным даже для новичка;
  • Полностью работоспособная инструкция по установке FreePBX 13.

Если Вас устраивают возможности, предложенные в последней версии FreePBX 13, то давайте приступим к установке и настройке Вашего сервера IP телефонии. Установка связки Asterisk 13 + FreePBX 13 будет происходить на подготовленный и настроенный сервер на базе CentOS Linux 7 . Для удобства восприятия и визуального структурирования статья будет разбита на несколько частей.

Все команды в этой статье выполняются от имени пользователя root!

Вы должны отключить selinux, он может вызвать проблемы во время установки.

Настройка хостовой машины Подготовка окружения

Выключение SELinux

Sed -i "s/\(^SELINUX=\).*/\SELINUX=disabled/" /etc/sysconfig/selinux sed -i "s/\(^SELINUX=\).*/\SELINUX=disabled/" /etc/selinux/config

Зависимости

Yum install -y kernel-devel kernel-headers yum install -y e2fsprogs-devel keyutils-libs-devel krb5-devel libogg \ libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \ php php-gd php-mysql php-pdo php-mbstring ncurses-devel \ mysql-connector-odbc unixODBC unixODBC-devel \ audiofile-devel libogg-devel openssl-devel zlib-devel \ perl-DateManip sox git wget net-tools psmisc yum install -y gcc gcc-c++ make gnutls-devel \ libxml2-devel ncurses-devel subversion doxygen \ texinfo curl-devel net-snmp-devel neon-devel \ uuid-devel libuuid-devel sqlite-devel sqlite \ speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel

Выполните полное обновление системы:

Yum -y update

Перезагрузите компьютер:

После перезагрузки проверьте статус SELinux командой «sestatus», Вы должны увидеть следующий вывод:

SELinux status: disabled

Установим и настроим MariaDB

Выполните:

Yum -y install mariadb-server mariadb mariadb-devel

Запустим и включим автозагрузку при старте системы:

Systemctl start mariadb.service systemctl enable mariadb.service

Приступим к конфигурированию MariaDB, в инструкции на официальном сайте предложено не задавать пароль для подключения пользователя root, это связано с выполнением скрипта установки FreePBX командой «./install –n», при этом подключение к базе происходит от имени пользователя root без пароля. Начинающий пользователь может пропустить в процессе настройки несколько очень важных параметров (не будет задан пароль для подключения пользователя root, останется разрешено удаленное подключение для пользователя root), что создаст серьезную уязвимость! Мы отступим от официальной инструкции и выполним установку и настройку с высоким уровнем безопасности.
Запустите интерактивный конфигуратор:

Mysql_secure_installation

Рассмотрим подробно параметры настройки:

Enter current password for root (enter for none) оставляем поле пустым нажимаем Enter Set root password Y New password: Задаем пароль Re-enter new password: Подтверждаем Remove anonymous users Y Disallow root login remotely Y Remove test database and access to it Y Reload privilege tables now? Y All done! If you"ve completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

Компиляция необходимых пакетов и библиотек для Asterisk

PearDB
(библиотека классов PHP с открытым исходным кодом)

Pear uninstall db pear install db-1.7.14

SRTP
(Безопасный протокол передачи данных в реальном времени (или SRTP) определяет профиль RTP (транспортный протокол в реальном времени) и предназначен для шифрования, установления подлинности сообщения, целостности, защиту от замены данных RTP в однонаправленных и multicast передачах медиа и приложениях)

Cd /usr/src && wget http://srtp.sourceforge.net/historical/srtp-1.4.2.tgz tar zxvf srtp-1.4.2.tgz && cd srtp && autoconf && ./configure CFLAGS=-fPIC --prefix=/usr && make && make runtest && make install

Pjproject
(open source библиотека для разработки VoIP приложений на различных платформах)

Cd /usr/src && git clone git://github.com/asterisk/pjproject pjproject cd pjproject/ && ./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample && make dep && make && make install && ldconfig

libjansson
(библиотека на С для кодирования и декодирования JSON данных)

Cd /usr/src && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz tar zvxf jansson-2.5.tar.gz && cd jansson-2.5 && ./configure --prefix=/usr/ && make clean && make && make install && ldconfig

Lame
(свободное приложение для кодирования аудио в формат MP3)

Cd /usr/src && wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz tar zxvf lame-3.98.4.tar.gz && cd lame-3.98.4 && ./configure && make && make install

DAHDI
(DAHDI - драйверы для плат производства Digium)

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 && cd dahdi-linux-complete-* && make all && make install && make config

LibPRI
(libpri - библиотека, для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface))

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

SpanDSP
(открытая библиотека и набор программ для реализации функции передачи и приема факсов)

Cd /usr/src && wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz tar zxvf spandsp-0.0.6.tar.gz && cd spandsp-0.0.6 && ./configure && make && make install && ln -s /usr/local/lib/libspandsp.so.2 /usr/lib64/libspandsp.so.2

Установка Asterisk 13

BUG
В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf
https://issues.asterisk.org/jira/browse/ASTERISK-27026
Выполните в терминале "mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf" после компиляции Asterisk

Выполните:

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-13.* && contrib/scripts/install_prereq install && ./configure --libdir=/usr/lib64 && contrib/scripts/get_mp3_source.sh make menuselect

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль "format_mp3". Из личных обращений посетителей было выявлено, что не у всех отрабатывает модуль confbridge (необходим для организации конференций), meetme является его более функциональным аналогом. Рекомендую Вам дополнительно и его включить.

---> Add-ons (See README-addons.txt) --- extended --- XXX chan_mobile [*] chan_ooh323 [*] format_mp3 [*] res_config_mysql --- deprecated --- [*] app_mysql [*] app_saycountpl [*] cdr_mysql ---> Applications --- Extended --- [*] app_meetme ---> Core Sound Packages [*] CORE-SOUNDS-RU-WAV [*] CORE-SOUNDS-RU-ULAW [*] CORE-SOUNDS-RU-ALAW [*] CORE-SOUNDS-RU-GSM [*] CORE-SOUNDS-RU-G729 [*] CORE-SOUNDS-RU-G722 [*] CORE-SOUNDS-RU-SLN16 [*] CORE-SOUNDS-RU-SIREN7 [*] CORE-SOUNDS-RU-SIREN14 ---> Extras Sound Packages [*] EXTRA-SOUNDS-EN-WAV [*] EXTRA-SOUNDS-EN-ULAW [*] EXTRA-SOUNDS-EN-ALAW [*] EXTRA-SOUNDS-EN-GSM Press X to save and exit

Внимание! В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf

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

Mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf

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

Make && make install && make config && ldconfig asterisk off sed -i "s/ASTARGS=""/ASTARGS="-U asterisk"/g" /usr/sbin/safe_asterisk

Подготовка к установке FreePBX

Создайте пользователя Asterisk и задайте права пользователя.

Adduser asterisk -M -c "Asterisk User"

Зададим права на каталоги:

Chown asterisk. /var/run/asterisk && chown -R asterisk. /etc/asterisk && chown -R asterisk. /var/{lib,log,spool}/asterisk && chown -R asterisk. /usr/lib64/asterisk && chown -R asterisk. /var/www/

Сгенерируем сложный пароль для пользователя Asterisk. Запишите или скопируйте этот пароль, он понадобится Вам позже в процессе установки:

Dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18

Настроим PHP

Cp /etc/php.ini /etc/php.ini_orig && sed -ie "s/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g" /etc/php.ini

Настроим Apache

Sed -i "s/\(^upload_max_filesize = \).*/\120M/" /etc/php.ini && cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig && sed -i "s/^\(User\|Group\).*/\1 asterisk/" /etc/httpd/conf/httpd.conf && sed -i "s/AllowOverride None/AllowOverride All/" /etc/httpd/conf/httpd.conf && systemctl restart httpd && systemctl enable httpd

Подготовка базы данных Asterisk в MaryaDB.

Mysql -u root -p CREATE DATABASE `asterisk` CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `asteriskcdrdb` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY "PASS"; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY "PASS"; flush privileges;

* Где PASS сгенерированный сложный пароль.

Установка FreePBX 13

Выполните:

Pear install Console_Getopt cd /usr/src && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz && tar zxvf freepbx-13.0-latest.tgz && cd freepbx

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

./start_asterisk start && ./install

В процессе выполнения скрипта будет предложено указать ряд данных. Вам необходимо указать пользователя для подключения asterisk и его пароль (сгенерированный сложный пароль), остальное оставьте по умолчанию.

Fwconsole reload && fwconsole ma refreshsignatures && fwconsole chown ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 fwconsole restart

Firewalld & IPTables

Firewalld

В Centos7 вместо IPTables используется Firewalld.

Выполните для установки:

Yum -y install firewalld

Запустите:

Systemctl start firewalld

Включите автозагрузку:

Systemctl enable firewalld

Проверим:

Systemctl status firewalld

Посмотрим, что разрешено по умолчанию:

Вывод команды:

Public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:

На постоянной основе разрешен ssh, а также клиент dhcp v6. Я не использую на сервере ip v6, поэтому уберу соответствующее правило:

Firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

Добавим необходимые правила для работы нашего АТС сервера:

Firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-port=4569/udp firewall-cmd --permanent --zone=public --add-port=5038/tcp firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp firewall-cmd --permanent --zone=public --add-port=5060-5061/udp firewall-cmd --permanent --zone=public --add-port=10000-20000/udp

Перезагрузим правила:

Firewall-cmd --reload

Проверим:

Firewall-cmd --permanent --list-all

Вывод команды:

Public target: default icmp-block-inversion: no interfaces: sources: services: http ssh ports: 5060-5061/udp 4569/udp 10000-20000/udp 5060-5061/tcp 5038/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:

Все необходимые настройки выполнены.

IPTables

Для использования IPTables на Вашем сервере, выполните следующие шаги.

Выключим Firewalld службу:

Systemctl mask firewalld

Остановим Firewalld Service:

Systemctl stop firewalld

Установим iptables.

Yum -y install iptables-services

Включим IPtables при загрузке системы:

Systemctl enable iptables iptables -P INPUT ACCEPT && iptables -F && service iptables save && iptables -A INPUT -i lo -j ACCEPT && iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT && iptables -A INPUT -p tcp --dport 22 -j ACCEPT && iptables -A INPUT -p tcp --dport 80 -j ACCEPT && iptables -P INPUT DROP && iptables -P FORWARD DROP && iptables -P OUTPUT ACCEPT && iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT && service iptables save

Проверим:

Iptables -L

Вы должны получить следующий вывод:

Iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT udp -- anywhere anywhere udp dpt:sip ACCEPT udp -- anywhere anywhere udp dpt:sip-tls ACCEPT tcp -- anywhere anywhere tcp dpt:sip ACCEPT tcp -- anywhere anywhere tcp dpt:sip-tls ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp ACCEPT udp -- anywhere anywhere udp dpt:iax ACCEPT tcp -- anywhere anywhere tcp dpt:5038 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Быстрый старт

Подключимся к FreePBX

Http://IP-адрес/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX.

Укажите необходимые данные и нажмите "Create Account":


Войдите в систему. Для этого кликните "FreePBX Administration", ведите логин/пароль и нажмите "Continue":


Обратите внимание на ошибку: "No Conference Room App". У меня установка всегда проходит гладко и данной пролемы я не встречал (скриншотом любезно поделился оди из посетителей сайта). Для решения данной проблемы необходимо сменить приложение для Conference Room с app_confbridge на app_meetme. Возможно данная проблема связана со спецификой используемого "железа".

Перейдите в раздел "Settings" -> "Advanced Settings"


Установите русский язык для интерфеса FreePBX по умолчанию, для этого укажите ru_RU


Для удобства других пользователей включите возможность смены языка интерфейса на лету:


Проверьте правильность параметра "Timezone" для PHP:


Переключите приложение для "Conference Room" на app_meetm, нажмите "Submit"


Нажмите по кнопке "Применить изменения"


Перейдя в "Dashboard" мы видим отсутствие критических проблем, интерфейс на родном языке и кнопку выбора языка:


На этом базовая установка FreePBX успешно завершена. Подробная настройка системы будет рассмотрена в отдельной статье.

Повышение безопасности сервера

Подходя к вопросу безопасности, следует помнить, что большинство инструкций на просторах интернета предоставляют базовый (минимальный) набор инструкций и команд для запуска сервиса. Безопасность серверов обычно предполагает защиту от вторжений со стороны сети, но условия эксплуатации также играют огромную роль в безопасности системы. Телефонное оборудование должно быть «под замком», доступ к нему разрешается только обслуживающему персоналу. Администратор должен понимать, что кроме запуска сервиса ему необходимо предпринять определенные шаги по его защите. Требуется поддерживать в актуальном состоянии и регулярно обновлять программное обеспечение. Правильно настроить сетевой экран из расчета открыто только необходимое. Смена стандартных паролей и портов (по возможности), защита от подбора паролей и т.д. Только комплексный подход к организации информационной безопасности даст надлежащий результат.

SSH (актуально для облаков, VPS/VDS хостинга. SSH порт выставлен в интернет)

• Смена стандартного порта;

• Запрет авторизации root через SSH;

• Авторизация по ключу;

• Запрет авторизации по паролю;

• Разрешение доступа по SSH только определенным пользователям.

Сетевой экран и проброс портов

В случае необходимости подключения пользователей из внешней сети можно использовать несколько вариантов решения данной ситуации:

1. Удаленный филиал. Самым правильным решением станет организация IPSec (VPN) туннеля между офисами, создание необходимых правил и маршрутов. В таком случае Вы не подвергните Ваш сервер вторжениям из внешней сети, а связь между офисами будет надежно защищена;

2. Удаленный сотрудник. Единственным верным решением, я считаю, использование VPN. Все остальные варианты являются не надежными и требуют проброса портов из внешней сети (интернет) на Ваш сервер телефонии;

3. Без VPN. По личным, религиозным или другим не известным мне причинам VPN не используется и не будет использоваться. Рассмотрим варианты: «Условия А». Сотрудник имеет статичный IP, все становится немного радужнее. Можно организовать проброс портов только для определенных адресов (клиентов). Данный метод все равно требует дополнительной защиты и не является надежным. Вы просто ограничиваете источник угроз до определенного диапазона (разрешенные IP адреса). «Условия Б». На моей практике «условия А» встречаются редко (почти никогда). Обычно внешние пользователи - это целый «зоопарк» устройств и провайдеров. В данном случае (без использования VPN) придется выставлять сервер телефонии портами наружу (в интернет).

Итак, проброс портов:

1. Определитесь с набором необходимых портов. Например, если Вы не используете протокол IAX/IAX2 (протокол Asterisk), то и прокидывать порт не нужно. Опционально - можно ограничить диапазон портов RTP (по умолчанию 10000-20000) из расчета 4 порта на сессию. Исходите из необходимого минимума.

3. Уделите внимание настройке FreePBX: используйте SSL/TLS для SIP, а также SRTP для шифрования голоса, запретите входящие анонимные SIP звонки, запретите SIP вызовы без аутентификации, измените пароли по умолчанию, используйте сложные пароли на всех уровнях системы;

4. Используйте Fail2Ban для блокировки подозрительных соединений. Например, Fail2ban блокирует соединение по IP адресу при неправильном вводе пароля более 4 раз (все параметры и условия настраиваются без особых проблем).
Рекомендую Вам выполнить данные пункты даже если проброс портов выполнен для определенных клиентов, использующих статичные белые IP адреса (условия А).

Данный материал будет актуальным не только для защиты Вашего сервера с Asterisk, мне хотелось бы донести до Вас концепцию по обеспечению информационной безопасности в целом. В случае взлома сервера телефонии Вы не просто теряете данные, или компрометируете определенных пользователей, Вы можете понести реальные финансовые убытки в результате действий злоумышленников. Этот материал не является конечной инструкцией, это всего лишь попытка обратить внимание на проблемы безопасности вовремя, а также предложить несколько актуальных направлений для предотвращения вторжений.

Платформа телефонии

Asterisk - это самая популярная система телефонии во всем мире. Популярна она благодаря бесконечному количеству функций. Усиливает интерес к этой платформе телефонии её бесплатность.

Перечислять все прелести Asterisk я не буду. Вы и без меня все прекрасно знаете. Давайте поговорим о недостатках.

Если Вы читаете эту статью, значит Вы уже знаете самый главный недостаток Asterisk. Я имею в виду тот факт, что Asterisk не рассчитан на работу под Windows. Ну совершенно никак. Asterisk работает только под Linux и ему подобных операционных системах на подобии FreeBSD.

Платформа IT инфраструктуры

Обстановка в подавляющем большинстве компаний нашей с вами родины сложилась следующим образом: Везде Windows. На компьютерах Windows. На серверах Windows. Ноутбуки продаются с предустановленной Windows. Современные недорогие планшеты и те - на Windows. Все полезные и необходимые программы для бизнеса написаны для работы в Windows.

Хорошо это или плохо? Речь сейчас не об этом.

Нужно работать. Выполнять поставленные задачи. Бизнес должен развиваться и зарабатывать деньги. А в крестовый поход против Microsoft мы сегодня не пойдем.

Сегодня я расскажу Вам что нужно сделать чтобы развернуть телефонию в компании без погружения в мир Linux и черных экранов с множеством непонятных команд.

Давайте наметим план:

  1. Нам нужна система телефонии Asterisk,
  2. Мы хотим настраивать Asterisk с помощью графического интерфейса с помощью мыши,
  3. Нам нужно раздать пользователям (Директору, секретарю, начальникам отделов) программу для работы со статистикой. В ней должны быть все надписи на Русском языке. И там они должны легко искать звонки по номеру, сотруднику, и строить графики по уровню телефонного обслуживания.

Пункты первый и второй. Устанавливаем Asterisk с графическим интерфейсом настройки на Windows:

Что мы делаем:

  1. Качаем бесплатную программу VirtualBox по этой ссылке ,
  2. Качаем готовый образ Asterisk для VirtualBox по этой ссылке .

После загрузки:

  1. Инсталлируем VirtualBox. Всё время жмем далее;
  1. В окне программы VirtualBox нажимаем «Файл» > «Импорт конфигураций». Указываем путь до образа Asterisk, который Вы только что скачали;
  2. После импорта следует запустить виртуальную машину и приступать к настройке телефонии в офисе.

Результат установки:

Вы получили систему телефонии Asterisk с WEB интерфейсом FreePBX (Elastix). Данный образ Asterisk работает под любой версией Windows.

Логины и пароли для готового образа Elastix:

Web: admin / helloasterisk

SSH: root / helloasterisk

MySQL: root / helloasterisk

Видео по установке:

Пункт третий. Устанавливаем ПО для пользователей телефонии.

Как известно, FreePBX предназначен для администрирования системы телефонии. Его использует системный администратор для настройки. Директор и секретарь, а также другие руководители каждый день работают со статистикой звонков и записями разговоров. Для этих целей FreePBX им не подойдет. Пользователь в IT не разбирается. Часто это неуверенный пользователь ПК. Поэтому ему нужна русифицированная интуитивно понятная программа.

По моему мнению, наиболее соответствует этим критериям программа HelloAsterisk. Программа имеет бесплатную версию. В этой бесплатной версии огромное количество нужных функций. Есть и платные функции. Описание можно найти на официальном сайте программы.

Я приведу видео обзор одной из бесплатных функций HelloAsterisk:

Что нужно для установки программы:

  1. Зайти на сайт: ссылка
  2. Зарегистрироваться,
  3. Скачать программу на странице загрузки ссылка ,
  4. Следовать инструкциям по установке и настройке программы. Инструкции приведены на официальном сайте HelloAsterisk ссылка .

Резюме:

Выводы, конечно же, делать Вам. Я лишь могу высказать свое мнение.

Лично для себя я в очередной раз отметил, что на сегодняшний день Asterisk живет в тесном соседстве с Windows. Соседство это за 10 лет моих наблюдений не изменилось. Так давайте же получать максимум отдачи от всего ПО, которое нас окружает!

Если у Вас по каким-то причинам не хватает времени разобраться во всем этом хозяйстве, то команда БОЛЬШЕ ЧЕМ АТС всегда готова помочь Вам в этом.

В данной статье расскажем как установить последнюю версию Asterisk 14.3.0 на операционную систему CentOS 7 . Следуя нашей инструкции, Вы без труда сможете собрать Asterisk из источников. Итак, поехали!

Пошаговое видео

Подготовка

Перед началом установки, убедимся, что у нас выключена опция SElinux , по умолчанию он включен. Поэтому открываем любой текстовый редактор, например vim или nano и отключаем. Для этого:

Nano /etc/sysconfig/selinux

Ищем строчку SELINUX = и вписываем disabled:

SELINUX=disabled

Сохраняем изменения и производим перезагрузку командой reboot . Далее, добавляем в CentOS репозиторий EPEL :

Все ссылки актуальны на момент написания статьи (22.02.2017 ). Сегодня 31.08.2017 (статья написана 190 дней назад), поэтому, в случае недоступности нужного файла, воспользуйтесь поиском в сети интернет.
rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-9.noarch.rpm yum -y update

Устанавливаем зависимости, лучше это делать в несколько команд

Yum install -y gcc gcc-c++ lynx bison mariadb-devel mariadb-server mariadb gmime-devel psmisc php php-mysql php-pear php-mbstring yum install tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel yum install kernel-devel-$(uname -r) git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel libtool sqlite-devel libuuid-devel bzip2

Запускаем сервис mariadb (MySQL):

Systemctl enable mariadb.service systemctl start mariadb.service

Установка PearDB :

Pear uninstall db pear install db-1.7.14

Теперь необходимо скачать и установить телефонные драйверы, такие как pjproject , и DAHDI , а также приложения jansson и lame .

Cd /usr/src/ wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2 tar -xjvf pjproject-2.4.tar.bz2 cd pjproject-2.4* ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --libdir=/usr/lib64 make dep make make install cd ..

Скачивание и установка драйвера DAHDI

Wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz tar xvfz dahdi-linux-complete-current.tar.gz cd dahdi-linux-complete-* make all make install make config cd ..

Скачивание и установка приложения кодирования lame :

Wget https://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz tar zxvf lame-3.98.4.tar.gz cd lame-3.98.4 ./configure make make install cd ..

Скачивание и установка jansson . Можно воспользоваться yum -y install jansson-devel или:

Wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz tar zvxf jansson-2.5.tar.gz cd jansson-2.5 ./configure --prefix=/usr make clean make make install ldconfig cd ..

Последним шагом в подготовке к установке Asterisk , является скачивание и установка библиотеки для работы с ISDN интерфейсами - libpri :

Wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz tar xvfz libpri-1.6.0.tar.gz cd libpri-1.6.0 make make install cd ..

Установка Asterisk

Всё готово, теперь скачаем Asterisk

Wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz tar xvfz asterisk-14-current.tar.gz cd asterisk-14* ./configure --libdir=/usr/lib64 contrib/scripts/get_mp3_source.sh make menuselect

После ввода команды menuselect перед вами откроется помощник установки модулей. По умолчанию, все необходимые модули уже включены, нам остаётся только добавить, то что хотим. Так, например, мы рекомендуем в разделе Add-ons включить поддержку mp3, установив параметр format_mp3 , как показано на рисунке ниже:



В разделе Core Sound Packages установить нужные форматы звуковых пакетов, например, для русского и английского языков:





В разделе Music On Hold File Packages установить все значения для поддержки кодеков разных производителей оборудования:



Наконец, в Extras Sound Packages установите нужные форматы и нажмите F12 :



Вы увидите сообщение о том, что преднастройка успешно завершена:



Начинаем установку, для этого вводим команду

По завершению отработки данной команды, мы увидим сообщение о том, что сборка Asterisk успешно завершена и теперь можно начать его установку:



Для этого вводим команды:

Make install make samples make config

На этом установка Asterisk завершена, о чём сообщает следующий вывод



Теперь необходимо создать пользователя с правами доступа к директориям Asterisk

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

После этого, нужно перепустить Asterisk, чтобы изменения вступили в силу

Systemctl restart asterisk

Теперь необходимо подготовить MySQL для работы с Asterisk:

Mysql -u root –p //Пароль по умолчанию mysql или же никакого пароля

Создадим пользователя для работы с базами MySQL для Asterisk

Create user "merionuser"@"localhost" identified by "merionpass"; //Пользователь – merionuser, пароль – merionpass”

Create database asterisk; create database asteriskcdrdb;

И настраиваем права для пользователя, которого создали в прошлом шаге:

GRANT ALL PRIVILEGES ON asterisk.* TO merionuser@localhost IDENTIFIED BY "merionpass"; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO merionuser@localhost IDENTIFIED BY "merionpass"; flush privileges;

Теперь мы можем зайти в и начинать конфигурацию:

Asterisk -rvv

core show help покажет список доступных команд и их описания



Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: