ELASTIX – общайтесь свободно

Юров Владислав

Приложения

 

 

Русификация Elastix 2.4

 

Русификация Elastix состоит из нескольких частей:

• добавление русского голоса

• настройка в Asterisk языка по умолчанию

• настройка говорящих часов (номер «100»)

• конвертация базы данных asterisk из кодировки latin1 в кодировку utf8

• настройка для подключений к базам данных mySQL использования кодировки utf8

• отключение контроля вводимых символов в интерфейсе администрирования Elastix

 

Добавление русского голоса

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

su root

cd /tmp

wget https://github.com/pbxware/asterisk-sounds/tarball/master – O asterisk-sounds-ru.tar.gz

tar xzvf asterisk-sounds-ru.tar.gz

mv /var/lib/asterisk/sounds/ru /var/lib/asterisk/sounds/ru-orig

mkdir /var/lib/asterisk/sounds/ru

mv pbxware-asterisk-sounds-1fd21fa/* /var/lib/asterisk/sounds/ru/

Либо установите русский голос, используя бесплатный модуль bSmart Voice Manager:

 

Настройка говорящих часов (номер «100»)

Если не выбрали при установке, настройте также часовой пояс:

sudo cp /etc/localtime /etc/localtime.orig

sudo ln – sf /usr/share/zoneinfo/Europe/Moscow localtime

В web-интерфейсе откройте меню «Feature Codes» в разделе «PBX», укажите номер «100» в поле «Speaking Clock»:

Сохраните изменения.

 

Настройка в Asterisk языка по умолчанию

Откройте меню «General Settings» в разделе «PBX»:

Укажите вашу страну:

И сохраните изменения.

Откройте меню «Asterisk File Editor» в закладке «Tools» раздела «PBX»:

Убедитесь, что в файле «sip_general_custom.conf» есть строка «language=ru»:

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

 

Конвертация базы данных в UTF8

Начиная с Elastix 2.5 поддерживается работа в кодировке UTF-8, что позволяет использовать для абонентов имена на кириллице и на других языках. Однако Elastix 2.4 и более ранние умеют работать только с алфавитом latin1. Если компания уже давно использует Elastix, порой проще русифицировать текущую версию, чем обновить систему.

Чтобы добавить в Elastix 2.4 полноценную поддержку русского языка экспортируйте, пересоздайте и восстановите БД в UTF-8, а также настройте использование кодировки UTF8 для подключения к mySQL. Для этого создайте скрипт astdb2utf.sh (или загрузите):

sudo mkdir /root/tasks

sudo nano /root/tasks/astdb2utf.sh

напишите следующий текст скрипта:

#!/bin/bash

#конвертация базы данных в UTF-8

fcfg=/etc/amportal.conf

dbuser=$(grep '^AMPDBUSER=' ${fcfg} | sed "s/.*[=]//g" | sed "s/[]//g" | tr – d '\n')

dbpassword=$(grep '^AMPDBPASS=' ${fcfg} | sed "s/.*[=]//g" | sed "s/[]//g" | tr – d '\n')

#конвертация БД в кодировку utf-8

db2utf8() {

db=$1

dbu=$2

dbpwd=$3

fdb=/tmp/${db}.sql

fdbutf=/tmp/${db}-utf8.sql

sql="DROP DATABASE ${db}"

sql="$sql; CREATE DATABASE ${db} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"

mysqldump ${db} – u ${dbu} – p${dbpwd} >${fdb}

sed "s/CHARSET[=]latin1/CHARSET=utf8/g" ${fdb} >${fdbutf}

echo ${sql} | mysql ${db} – u${dbu} – p${dbpwd}

cat $fdbutf | mysql ${db} – u${dbu} – p${dbpwd}

}

#настройка utf8 для подключения к базе данных

ifnotexists() {

str=$1

after=$2

patt=$(echo $2 | sed 's/[=]/[=]/g')

fn=$3

cnt=$(grep – c "${str}" ${fn})

if [$cnt – le 0]; then

sed – i – e "s/.*${patt}/${after}\n${str}/g" ${fn}

echo "added string ${str}"

fi

}

db2utf8 'asterisk' «$dbuser» «$dbpassword»

db2utf8 'asteriskcdrdb' "$dbuser" "$dbpassword"

ifnotexists «character-set-server=utf8» «user=mysql» «/etc/my.cnf»

ifnotexists "collation-server=utf8_general_ci" "user=mysql" "/etc/my.cnf"

ifnotexists "init-connect='set charset utf8; SET NAMES utf8;'" "user=mysql" "/etc/my.cnf"

fl1=/var/www/html/admin/components.class.php

cp $fl1 ${fl1}-orig

txt_old='htmlentities[(][$]this[-][>]currentvalue[)]'

txt_new='htmlentities($this->currentvalue, ENT_COMPAT, "utf-8")'

sed "s/$txt_old/$txt_new/g" – i $fl1

txt_old='htmlentities[(][$]currentvalue[)]'

txt_new='htmlentities($currentvalue, ENT_COMPAT, "utf-8")'

sed "s/$txt_old/$txt_new/g" – i $fl1

fl1=/var/www/html/modules/pbxadmin/js/libfreepbx.javascripts.js

fl2=/var/www/html/modules/pbxadmin/js/script.legacy.js

cp $fl1 ${fl1}-orig

cp $fl2 ${fl2}-orig

txt_old='function isLetter[(]c[)]'

txt_new='function isLetter(c) { return (1==1); } function isLetter_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

txt_old='function isCallerIDChar[(]c[)]'

txt_new='function isCallerIDChar(c) { return (1==1); } function isCallerIDChar_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

txt_old='function isAlphanumeric[(]c[)]'

txt_new='function isAlphanumeric(c) { return (1==1); } function isAlphanumeric_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

Запустите созданный скрипт и перезапустите mySQL:

sudo bash /root/tasks/astdb2utf.sh

service mysqld restart

Проверьте, что теперь Вы можете создавать абонентов (Extensions) с русскими именами. Откройте меню «Extensions» в разделе «PBX». Обновите страницу браузера, чтобы обновился скрипт, проверяющий корректность ввода. Добавьте новый телефон, указав русское имя в поле «Display Name»:

Сохраните изменения и проверьте, что в поле Display Name имя осталось написанным по-русски.

 

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

 

Если Elastix находится в открытом доступе, перечисленные в данном приложении мероприятия по защите станции жизненно необходимы. Без должной защиты через несколько недель или месяцев станция будет взломана и начнет использоваться злоумышленниками для звонков за счет вашей компании.

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

Кроме описанных ниже настроек рекомендую приобрести и установить дополнение Anti-Hacker. Дополнение стоит $15 и позволяет существенно упростить процесс настройки защиты, защищая Elastix от атак «грубой силы» – атак, перебирающих пароли. Конечно, из чисто спортивного интереса можно самостоятельно настроить Fail2ban, но практичнее приобрести и настроить Anti‑Hacker, проделать описанные ниже настройки по изменению портов используемых сервисов и активировать FireWall, встроенный в Elastix.

Дополнительную информацию по защите Elastix и его компонентов не сложно найти в Интернет. Например, полезно, в дополнение к описанному ниже, прочитать:

• «9 правил, как защитить свой Asterisk» ()

• «Семь шагов по улучшению безопасности Asterisk» ()

• «Грабли, или 5 типичных ошибок настройки Asterisk ()

 

Усложнение перебора паролей

Рекомендуется включать опцию Asterisk «alwaysauthreject=yes», чтобы усложнить задачу злоумышленников по подбору паролей. В Elastix эта опция активируется через WEB-интерфейс. Зайдите в меню PBX\Tools\Asterisk File Editor, найдите файл «sip_general_custom.conf», нажмите на него и добавьте в него «alwaysauthreject=yes»:

 

Установка и настройка дополнения Anti-Hacker

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

• откройте WEB-панель управления Elastix

• откройте закладку Addons

• дождитесь загрузки списка доступных дополнений

• нажмите BUY напротив дополнения Anti-Hacker

• откройте закладку Anto-Hacker в разделе Security

• настройте параметры модуля, загрузите полученный ключ лицензии, нажмите Update

• запустите службу Anti-Hacker, нажав Service Start

Чтобы убедиться, что деньги на защиту потрачены не зря, зайдите на закладку Anti-Hacker через месяц, оцените количество попыток добраться до ваших секретов. Если станция установлена в корпоративной сети и недоступна извне, скорее всего, список заблокированных адресов будет пуст, но лучше и в этом случае не экономить на спичках – однажды хакеры задействуют свою бот-нет из зараженных компьютеров, среди которых могут оказаться компьютеры и вашей сети.

 

Защита консольного доступа по SSH

Подключитесь к Elastix через SSH-соединение как пользователь root и создайте пользователя, например, «admin1», назначьте пароль, предоставьте пользователю необходимый доступ:

groupadd sudoers

adduser – G sudoers admin1

passwd admin1

echo '%sudoers ALL = (ALL) ALL' >>/etc/sudoers

sed – i '2i\PATH=$PATH:/sbin:/usr/sbin' /home/admin1/.bashrc

Откройте файл настроек SSH

mcedit /etc/ssh/sshd_config

Добавьте список пользователей, которым позволено управлять сервером по SSH, и их IP-адреса, с которых разрешено подключаться для управления сервером по SSH.

Port 11122

AllowUsers [email protected] # from Office #1

AllowUsers [email protected] # from Office #2

AllowUsers [email protected] # from home

PermitRootLogin no

Если Вы не используйте GSS API (например, для авторизации через Active Directory), можно отключить этот протокол, чтобы SSH подключался быстрее:

GSSAPIAuthentication no

Перезапустите службу SSH:

service sshd restart

Подключитесь к системе как пользователь admin1:

ssh – p 11122 [email protected]

Подключившись к системе настройте сетевую переменную $PATH:

nano.bash_profile

измените строку PATH следующим образом:

PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

сохраните изменения. Теперь подключайтесь к АТС только как admin1, забудьте про пользователя root. Для выполнения команд, требующих полных прав к системе используйте префикс «sudo» перед командами. Например, «sudo service asterisk restart».

 

Защита доступа к WEB-интерфейсу

Откройте основной файл настроек HTTP

sudo mcedit /etc/httpd/conf/httpd.conf

Измените порт и ограничьте доступ:

Listen 11180 #вместо Listen 80

#замените:

# Order Allow, Deny

# Deny from All

#на свои адреса:

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

Откройте файл настроек SSL

sudo mcedit /etc/httpd/conf.d/ssl.conf

Измените порт:

Listen 11188 #вместо Listen 443

Откройте файл настроек сайта управления Elastix

sudo mcedit /etc/httpd/conf.d/elastix-htaccess.conf

добавьте адреса, с которых позволяется подключаться к станции:

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Перезапустите службу HTTPD:

sudo service httpd restart

 

Защита портов через Firewall

Меню Security доступно в раскрывающемся списке