Freepbx отключить firewall через консоль
pinbalist » 02 сен 2020, 12:00
Добрый день.FreePBX 14
Ситуация следующая: Есть дополнение которое работает в астериске, слушает порт 8085. У пользователей в браузере висит клиентская часть - подключается к серверу. После включения встроенного ФВ - работать перестало. В Firewall-Networks добавил всю подсеть в Trusted - не помогло, но если добавить конкретный IP - помогает, дополнение работает, клиент подключается. Как ещё ему указать на то, чтобы он всю подсеть пропускал?
ded » 02 сен 2020, 12:21
В каком виде добавили всю подсеть в Trusted? CIDR ?
Приведите скриншот.
Если всё сделано правильно - это можно проверить через
iptables-save | grep 10.1.2
где 10.1.2 - ваша подсеть.
pinbalist » 02 сен 2020, 12:34
ded писал(а): Приведите скриншот.iptables-save | grep 10.1.2
Вывод команды iptables-save | grep
-A fpbxnets -s 10.49.0.0/22 -j zone-internal
-A fpbxsmarthosts -s 10.49.0.0/22 -m mark --mark 0x1/0x1 -j ACCEPT
ded » 02 сен 2020, 15:32
pinbalist » 02 сен 2020, 15:48
А тут другое немного
-A fpbxnets -s 10.49.0.71/32 -j zone-trusted
-A fpbxregistrations -s 10.49.0.71/32 -j fpbxknownreg
ded » 02 сен 2020, 18:19
Надо смотреть как соотносятся между собой цепочки zone-internal и zone-trusted.
Разбираетесь в iptables?
pinbalist » 03 сен 2020, 16:14
Не настолько, насколько хотелось бы.Я правильно понимаю что нет определённого файла с правилами iptables который можно редактировать, всё делается в командной строке?
ded » 03 сен 2020, 16:30
Нет, неправильно.
В новых версиях над сервисом iptables есть надстройка - субсистема firewalld
pinbalist » 04 сен 2020, 07:59
Если я правильно помню, до firewalld был вполне себе нормальный файл с настройками iptables. Вот и думал что тут так же.
Firewalld активен.
iptables -L выдаёт большую простыню, среди которой есть
Chain fpbxnets (1 references)
target prot opt source destination
zone-trusted all -- 10.49.0.71 anywhere
zone-internal all -- 10.49.0.0/22 anywhere
Думается что самый простой вариант - поменять "internal" на "trusted".
pinbalist » 04 сен 2020, 08:20
pinbalist писал(а): Думается что самый простой вариант - поменять "internal" на "trusted".Поменял, удалил строку с internal. Рестартанул asterisk (хотел рестартануть firewalld), рестартанул firewalld и теперь у меня iptables -L выдаёт вот что
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fpbxsvc-nfs (0 references)
target prot opt source destination
Chain fpbxsvc-smb (0 references)
target prot opt source destination
Chain rejsvc-nfs (0 references)
target prot opt source destination
Chain rejsvc-smb (0 references)
target prot opt source destination
Во-первых, следует выполнить проверку установки модуля System Firewall. Для этого переходим в меню: Admin → Module Admin. Если модуль System Firewall не обнаружен , его следует установить .
Firewall в FreePBX 14
Переключаемся на настройки: Connectivity → Firewall
Если откроется следующее окно, нажимаем Enable:
Наш Firewall был включен на стадии установки FreePBX 14, поэтому наше окно настройки может отличаться от вашего.
Это делается с помощью небольшого процесса, который выполняется на сервере УАТС и автоматически обновляет правила брандмауэра на основе текущей конфигурации внешней линии (транка) и расширения УАТС.
Responsive Firewall
Включение настроек на данной вкладке отключаются блокировку любых попыток подключения.
Если входящие попытки подключения недействительны (INVALID), трафик на этом сервере будет отброшен на короткий период времени. Атакующий источник (хост) блокируется на 24 часа, если попытки аутентификации продолжаются без успеха.
Когда fail2ban включен и настроен на этом сервере, fail2ban будет отправлять вам уведомления по электронной почте, когда это произойдет.
Interfaces
Все интерфейсы должны быть назначены Default Zone (зоне по умолчанию). Любой трафик, полученный этим интерфейсом, если он не переопределен в сетях, будет иметь доступ к сервисам, доступным для этой зоны.
Внимание! Большинство интерфейсов должны быть настроены на Internet (Default Internet) интернет.
На данной вкладке необходимо указать какой интерфейс у вас смотрит в Интернет, а какой в локальную сеть. У нас виртуальная машина (ВМ) с одним сетевым интерфейсом, который служит для внешних подключений (транков) с провайдером и для подключений IP-телефонов из локальной сети.
Networks
Более точная настройка сетевых интерфейсов. В нашем случае (когда один сетевой интерфейс это более актуально).
На рисунке ниже используется подсеть 192.168.90.0/24, для которой разрешены любые подключения. Данная подсеть не попадает под правила файервола. Подсеть 10.0.3.0/24 (или 10.0.3.0/255.255.255.0) является локальной. Например, из неё могут подключатся телефоны, шлюзы.
Services
Более детально эти политики настраиваются на вкладке Services.
Службы, назначенные зонам, доступны для соединений, соответствующих этим зонам.
Extra Services
Расширенные настройки доступа различных служб. В целях безопасности следует отключить явно неиспользуемые и ограничить от доступа из сети Интернет.
Custom Services
На этой вкладке можно определить пользовательские службы. Пожалуйста, убедитесь, что вы случайно не выставляете автоматически настроенную службу, используя тот же порт и протокол.
Blacklist
Обратите внимание, что изменения в брандмауэре вступают в силу немедленно.
Advanced
Zone Information
Каждый сетевой интерфейс вашего сервера должен быть сопоставлен с зоной. Обратите внимание, что по умолчанию все интерфейсы сопоставляются с доверенными (доверенные сети не фильтруются вообще, поэтому брандмауэр для любого трафика, поступающего на этот интерфейс отключен). Зоны, которые вы можете использовать:
Port/Service Map
На этой странице отображаются обнаруженные порты и диапазоны портов для всех известных служб.
Preconfigured
На этой вкладке возможно добавить предварительно настроенный (обнаруженный) набор сетей в доверенную зону (Trusted Zone). После добавления выбранных параметров их можно при необходимости настроить на вкладке Connectivity → Firewall → Networks.
Advanced Settings
Расширенные настройки, связанные с обслуживанием системы.
Это позволяет опытным пользователям настраивать брандмауэр в соответствии с их спецификациями. Не включайте эту настройку, если вы не знаете для чего она.
Включение Reject Packets отправляет явный ответ другой машине. После чего сообщает об административной блокировке. Если параметр отключен, пакет автоматически отбрасывается, не давая злоумышленнику никаких указаний на то, что трафик перехвачен.
Отправляя пакет reject, злоумышленник понимает, что он обнаружил сервер. При отбрасывании пакета злоумышленнику не отправляется никакого ответа, и он может перейти к другой цели.
Обычно эта опция должна быть отключена, только если вы не отлаживаете сетевое подключение.
Мы рассказали как настраивать Firewall в FreePBX 14! Будем рады вашим комментариям и замечаниям.
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Начиная знакомство с FreePBX, даже опытные системные администраторы зачастую допускают одни и те же ошибки, которые способны серьезно испортить настроение и отбить всякое желание продолжать освоение этой системы.
В первую очередь, безусловно, это ошибки, связанные с безопасностью станции. Помните, что подключаясь к оператору телефонии вы несете полную финансовую ответственность за звонки, даже если на самом деле вы их не совершали! Давайте посмотрим, что нужно сделать в первую очередь, а чего делать категорически нельзя.
Сразу же после установки системы необходимо отключить возможность приема гостевых и анонимных звонков, если, конечно, вы не собираетесь их использовать. В противном случае, вы фактически предоставляете возможность любому человеку осуществлять звонки через вашу станцию, что может привести к значительным финансовым потерям.
Настройки → Установки Asterisk для SIP → Общие настройки SIP
Настройки → Установки Asterisk для SIP → Установки канала SIP
Несмотря на то, что FreePBX постоянно обновляется, и разработчики прикладывают большие усилия к обеспечению безопасности системы, периодически обнаруживаются уязвимости в коде, используя которые злоумышленники могут получить, например, параметры доступа к вашим операторам связи. Несмотря на то, что в таком случае звонки будут поступать не с вашей станции, оператор, скорее всего, потребует оплаты именно с вас. Поэтому не следует забывать о защите веб-интерфейса: если сервер установлен в вашей локальной сети, не стоит пробрасывать 80 порт наружу — для удаленной настройки вы можете использовать vpn, ssh-тоннель или любой другой способ доступа. Если же FreePBX установлен на удаленном сервере или по какой-то другой причине имеет прямой доступ в сеть, можно ограничить возможность подключения по 80 порту на уровне iptables, а также использовать парольную защиту Basic Auth как дополнительное средство обеспечения безопасности.
В случае, если вы установили FreePBX с официального образа, вам нужно будет отредактировать файл
В самый конец, перед последней строкой нужно добавить следующее
Обратите внимание на путь к файлу .htpasswd — вы можете задать любой путь для его хранения. Затем потребуется собственно создать аккаунт. Перейдя в выбранную директорию, выполните
и введите пароль для пользователя admin. Не забудьте перезагрузить apache:
И проверьте результат:
Также следует обратиться к вашему оператору связи и ограничить возможность подключения с вашими учетными данными по ip-адресу: в таком случае, даже если злоумышленники получат ваш логин и пароль, воспользоваться ими не получится.
Безусловно, нельзя забывать и о безопасности аккаунтов пользователей на вашей станции. Если возможно (например, все ваши пользователи находятся в локальной сети), обязательно ограничивайте возможность подключения по ip-адресам — даже если пароль определенного пользователя будет скомпрометирован, воспользоваться им извне злоумышленники не смогут.
Приложения → Внутренние номера → Внутренний номер → Расширенный
Бывают ситуации, когда ограничить пользователя по ip не представляется возможным — например, аккаунт используется с мобильного телефона, из разных 3g, 4g, и wifi-сетей. В таком случае, в первую очередь, проверьте надежность ваших паролей. Запомните, даже на “пустой” станции, даже для тестирования, никогда не нужно ставить пароли типа qwerty, ведь забыть впоследствии о таком аккаунте проще простого, как и подобрать такой пароль.
Приложения → Внутренние номера → Внутренний номер → Общие
Необходимо задуматься и о переборе паролей. Естественно, если ваш сервер обслуживает клиентов из одной сети и подключается к одному оператору связи, вы можете и даже должны ограничить возможность подключения к sip-порту (обычно, 5060) для всех, кроме известных адресов своих сетей и провайдеров, например, так, если вы устанавливали FreePBX вручную
Или воспользоваться встроенным модулем веб-интерфейса Firewall, если вы установили систему с официального образа. Вы можете задать доверенные и внешние сети вручную в меню
Подключения → Firewall → Zones → Network
И затем определить, к каким сервисам будет открыт доступ в закладке
Подключения → Firewall → Services
Но не всегда возможно оставить только несколько подсетей для sip-порта. В таком случае крайне рекомендуется поставить fail2ban и настроить его на использование с asterisk. Этот демон, основываясь на логах попыток авторизации, блокирует слишком настойчивых на определенное время после заданного числа попыток авторизации, что позволяет пресекать брутфорс. В последних версиях fail2ban правила для asterisk уже включены в поставку, но рекомендуется проверить его работоспособность — выполнить несколько попыток регистрации с заведомо неверным логином и паролем (только обязательно не с того же ip-адреса, с которого вы подключаетесь к серверу!) и проверить, заблокируется ли этот адрес командой
В официальной сборке FreePBX система защиты от перебора паролей уже установлена и настроена. Заблокированные адреса можно найти в закладке
Подключения → Firewall → Статус
Очень часто, особенно в небольших организациях, когда используется только один провайдер, системные администраторы не уделяют внимания грамотной настройке исходящих маршрутов, ограничиваясь шаблоном X., разрешая таким образом всем пользователям звонить на любой номер телефона. Даже если полностью исключить возможность совершения звонков злоумышленниками, нельзя забывать о том, что пользователь может просто ошибиться и позвонить куда-нибудь в Доминиканскую республику, так что ограничивать исходящие звонки нужно в обязательном порядке. Обычно достаточно добавить шаблоны вызова городских и мобильных номеров телефонов, для РФ маршрут может выглядеть так:
Подключения → Исходящая маршрутизация → Маршрут → Правила набора
Здесь мы задаем, что номер должен быть 11-значным, начинаться с 8, и вторая цифра должна быть 3,4,8 или 9, что полностью перекрывает все Российские номера, а также разрешаем звонить через этот маршрут только внутренним номерам 100-199. В случае, если кому-то из сотрудников нужно открыть международные звонки, следует добавить дополнительный маршрут для него перед основным, и обязательно в поле CID указать его номер или шаблон номеров, если таких сотрудников несколько.
А также стоит всегда указывать количество одновременных исходящих вызовов в настройках транков, особенно в том случае, если они не ограничены на стороне оператора (10 сотрудников никак не смогут сделать 100 исходящих вызовов), а вот в случае несанкционированных звонков взломщики пытаются звонить в максимальное количество потоков.
Подключения → Транки → Настройки Транка → Общие
Приложения → Очереди → Настройки очереди → Параметры времени и операторов
Приложения → Очереди → Настройки очереди → Параметры емкости очереди
Голосовые приветствия и голосовые меню — безусловно, полезные и нужные функции, используемые почти каждой организацией, решившей перейти на FreePBX, но и при их настройке часто допускаются ошибки. Во-первых, модуль Приветствие, то есть просто воспроизведение голосового ролика, который нельзя пропустить (или можно пропустить по нажатию клавиши, о чем обычно забывают уведомить пользователя), стоит использовать только тогда, когда в этом есть насущная необходимость. Мне доводилось видеть как в Приветствие помещают ролик длительностью одна минута, и только после него следует IVR с предложением выбрать нужный отдел. Когда клиент звонит в первый раз, это воспринимается нормально, но когда он перезванивает пятый раз за час, и пятый раз подряд слушает о том, как компания рада его звонку, он начинает сомневаться в этом. Клиент уже точно знает, что ему нужно нажать кнопку 2 и переключиться на нужный отдел, но его раз от раза заставляют прослушать приветствие целиком. По максимуму сократите использование Приветствий, используйте IVR и разрешите прямые наборы — это позволит сократить время ожидания клиента и не раздражать его.
Еще при создании Интерактивного меню IVR часто забывают сменить настройки по умолчанию, касающиеся неверного набора — при нажатии клавиши, которая не описана в правилах, ролик повторяется несколько раз. Такое поведение уместно только в случае, если выбор должен быть сделан обязательно (крайне редкий случай), и совершенно неуместно в первом, приветственном голосовом меню. Отключайте повторы голосового меню и переводите звонок на назначение, используемое по умолчанию: на секретаря, в очередь менеджеров и так далее. То же касается и тайм-аута набора.
В прошлой статье была описана процедура установки Asterisk и Freepbx 14 на CentOS 7
В первую очередь после установке нужно озаботиться безопасностью системы
Безопасность
1. Создадим администратора и установим для него пароль. Если система доступна через интернет, то желательно устанавливать как можно более сложный пароль администратора FreePBX
Создайте администратора системы FreePBX, установите пароль
2. Выбор языка системы и файлы стандартных звуков. Так как мы собирали asterisk 14 с дополнительными русскими звуковыми файлами - то система уже предлагает их выбрать
Выбор языка системы и звуковых файлов
3. Сменим стандартный SIP порт
Так сканеры SIP как правило рыщат в интернете в поисках отрытых стандартного SIP-порта 5060, не лишней мерой по увеличению безопасности будет сменить его на какой-то другой
например на 5069
Сделать это можно в Settings->Asterisk SIP settings->Chan PJSIP settings:
FreePBX 14 - сменить стандартный SIP порт
Добавим правила в firewalld для того, чтобы разрешить доступ к портам, которые использует Asterisk SIP, IAX, RTP
firewall-cmd --zone=public --add-port=10000-20000/udp --permanent4. Настройка fail2ban
fail2ban - это локальный сервис, который просматривает логи на предмет попытки подобрать пароли. Если такие попытки найдены, fail2ban блокирует ip-адрес источника используя iptables или в нашем случае firewalld
Нам защитить от попыток перебора ssh, sip, apache(веб-интерфейс)
Для этого установим fail2ban
добавим в fail2ban в автостарт
Создадим файл с настройками для всех профилей
/etc/fail2ban/jail.local
bantime - время на которое будет банится адрес
maxretry - количество неудачных попыток залогинится после которых fail2ban будет блокировать адрес
findtime - это время за которое было сделано maxretry
Создадим тюрьму для защиты sshd
/etc/fail2ban/jail.d/sshd.local
Чтобы проверить, что все работает попробуйте с сторонего адреса(не с того где вы сейчас установили ssh сессию) 4-5 раз подключиться используя неправильный пароль
Чтобы вытащить адрес из тюрьмы можно воспользоваться командой
Для того, чтобы freepbx писал файлы с правильной датой необходимо указать php временную зону не только в файле /etc/php.ini, но и чере веб-интерфейс FreePBX
Advanced Settings->PHP Timezone
Установим правильную временную зону для FreePBX
Создадим фильтр для бана
filter.d/freepbx-auth.conf
а также тюрьму
jail.d/freepbx-gui.local
Чтобы проверить, что наш самописный фильтр работает нужно сделать несколько неудачных попыток входа в веб-интерфейс и выполнить команду
fail2ban-regex /var/log/asterisk/freepbx_security.log /etc/fail2ban/filter.d/freepbx-auth.confПосле нескольких неудачных попыток(более 3 в данном случае) адрес будет заблокирован
Теперь создадим правила для попадания в тюрьму адресов различных SIP сканеров
jail.d/asterisk.local
Стандартный фильтр немного дополним
filter.d/asterisk.conf
Далее в файле /etc/fail2ban/jail.conf в разделе [asterisk] нужно закомментировать следующую строку
Теперь нужно в настройках Asterisk настроить запись логов в нужный файл, для этого в файле /etc/asterisk/logger_logfiles_custom.conf
Читайте также: