Русификация 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 доступно в раскрывающемся списке