1. Введение
Настоящая инструкция описывает подробный процесс установки Asterisk версии 16, а также выполнение общесистемных настроек для обеспечения безопасности. Установка предусматривается "с нуля" на сервер под управлением ОС CentOS 8.x (Minimal).
Установка панели управления FreePBX описана в отдельной статье.
2. Установка и обновление системных пакетов и зависимостей
Установите необходимые системные пакеты, отсутствующие в базовом дистрибутиве.
yum -y groupinstall core base "Development tools" yum -y install epel-release yum config-manager --set-enabled PowerTools yum -y install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libsepol-devel libxml2-devel libtiff-devel gmp audiofile-devel libogg-devel openssl-devel zlib-devel sox git psmisc iptables-services fail2ban gcc-c++ make gnutls-devel libxml2-devel ncurses-devel subversion doxygen texinfo curl-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel gtk2-devel newt-devel yum -y update reboot
3. Отключение SELinux
Поскольку при включенной службе SELinux на этапе инсталляции Asterisk могут возникать непредсказуемые ошибки, ее следует отключить путем изменения параметра SELINUX
в конфигурационном файле /etc/selinux/config
на значение disabled
:
SELINUX=disabled SELINUXTYPE=targeted
Обновите и перезагрузите систему:
yum -y update reboot
Проверьте состояние SELinux
sestatus
Ожидаемый вывод:
SELinux status: disabled
4. Настройка межсетевого экрана и средства предотвращения вторжений
В ядре CentOS 8 по умолчанию используется межсетевой экран FirewallD, при этом настоящая инструкция предусматривает работу с iptables. Если вы предпочитаете использовать FirewallD, настройте его и пропустите данный раздел.
4.1. Деактивация FirewallD и активация iptables
systemctl stop firewalld systemctl disable firewalld systemctl enable iptables.service systemctl start iptables.service
4.2. Подключение модулей iptables
Для обеспечения работы механизма динамического открытия портов RTP (SIP ALG), необходимо подключить дополнительные модули iptables:
sed -i 's/IPTABLES_MODULES=""/IPTABLES_MODULES="ip_conntrack iptable_filter iptable_mangle ipt_LOG ipt_limit ipt_state ipt_REJECT ip_conntrack_sip"/g' /etc/sysconfig/iptables-config
4.3. Настройка правил iptables
iptables -F INPUT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s <local network x.x.x.x/x> -j ACCEPT iptables -A INPUT -s <management network x.x.x.x/x> -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p udp --dport 5060 -j ACCEPT iptables -A INPUT -p tcp --dport 5060 -j ACCEPT iptables -A INPUT -p udp --dport 4569 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables-save > /etc/sysconfig/iptables
Примечания
-
При отсутствии корректной поддержки SIP ALG на граничном маршрутизаторе, может потребоваться статическое открытие портов UDP для прохождения медиатрафика. Для этого следует добавить указанное ниже правило iptables:
iptables -I INPUT 2 -p udp --match multiport --dports 10000:20000 -j ACCEPT
- Точный набор правил зависит от перечня используемых протоколов.
- Защита от нежелательного трафика на уровне сервера является дополнительной. Предполагается, что основная защита обеспечивается на уровне сетевой инфраструктуры.
4.4. Настройка утилиты fail2ban
Отредактируйте файл /etc/fail2ban/jail.conf
и замените исходные строки в указанных ниже секциях приведенными ниже:
[DEFAULT]
ignoreip = 127.0.0.0/24
ignoreip = <local network x.x.x.x/x>
banaction = iptables-multiport
[asterisk]
enabled = true
logpath = /var/log/asterisk/security
maxretry = 3
bantime = 3600
[sshd]
enabled = true
Перезапустите fail2ban и добавьте его в автозапуск:
systemctl restart fail2ban systemctl enable fail2ban
5. Установка Lame
Пакет Lame необходим для обеспечения работы Asterisk со звуковыми файлами mp3.
Создайте директорию для исходных файлов:
cd /usr/src mkdir lame cd lame
Загрузите и установите требуемые пакеты:
wget https://forensics.cert.org/cert-forensics-tools-release-el8.rpm rpm -Uvh cert-forensics-tools-release-el8.rpm yum -y --enablerepo=forensics install lame lame-devel
6. Установка Asterisk
6.1. Загрузка и конфигурирование Asterisk
cd /usr/src/ mkdir asterisk cd asterisk wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz tar zxvf asterisk-16-current.tar.gz cd asterisk-16.* ./contrib/scripts/get_mp3_source.sh ./configure --libdir=/usr/lib64 --with-pjproject-bundled --with-jansson-bundled
Если скрипт configure
отработал корректно, на экран будет выведен логотип Asterisk в псевдографике:
6.2. Выбор используемых модулей (menuselect)
В данном разделе выбираются модули, которые будут установлены на следующем этапе.
make menuselect
Примечания
- Не следует отключать опции, выбранные по умолчанию.
- В разделе "Channel Drivers" следует выбрать тот драйвер SIP, который вы планируете использовать: chan_sip (старый) или chan_pjsip (новый). При возникновении сомнений выбирайте оба модуля..
-
Дополнительно следует выбрать (отметить) следующие пункты меню:
Add-Ons o format_mp3 Core Sound Packages o CORE-SOUNDS-EN-* o CORE-SOUNDS-RU-* Music On Hold File Packages o MOH-OPSOUND-* Extras Sound Packages o EXTRA-SOUNDS-EN-*
6.3. Сборка и установка Asterisk
make
Если сборка Asterisk прошла корректно, на экране появится следующее сообщение:
make install
Если установка Asterisk прошла корректно, на экране появится следующее сообщение:
make samples make config ldconfig
6.4. Настройка Asterisk для работы из-под непривилегированного пользователя
Замените в файле /usr/sbin/safe_asterisk
строку с аргументами:
sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g' /usr/sbin/safe_asterisk
Затем измените владельца директорий, относящихся к Asterisk:
useradd -m asterisk chown asterisk:asterisk /var/run/asterisk chown asterisk:asterisk /etc/asterisk -R chown asterisk:asterisk /var/lib/asterisk -R chown asterisk:asterisk /var/log/asterisk -R chown asterisk:asterisk /var/spool/asterisk -R chown asterisk:asterisk /usr/lib64/asterisk -R chown asterisk:asterisk /var/lib/php -R chown asterisk:asterisk /var/www -R chmod 666 /var/log/httpd/
6.5. Настройка ротации логов Asterisk
Создайте конфигурационный файл ротации логов /etc/logrotate.d/asterisk
и запишите в него следующие строки:
/var/log/asterisk/queue_log { daily su asterisk asterisk missingok rotate 60 notifempty sharedscripts create 0640 asterisk asterisk } /var/log/asterisk/freepbx_debug.log /var/log/asterisk/messages /var/log/asterisk/event_log /var/log/asterisk/full /var/log/asterisk/dtmf /var/log/asterisk/trace /var/log/asterisk/security { daily su asterisk asterisk missingok rotate 60 compress notifempty sharedscripts create 0640 asterisk asterisk postrotate /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null endscript } /var/spool/mail/asterisk { daily su asterisk mail missingok rotate 60 compress notifempty sharedscripts create 0660 asterisk mail postrotate /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null endscript }
Запуск и проверка работы Asterisk
Запустите Asterisk штатным образом и проверьте его состояние:
systemctl enable asterisk systemctl start asterisk ps -ef | grep asterisk
Примерный ожидаемый вывод:
root 5111 1 0 08:57 ? 00:00:00 /bin/sh /usr/sbin/safe_asterisk asterisk 5113 5111 0 08:57 ? 00:00:00 /usr/sbin/asterisk -f -U asterisk -vvvg -c root 5650 3788 0 09:05 pts/0 00:00:00 grep --color=auto asterisk
Проверьте подключение к консоли управления Asterisk:
rasterisk
Ожидаемый вывод: