Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
При публикации АТС на публичном IP адресе возникает задача по защите АТС от сканеров, вредителей, кто пытается подобрать пароли к SIP учетным записям АТС. Если установлен простой числовой пароль, то он будет подобран очень быстро, что повлечет убытки.
Для базовой защиты от сканеров обязательно следует включить fail2ban. Дополнительно, можно более тонко настроить правила iptables.
Перейдите в раздел "Кастомизация системных файлов"
Перейдите к редактированию файла /etc/firewall_additional
Установите режим "Добавлять в конец файла", вставьте следующий код:
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
Добавленное правило позволит блокировать все входящие запросы по UDP протоколу, которые содержат подстроку «friendly-scanner»
Более полный пример набора правил:
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipcli' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sip-scan' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'iWar' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipvicious' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipsak' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sundayddr' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'VaxSIPUserAgent' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipcli' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sip-scan' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'iWar' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipvicious' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipsak' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sundayddr' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'VaxSIPUserAgent' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
Это обезопасит от большинства сканеров, которые при запросе упоминаю User-Agent.
Накладываем ограничение на 30 запросов в 1 секунду.
iptables -I INPUT 2 -p udp -m state --state NEW -m recent --set --name SipAttacks --mask 255.255.255.255 --rsource -m udp --dport 5060
iptables -I INPUT 2 -p udp -m state --state NEW -m recent --update --seconds 1 --hitcount 30 --name SipAttacks --mask 255.255.255.255 --rsource -m udp --dport 5060 -j DROP
iptables -I INPUT 2 -p tcp -m state --state NEW -m recent --set --name SipAttacks --mask 255.255.255.255 --rsource -m tcp --dport 5060
iptables -I INPUT 2 -p tcp -m state --state NEW -m recent --update --seconds 1 --hitcount 30 --name SipAttacks --mask 255.255.255.255 --rsource -m tcp --dport 5060 -j DROP
iptables -I INPUT 2 -p tcp -m state --state NEW -m recent --set --name SipAttacks --mask 255.255.255.255 --rsource -m tcp --dport 5061
iptables -I INPUT 2 -p tcp -m state --state NEW -m recent --update --seconds 1 --hitcount 30 --name SipAttacks --mask 255.255.255.255 --rsource -m tcp --dport 5061 -j DROP
ВНИМАНИЕ: Все данные на дисках будут уничтожены.
Подготовьте ПК с двумя дисками одинакового объема
Загрузите машину в режиме LiveCD или LiveUSB
Подключитесь к машине через SSH
Выполните в консоли команду.
fdisk -l
Будут отображены имена дисков. В моем случае это.
/dev/sda
/dev/sdb
Затираем суперблоки на дисках.
mdadm --zero-superblock --force /dev/sd{b,a}
Чистим старые метаданные.
wipefs --all --force /dev/sd{b,a}
Создаем RAID1.
mdadm --create --metadata=0.90 --verbose /dev/md0 -l 1 -n 2 /dev/sd{b,a}
На вопрос «Continue creating array?» отвечаем утвердительно "y".
Далее можно начать установку по инструкции . При выборе диска следует указать md0
TODO: Необходимо править grub.cfg файл. Иначе, не факт, что при сбое одного из дисков, система загрузится.
При работе с поставщиками услуг связи периодически могут возникать проблемы. К примеру сервер поставщика не отвечает / не доступен. В рамках данной статьи будет предложен механизм оповещения на email системного администратора.
Для работы оповещений потребуется настроить SMTP клиент. См. инструкции в разделе «Почта и уведомления»
Создайте новое «Приложение диалплана».
Укажите название - например, Provider Monitoring, короткий номер для приложения, к примеру 99, а так жу выберите «Тип кода» - «PHP AGI Скрипт»
Перейдите во вкладку "Программный код":
Вставьте код:
<?php
use MikoPBX\Common\Models\PbxSettings;
use MikoPBX\Common\Models\LanInterfaces;
use MikoPBX\Core\System\Notifications;
use MikoPBX\PBXCoreREST\Lib\SIPStackProcessor;
require_once 'Globals.php';
$result = SIPStackProcessor::callBack(['action' => 'getRegistry']);
$adminMail = null;
$localIP = '';
$message = '';
foreach ($result->data as $provider) {
if ($provider['state'] !== 'OFF' && $provider['state'] !== 'REGISTERED') {
if ($adminMail === null) {
$adminMail = PbxSettings::getValueByKey('SystemNotificationsEmail');
$interfaces = LanInterfaces::find("disabled='0'");
foreach ($interfaces as $interface) {
if (!empty($interface->ipaddr)) {
$localIP = $interface->ipaddr;
break;
}
}
}
$message .= "Provider state: {$provider['state']}<br>" . "Url (local): ']} <br><br>";
}
}
if (!empty($message) && !empty($adminMail)) {
$notify = new Notifications();
try {
$notify->sendMail($adminMail, 'Provider invalid state...', $message);
} catch (\Throwable $e) {
}
}
Сохраните изменения и скопируйте идентификатор приложения из адресной строки браузера, он имеет вид «DIALPLAN-APP-9С060381»
Перейдите в раздел Система → Кастомизация системных файлов, откройте для редактирования файл /var/spool/cron/crontabs/root
Выберите режим «Добавлять в конец файла», внизу в черное поле для редактирования вставьте следующий код:
*/5 * * * * /usr/bin/php -f /var/lib/asterisk/agi-bin/DIALPLAN-APP-9С060381.php start > /dev/null 2> /dev/null
Сохраните изменения.
Готово!
Вариант переноса MikoPBX на другой хост
Данный способ заключается в создании резервной копии текущей конфигурации MikoPBX, её переносе и восстановлении на новом сервере. Он прост в реализации, подходит для небольших систем. Этот метод удобен для пользователей с минимальным техническим опытом.
Для начала нужно выполнить резервное копирование Вашей прошлой системы. Подробнее прочитать про это Вы можете в данной статье.
Выберите данные, которые Вы хотите перенести, дождитесь окончания процесса.
Выполните загрузку Вашего архива, нажав на соответствующий элемент в разделе "Модуль резервного копирования":
На новом хосте (сервере) Вашей MikoPBX выполните восстановление из архива, нажав на элемент "Загрузите файл для восстановления"
После этого Ваша система будет восстановлена из архива. Данный способ идеально подходит для переноса небольшого объёма данных.
Вариант переноса MikoPBX на другой хост
Второй способ предполагает настройку автоматического резервного копирования с сохранением данных напрямую на целевой сервер через SFTP. Этот метод особенно удобен для переноса большего объёма данных, так как исключает необходимость промежуточного хранения резервной копии.
Для начала нам необходимо настроить резервное копирование по расписанию для MikoPBX, с которой необходимо перенести данные.
Перейдите в модуль "Резервное копирование":
Перейдите во вкладку "Расписание архивации":
Далее настраиваем параметры архивации по расписанию:
Адрес сервера - адрес Вашей новой станции MikoPBX.
Протокол - SFTP
Порт - 22
Имя пользователя - имя пользователя для SSH подключения к вашей новой станции.
Пароль - пароль для SSH подключения к вашей новой станции.
Путь на сервере - "/storage/usbdisk1/mikopbx/backup/"
Прочитать про SSH подключение Вы можете в этой статье. Для начала резервного копирования сразу после сохранения настроек - выберите параметр "Начать создание копии сразу после сохранения настроек". Так же вы можете выбрать необходимые данные для переноса в соответствующем разделе.
Дождитесь завершения резервного копирования и отключите старую машину.
При успешном переносе данных, Ваша резервная копия появится в разделе модуля на новом хосте:
Выполните восстановление из копии на вашем новом хосте, для этого:
Перейдите в раздел настроек резервной копии, нажав на соответствующий элемент:
Выберите данные, которые Вам необходимо перенести и нажмите "Восстановить из архива":
Разбор вариантов переноса MikoPBX на другой сервер
Существует несколько способов для переноса MikoPBX на другой хост (сервер). Каждый из них имеет свои положительные моменты и особенности. Всю краткую информацию по каждому из вариантов Вы можете изучить далее в этом разделе.
Описание:
Создаётся резервная копия текущей конфигурации MikoPBX, которая затем загружается на новый сервер. Этот способ подходит для небольших объемов данных.
Плюсы:
Простота в настройке.
Позволяет сохранить текущую конфигурацию.
Особенности:
Может быть ненадёжен при больших объемах данных.
Требует промежуточного хранения резервной копии (например, на локальном диске или облаке).
Описание:
Резервная копия автоматически создаётся и сохраняется сразу на целевой сервер через протокол SFTP. Этот способ особенно эффективен для больших объемов данных.
Плюсы:
Подходит для больших объемов данных.
Позволяет минимизировать ручные действия.
Обеспечивает прямой перенос данных между серверами.
Особенности:
Требует настроек SFTP на обоих серверах.
Необходим доступ к данным текущего пользователя SSH для корректной работы.
Описание:
Используется команда rsync
для синхронизации данных напрямую между старым и новым серверами. Этот метод удобен для опытных пользователей.
Плюсы:
Быстрая синхронизация даже для больших объемов данных.
Сохранение прав доступа и структуры каталогов.
Не требует создания промежуточных резервных копий.
Особенности:
Требует базовых знаний работы с командной строкой.
Возможны ошибки при настройке (например, указание неправильных путей).
Серверы должны быть одновременно доступны в сети.
Вариант переноса данных с использованием rsync (предпочтительный)
В данной статье будет разобран вариант переноса данных на новый хост с помощью rsync. Данный вариант - перенос с использованием генерируемого ключа для ssh-авторизации (предпочтительный). Этот способ является самым надёжным из представленных в разделе, поэтому и является рекомендуемым к использованию.
Схематично процесс переноса можно изобразить следующим образом:
Для начала нам необходимо установить SSH соединение с новой MikoPBX. Прочитать как сделать это, можно в .
Далее переходим в консоль ([9] Console). Первым делом необходимо создать директорию для хранения файла со скриптом. Используйте следующую команду:
Перейдите в созданную директорию:
Создадим файл "transfer-rsync.sh" для хранения скрипта:
Далее необходимо заполнить файл содержимым (скриптом). Ознакомиться с ним Вы можете.
На данном этапе необходимо сделать файл исполняемым. Для этого используйте следующую команду:
Запустите скрипт, используя команду:
Для начала будет предложено ввести необходимые данные о вашей старой станции MikoPBX:
IP-адрес вашей старой станции
Имя для ssh-авторизации
Порт для ssh-авторизации
Далее будет предложено сгенерировать новый ключ. В случае, если ранее вы этого не делали, введите "y" для подтверждения. Если ранее вы уже генерировали ключ для доступа ко второй MikoPBX - введите "n":
Будет создан новый ключ. Вам необходимо скопировать его и вставить в web-Интерфейсе старой MikoPBX. Сделать это нужно в разделе "Общие настройки" -> "SSH" -> Поле "SSH Authorized keys"
После того, как вы сохранили ключ на старой MikoPBX, подождите несколько секунд и нажмите любую клавишу для продолжения выполнения скрипта.
Будет произведен перенос всех данных на новый хост. Это может занять некоторое время.
После переноса обязательно проверяйте целостность всех данных, перед тем, как сбрасывать старую MikoPBX!
mkdir -p /storage/usbdisk1/transfer
cd /storage/usbdisk1/transfer
touch transfer-rsync.sh
curl -o /storage/usbdisk1/transfer/transfer-rsync.sh https://gist.githubusercontent.com/excla1mmm/c9891306b459cac0c7ea3c785ab0936e/raw/ec57ab60ee48112b4a16635e7b47955e5a044513/transfer-rsync.sh
chmod +x transfer-rsync.sh
./transfer-rsync.sh
Перейдите в раздел «Общие настройки» -> "Удаление настроек системы"
В поле ввода вставьте текст "удалить всё", нажмите "Сохранить"
Откройте консольное меню MikoPBX. С клавиатуры введите 9 для перехода в консоль АТС.
Введите последовательно две команды:
cp /conf.default/mikopbx.db /cf/conf/mikopbx.db
reboot
После выполнения данных команд MikoPBX перезагрузится. Вход в web-интерфейс происходит с логином (admin) и паролем (admin) по умолчанию.