All pages
Powered by GitBook
1 of 9

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Установка

Тонкая настройка firewall

При публикации АТС на публичном IP адресе возникает задача по защите АТС от сканеров, вредителей, кто пытается подобрать пароли к SIP учетным записям АТС. Если установлен простой числовой пароль, то он будет подобран очень быстро, что повлечет убытки.

Для базовой защиты от сканеров обязательно следует включить fail2ban. Дополнительно, можно более тонко настроить правила iptables.

  1. Перейдите в раздел "Кастомизация системных файлов"

Раздел "Кастомизация системных файлов"
  1. Перейдите к редактированию файла /etc/firewall_additional

Файл "/etc/firewall_additional"
  1. Установите режим "Добавлять в конец файла", вставьте следующий код:

iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
Код для файла "/etc/firewall_additional"

Добавленное правило позволит блокировать все входящие запросы по 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

Установка на MDADM RAID1

Подготовка

ВНИМАНИЕ: Все данные на дисках будут уничтожены.

  1. Подготовьте ПК с двумя дисками одинакового объема

  2. Загрузите машину в режиме LiveCD или LiveUSB

  3. Подключитесь к машине через SSH

Сборка RAID 1

  1. Выполните в консоли команду.

fdisk -l 
  1. Будут отображены имена дисков. В моем случае это.

/dev/sda 
/dev/sdb
  1. Затираем суперблоки на дисках.

mdadm --zero-superblock --force /dev/sd{b,a} 
  1. Чистим старые метаданные.

wipefs --all --force /dev/sd{b,a}
  1. Создаем RAID1.

mdadm --create --metadata=0.90 --verbose /dev/md0 -l 1 -n 2 /dev/sd{b,a}
  1. На вопрос «Continue creating array?» отвечаем утвердительно "y".

  2. Далее можно начать установку по инструкции . При выборе диска следует указать md0

Полезные статьи

  • Работа с mdadm в Linux для организации RAID

Grub

TODO: Необходимо править grub.cfg файл. Иначе, не факт, что при сбое одного из дисков, система загрузится.

Мониторинг провайдеров на MikoPBX

При работе с поставщиками услуг связи периодически могут возникать проблемы. К примеру сервер поставщика не отвечает / не доступен. В рамках данной статьи будет предложен механизм оповещения на email системного администратора.

Для работы оповещений потребуется настроить SMTP клиент. См. инструкции в разделе «Почта и уведомления»

  1. Создайте новое «Приложение диалплана».

Создание нового приложения диалплана
  1. Укажите название - например, Provider Monitoring, короткий номер для приложения, к примеру 99, а так жу выберите «Тип кода» - «PHP AGI Скрипт»

Параметры диалплана
  1. Перейдите во вкладку "Программный код":

Раздел "Программный код"
  1. Вставьте код:

<?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) {
    }
}
  1. Сохраните изменения и скопируйте идентификатор приложения из адресной строки браузера, он имеет вид «DIALPLAN-APP-9С060381»

Идентификатор приложения диалплана
  1. Перейдите в раздел Система → Кастомизация системных файлов, откройте для редактирования файл /var/spool/cron/crontabs/root

Необходимый файл для редактирования
  1. Выберите режим «Добавлять в конец файла», внизу в черное поле для редактирования вставьте следующий код:

Скорректируйте имя файла согласно вашему идентификатору приложения «DIALPLAN-APP-9С060381»

*/5 * * * * /usr/bin/php -f /var/lib/asterisk/agi-bin/DIALPLAN-APP-9С060381.php start > /dev/null 2> /dev/null 

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

Готово!

Перенос с помощью резервного копирования

Вариант переноса MikoPBX на другой хост

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

  1. Для начала нужно выполнить резервное копирование Вашей прошлой системы. Подробнее прочитать про это Вы можете в данной статье.

Создание новой резервной копии
  1. Выберите данные, которые Вы хотите перенести, дождитесь окончания процесса.

Опции архивирования
  1. Выполните загрузку Вашего архива, нажав на соответствующий элемент в разделе "Модуль резервного копирования":

Кнопка для загрузки архива
  1. На новом хосте (сервере) Вашей MikoPBX выполните восстановление из архива, нажав на элемент "Загрузите файл для восстановления"

"Загрузите файл для восстановления"

После этого Ваша система будет восстановлена из архива. Данный способ идеально подходит для переноса небольшого объёма данных.

Перенос с помощью резервного копирования по расписанию

Вариант переноса MikoPBX на другой хост

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

Настройка Резервного копирования по расписанию

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

  1. Перейдите в модуль "Резервное копирование":

Страница модуля резервного копирования
  1. Перейдите во вкладку "Расписание архивации":

Вкладка "Расписание архивации"
  1. Далее настраиваем параметры архивации по расписанию:

  • Адрес сервера - адрес Вашей новой станции MikoPBX.

  • Протокол - SFTP

  • Порт - 22

  • Имя пользователя - имя пользователя для SSH подключения к вашей новой станции.

  • Пароль - пароль для SSH подключения к вашей новой станции.

  • Путь на сервере - "/storage/usbdisk1/mikopbx/backup/"

Прочитать про SSH подключение Вы можете в этой статье. Для начала резервного копирования сразу после сохранения настроек - выберите параметр "Начать создание копии сразу после сохранения настроек". Так же вы можете выбрать необходимые данные для переноса в соответствующем разделе.

Параметры разервного копирования по расписанию

Дождитесь завершения резервного копирования и отключите старую машину.

Восстановление из копии на новом хосте

При успешном переносе данных, Ваша резервная копия появится в разделе модуля на новом хосте:

Резервная копия

Выполните восстановление из копии на вашем новом хосте, для этого:

  1. Перейдите в раздел настроек резервной копии, нажав на соответствующий элемент:

Переход в настройки восстановления из копии
  1. Выберите данные, которые Вам необходимо перенести и нажмите "Восстановить из архива":

Окно восстановления из архива

Перенос MikoPBX на другой сервер

Разбор вариантов переноса MikoPBX на другой сервер

Существует несколько способов для переноса MikoPBX на другой хост (сервер). Каждый из них имеет свои положительные моменты и особенности. Всю краткую информацию по каждому из вариантов Вы можете изучить далее в этом разделе.

Вариант №1: Перенос с помощью резервного копирования

Описание:

Создаётся резервная копия текущей конфигурации MikoPBX, которая затем загружается на новый сервер. Этот способ подходит для небольших объемов данных.

Плюсы:

  • Простота в настройке.

  • Позволяет сохранить текущую конфигурацию.

Особенности:

  • Может быть ненадёжен при больших объемах данных.

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


Вариант №2: Перенос с помощью SFTP и резервного копирования по расписанию

Описание:

Резервная копия автоматически создаётся и сохраняется сразу на целевой сервер через протокол SFTP. Этот способ особенно эффективен для больших объемов данных.

Плюсы:

  • Подходит для больших объемов данных.

  • Позволяет минимизировать ручные действия.

  • Обеспечивает прямой перенос данных между серверами.

Особенности:

  • Требует настроек SFTP на обоих серверах.

  • Необходим доступ к данным текущего пользователя SSH для корректной работы.


Вариант №3: Перенос с использованием rsync

Описание:

Используется команда rsync для синхронизации данных напрямую между старым и новым серверами. Этот метод удобен для опытных пользователей.

Плюсы:

  • Быстрая синхронизация даже для больших объемов данных.

  • Сохранение прав доступа и структуры каталогов.

  • Не требует создания промежуточных резервных копий.

Особенности:

  • Требует базовых знаний работы с командной строкой.

  • Возможны ошибки при настройке (например, указание неправильных путей).

  • Серверы должны быть одновременно доступны в сети.


Перенос с помощью rsync

Вариант переноса данных с использованием rsync (предпочтительный)

В данной статье будет разобран вариант переноса данных на новый хост с помощью rsync. Данный вариант - перенос с использованием генерируемого ключа для ssh-авторизации (предпочтительный). Этот способ является самым надёжным из представленных в разделе, поэтому и является рекомендуемым к использованию.

Схематично процесс переноса можно изобразить следующим образом:

Создание файла для хранения скрипта и наполнение его содержимым

  1. Для начала нам необходимо установить SSH соединение с новой MikoPBX. Прочитать как сделать это, можно в .

  1. Далее переходим в консоль ([9] Console). Первым делом необходимо создать директорию для хранения файла со скриптом. Используйте следующую команду:

  1. Перейдите в созданную директорию:

  1. Создадим файл "transfer-rsync.sh" для хранения скрипта:

  1. Далее необходимо заполнить файл содержимым (скриптом). Ознакомиться с ним Вы можете.

Запуск и работа со скриптом

  1. На данном этапе необходимо сделать файл исполняемым. Для этого используйте следующую команду:

  1. Запустите скрипт, используя команду:

  1. Для начала будет предложено ввести необходимые данные о вашей старой станции MikoPBX:

  • IP-адрес вашей старой станции

  • Имя для ssh-авторизации

  • Порт для ssh-авторизации

  1. Далее будет предложено сгенерировать новый ключ. В случае, если ранее вы этого не делали, введите "y" для подтверждения. Если ранее вы уже генерировали ключ для доступа ко второй MikoPBX - введите "n":

  1. Будет создан новый ключ. Вам необходимо скопировать его и вставить в web-Интерфейсе старой MikoPBX. Сделать это нужно в разделе "Общие настройки" -> "SSH" -> Поле "SSH Authorized keys"

  1. После того, как вы сохранили ключ на старой MikoPBX, подождите несколько секунд и нажмите любую клавишу для продолжения выполнения скрипта.

Будет произведен перенос всех данных на новый хост. Это может занять некоторое время.

После переноса обязательно проверяйте целостность всех данных, перед тем, как сбрасывать старую MikoPBX!

Перенос с помощью резервного копирования
Перенос с помощью резервного копирования по расписанию
Перенос с помощью rsync
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
этой статье
по ссылке
Схема переноса данных
Успешное SSH соединение с новой MikoPBX
Выполнение команд для создания файла
Ввод необходимых данных
Генерация нового ключа
Сгенерированный ключ ssh
Вставленный ключ
Успешный перенос

Сброс к заводским настройкам

Способ 1

  1. Перейдите в раздел «Общие настройки» -> "Удаление настроек системы"

  1. В поле ввода вставьте текст "удалить всё", нажмите "Сохранить"

Способ 2

  1. Откройте консольное меню MikoPBX. С клавиатуры введите 9 для перехода в консоль АТС.

  1. Введите последовательно две команды:

cp /conf.default/mikopbx.db /cf/conf/mikopbx.db
reboot
  1. После выполнения данных команд MikoPBX перезагрузится. Вход в web-интерфейс происходит с логином (admin) и паролем (admin) по умолчанию.