Elastix 4 настройка firewall
В этой статье Я подробно расскажу о базовой настройке безопасности Elastix. В сети достаточно мануалов по установке данного дистибутива, да и к тому же там все довольно просто в процессе установки - обычный текстовый режим линукс установщика, причем есть даже русский язык на выбор, поэтому установку Elastix мы опустим и перейдем непосредственно к самой настройке. А защита Elastix это, пожалуй, как раз самое важное в настройке. Итак, предположим, что дистрибутив мы установили, он корректно завелся и приветствующе мигает курсором и просит залогинться.
Хочу заметить, что далее будет рассмотрен вариант, в котором все SIP клиенты находятся внутри локальной подсети, а сам Elastix только получает по интернету соединение с транками, и никакого доступа из другой сети, кроме нашей, ни к Asterisk'у, ни к апачу, ни к чему другому не будет! Можно настроить несколько подсетей.
IP PBX Elastix для начинающих.Часть 2
Часть № 2-сетевая безопасность.
Прежде чем настраивать телефонию на Elastix, необходимо озаботиться его безопасностью на сетевом уровне.
Для этого надо настроить межсетевой экран, разрешив доступ только из доверенных сетей и закрыв доступ из "внешнего мира".
В данной версии Elastix имеется встроенный фаервол, я его использовать не буду, буду использовать провереный механизм - настройка Iptables, через WEB оболочку Webmin.
Если необходимомости в локальном фаерволе у вас нет, все равно советую поставить Webmin, так как с его помощью можно конфигурировать систему через GUI на уровне Linux.
1)Скачиваем и устанавливаем на рабочую станцию, с которой осуществляется доступ к Elastix - консольный SSH клиент , например "Putty ".
Скачиваем по ссылке файл putty.exe :
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Запускаем , ввводим IP адрес Elastix, выбираем кодирову UTF-8, нажимаем "Open"
Вводим логин, пароль, попадаем в консоль Elastix
После окончания скачивания , удостоверимся с помощью команды ls,
что файл webmin-1.590-1.noarch.rpm скачался
Устанавливаем Webmin , для этого в командной строке пишем
rpm - ivh webmin-1.590-1.noarch.rpm
4)ЗАХОДИМ через браузер в оболочку Webmin
https://ip_address:10000
Вводим логин, пароль (пользователь root,логин, тот , который указали при установке Elastix)
Заходим в меню
Networking --> Linux Firewall
По умолчанию созданы 3 цепочки фильтрации пакетов - INPUT, FORWARD и OUTPUT
Нажимаем "Apply Configuration"
Добавим в каждую из 3-х цепочек фильтрации 4 правила.
2 правила для адреса 127.0.0.1(это адрес Elastix) , таким образом , чтобы этот адрес выступал в первом правиле , как источник, во втором , как назначение.
Прописав эти правила, мы разрешаем все адресу 127.0.0.1
И 2 правила в каждую цепочку для доверенного хоста или сети.
При добавлении сети , она прописывается с маской, например: 192.168.1.0/24
Устанавливаем действие по умолчанию для каждой их трех цепочек "DROP".
В результате должно получится следующее:
Нажимаем "Apply Configuration".
Межсетевой экран настроен.
IPtables & fail2ban
*Итак, мы вошли в web-интерфейс Elastix, с чего начать? С безопасности безусловно. Переходим в пункт меню Security, включаем фаервол и (только для случая с одной или несколькими подсетями, выступающими в роли SIP клиентов) убираем все правила в фаерволле, кроме первого и двух последних. Затем добавляем новое правило со следующими значениями:
Где Source Address ваша подсеть. Но тут так же можно указать конкретный IP, так что будьте внимательны. Затем перемещаем созданное правило на вторую позицию. Убеждаемся, что третьим правилом у нас запрещен вообще весь траффик. Для начала хватит. Вообще можно установить подключение с конкретных IP, но сейчас Я этого рассматривать не буду. Таким образом, мы запретили любые обращения к серверу, будь то к апачу или к астериску отовсюду, кроме указанной подсети, что довольно надежно, не смотря на то, что просто. Ну а если у вас нет такой возможности, то можно хотя бы запретить пинги к машине, для этого добавьте правило, запрещающее все входящие icmp пакеты.
*Теперь прикрутим fail2ban к Asterisk'у. По умолчанию fail2ban у нас не установлен, поэтому выполняем:
По умолчанию он настроен на апач, ssh и прочие стандартные сервисы, поэтому нам нужно только добавить Asterisk. Создаем файл /etc/fail2ban/filter.d/asterisk.conf, например так:
и добавляем туда следующее:
Это позволяет защититься от брутфорса SIP аккаунтов. Можете добавить свою подсеть или IP адреса в строку ignoreregex =, чтобы к вам это правило не применялось.
Далее нужно привязать этот конфиг в fail2ban. Открываем файл /etc/fail2ban/jail.conf:
и добавляем в самый конец следующее:
тут можно отредактировать такие параметры, как количество неправильных попыток авторизации и время в секундах, на которое будет действовать бан. И если у вас настроена почта, можно указать мыло, на который будут сыпаться отчеты.
Теперь добавляем fail2ban в автозагрузку и запускаем его:
Готово! Теперь нам нужно убедиться, что все работает. Для этого выполним следующую команду:
Среди других правил должно быть что-то подобное:
На этом все! fail2ban прикручен к Asterisk'у можно даже опытным путем проверить: не добавляйте свой IP в строку ignoreregex и попробуйте несколько раз авторизоваться в SIP аккаунте с неправильным паролем к примеру. Вас должно "забанить" и в течении установленного времени у вас не будет вообще никакого доступа к серверу с данного IP. Если это происходит, значит - все работает.
IP PBX Elastix для начинающих.Часть 23
Настройка встроенного в Elastix межсетевого экрана.
Вcтроенный в Эластикс Firewall основан на стандартной для Centos утилите управления межсетевым экраном - iptables.
Если вы ранее настраивали фаирвол , например через Webmin, необходимо сбросить все правила для iptables и назначить политики по умолчанию.Сделать это можно в командной строке.
iptables -F
iptables --policy INPUT accept
iptables --policy FORWARD accept
iptables --policy OUTPUT accept
После включения межсетевого экрана мы можем видеть ряд пронумеровыных разрешающих правил в цепочке INPUT iptables:
Эти правила описывают практически все протоколы и порты, которые использует Elastix для своего функционирования.
Самое первое правило разрешает прохождение пакетов для всех протоколов(ALL) на локальном интерфейсе (lo) с любого адреса(0.0.0.0/0) на любой адрес(0.0.0.0/0) в цепочке INPUT.Это правило должно иметь самый высокий приоритет (порядковый номер 1)
Если его не будет , то пакеты , какие бы правила не прописывали в дальнейшем - проходить не будут.
Правило номер 18 разрешает все TCP соединения для уже установленных сессий
Далее описаны правила , которые отбрасывают все пакеты, которые не прошли проверку по вышестоящим правилам.
Вновь созданные правила появятся в самом низу, их надо при помощи стрелок передвинуть ВЫШЕ 2-х последних запрещающих правил, иначе они будут проигнорированы.
Второе , что нужно сконфигурировать - это отключить ненужные протоколы, предположим , что у нас работают только SIP клиенты.
Для этого можно все ненужные правила просто удалить, либо поставить в каждом правиле Target - DROP
В итоге мы получили сервер, на котором разрешен пинг, администрирование с 1-й машины и подключение SIP клиентов
Третье , что надо сделать- это разрешить подключатся по SIP протоколу только из доверенных сетей.
Для этого отредактируем правила для SIP и RTP
Facebook Если у вас не работает этот способ авторизации, сконвертируйте свой аккаунт по ссылке ВКонтакте Google RAMBLER&Co ID
Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal
SSH
Будем продолжать тему безопасности, так как это самая важная тема Elastix да и вообще Asterisk'a. Сейчас поговорим об SSH, а именно будем менять порт и не только.
*Для начала нужно создать пользователя, у которого не будет вообще никаких прав, кроме как подключения по SSH, а вот руту нужно вообще запретить подключаться по этому протоколу. Итак начнем. Создаем пользователя и задаем ему пароль:
Помните, что пароли должны быть очень сложными и меняйте логин конечно же! Далее редактируем файл /etc/ssh/sshd_config, а именно добавляем в него две следующих строки:
Что мы сделали? Добавили пользователя, задали ему пароль, потом разрешили ему подключение по SSH, а пользователю root наоборот запретили по нему подключаться. То есть при подключении по SSH мы логинимся под новым пользователем, используя его пароль, а если нам нужно зайти под рутом, то выполним такую команду:
*Далее сменим порт подключения SSH. Для этого идем в тот же файл /etc/ssh/sshd_config и находим там строку(она может быть закомментированной)
И приводим ее к примерно такому виду:
Порт выбирайте сами, главное, чтобы он не пересекался с портами других сервисов.
*Далее нам обязательно нужно выполнить следующее действие! Заходим в раздел Define Ports, который находится в пункте Security в вэб интерфейсе Elastix и находим там уже присутствующий SSH порт. По умолчанию он установлен как 22, нужно отредактировать его и изменить на тот, который указали выше, в данном примере на 5248. Готово! Только убедитесь, что ы правильно выполнили оба вышеприведенных пункта по смене SSH порта, так как один без другого жить не может. В общем если вы сделаете только одно из двух или ошибетесь, то потеряете доступ по SSH.
Коротко о паролях
*Для начала Я рекомендую использовать очень сложные пароли и на все разные, т.е. на root доступ один пароль, mysql - другой, и на web-интерфейс третий. Желательно генерируйте пароли с разным регистром, цифрами и специальными символами, длинной 25+ знаков. Да, это немного неудобно, каждый раз вводить такие пароли, зато надежней. Старайтесь периодически менять пароли, не устанавливайте одинаковые пароли; пароли SIP клиентов не должны совпадать с их логинами, в общем не ленитесь!
*Так же нужно удалить стандартную учетную запись администратора из Elastix. Для этого в web-интерфейсе переходим в раздел пользователей Users и создаем нового пользователя с необычным логином (можно использовать беспорядочный набор букв). Наделим этого пользователя всеми правами администратора, указав для него одноименную группу. Затем заходим уже под новой учетной записью, проверяем, все ли работает и удаляем учетную запись admin(можно изменить его группу в принципе, но лучше вообще его удалить). Почему именно удаляем, а не меняем логин в MySQL? Потому что id пользователя останется, а нам этого не нужно. Вам возможно захочется включить отдельный доступ к FreePBX в настройках безопасности - не рекомендую этого делать вообще! Вполне хватит того, что есть в панели управления Elastix.
Asterisk
*Перейдем непосредственно к самой важной части Elastix'a - астериску. Вообще часть рекомендаций по уже выполнена в эластиксе, но лучше в этом убедиться. Пробежимся по конфигам:
Открываем файл sip_general_custom.conf и убеждаемся в том, что там есть следующая строка:
Затем открываем файл sip_general_additional.conf и находим там такую строку:
Если эти параметры отсутствуют в данных файлах - следует их добавить. Если они имеют другие значения - нужно привести их именно к такому виду, который указан выше. Здесь первым параметром мы запрещаем подключения и звонки от гостей, а вторым параметром отключаем ответ о неверном пароле.
Так же для SIP аккаунтов следует установить следующие параметры:
Этот параметр ограничивает количество каналов для SIP аккаунта. Поможет если вас уже взломали и начинают звонить - сэкономит денег. Далее в настройках SIP аккаунтов желательно указать диапазон IP адресов, с которых разрешена регистрация SIP телефонов. Если у вас пользователи находятся в под сети лучше вообще задать каждому аккаунту определенный IP, а остальные запретить. Все эти параметры находятся в настройках SIP аккаунтов и называются они deny и permit. Соответственно параметр deny запрещает регистрацию с указанного диапазона IP адресов, а параметр permit разрешает. Если ваши пользователи находятся в определенной подсети, то параметр deny не трогаем, а в параметр permit добавляем эту самую подсеть, а еще лучше один IP.
*В транках так же можно указывать количество каналов, стоит уделить внимание и этому параметру. Установите значение равное вашим пользователям.
*В маршрутах вручную указывайте коды городов, а не весь диапазон восьмерки. Это так же позволит сэкономить денег, если вас взломали у уже звонят. Да это неудобно, нужно следить за когдами, их обновлениями etc, но это та простая мера предосторожности, которая вас выручит в черный день.
*Поменяйте стандартный порт 5060 на любой другой, только опять же следите за тем, чтобы этот порт не использовался системой. Для этого нужно изменить параметр Bindport=5060
*По возможности выставляйте ограничения по времени. Если вам не нужно звонить 24/7 и какое то время система простаивает лучше ограничить исходящие звонки во временных группах. Для этого нужно создать временную группу, указать там в какой период возможны исходящие звонки и сохранить. Например исходящие звонки должны работать только пять дней в неделю с 9.00 до 18.00. Указываете начало и конец рабочей недели (от понедельника по пятницу) и соответствующее время. Сохраняем данную группу и переходим в раздел исходящей маршрутизации, выбираем маршрут и в параметре временных групп выбираем нашу, созданную. Теперь во все другие часы и выходные дни исходящая маршрутизация работать не будет.
P.S. а еще надежнее выключать машину, если она нам не нужна ;)
Apache
Приводим последние строки к такому вот виду:
В строку Allow from 1.1.1.0/24, конечно же, прописываем свою подсеть. Это ограничит доступ к апачу вообще отовсюду, кроме нашей подсети. Но на этом не стоит закругляться, так как можно настроить доступ более гибко. А именно, для отдельных директорий можно указывать доступ с определенных IP. Это удобно если у Вас кроме астериска используются CRM и т.п. Например, можно ограничить доступ к панели управления Elastix'ом, и разрешить его только с одного или нескольких IP. Для этого в папке /var/www/html/admin создаем файл .htaccess и пишем туда следующее:
Теперь доступ к админке эластикса будет только с указанных IP, которые можно прописывать через пробел. Аналогично стоит поступать с phpmyadmin и прочими важными директориями.
Я думаю, для начала, по защите Elastix, этого хватит. Если у вас есть свои мысли по этому поводу - делитесь ими в комментариях, Я все рассмотрю. Ссылки так же приветствуются. Возможно в будущем напишу статьи по более тонкой настройке.
Facebook Если у вас не работает этот способ авторизации, сконвертируйте свой аккаунт по ссылке ВКонтакте Google RAMBLER&Co ID
Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal
IP PBX Elastix для начинающих.Часть 17
FRAUD на VOIP сетях.Слив голосового трафика на Premium rate номера .Правила защиты Elastix от взлома.
По данным международной ассоциации COMMUNICATIONS FRAUD CONTROL ASSOCIATION за 2011 – отраслевые потери от фрода в мире -- $ 40.1 миллиардов , или 1,88 % общих доходов.
Из этих 40 миллиардов, 3 миллиарда приходится на потери связанные со взломом IP PBX систем и сливом голосового трафика на полулегальные premium rate номерные емкости с повышенной стоимостью входящих звонков.
5 стран “лидеров”, где функционируют фродстеры: США, Индия, Великобритания, Пакистан, Филиппины
5 стран “лидеров”, терминирующих фродстерский трафик: Куба, Сомали, Сьерра-Леоне, Зимбабве, Латвия
По мнению Ростелекома проблемы с фродом в России связаны со следующими моментами:
• легкость и простота использования IP технологий – низкая цена
• недостаточная квалификация персонала - низкий уровень оборудования администрирования сетей
• недостаточный уровень поддержки сетей клиентов со стороны PBX / VoIP – PBX операторов
• нежелание тратиться на безопасность со стороны клиента
• недостаточность законодательной базы по противодействию
• исторический дисбаланс тарифов ( местная связь – МГ/МН)
• борьба за клиента ( безлимитные тарифы)
• широкое распространение IP технологий ( простота использования Терминация – VoIP решений)
• желание разжиться за счет коллег-операторов By-pass fraud
Для защиты IP PBX систем, а в частности Elastix существует два механизма - организационный и технический.
А) Организационные методы.
Так как все сливы трафика происходят на международные направления-договоритесь, если это возможно, с провайдером о закрытии мн направления.
Если это не возможно , что скорее всего так и есть, не используйте кредитных расчетов с вашим оператором связи.
Держите на счету примерную сумму, которая уходит у вас в месяц на связь.
При заключении договора с оператором уточняйте есть ли у него система антифрода.
1)Не открываете Elastix во внешний мир , открывайте доступ только доверенным сетям, если это не возможно - открывайте только то, что нужно вашим абонентам (я на 100 процентов уверен, что доступ по ssh к вашему серверу им не нужен), для удаленного админского доступа используйте защищенные каналы, например VPN
2)Используйте сложные пароли и нестандартных пользователей , как на IP PBX, так и на абонентских устройствах(их тоже ломают).
3)Не используйте одинаковые пароли на разные модули и службы системы, для mySql - один пароль , для Web оболочки другой, для AMI -третий и т.д.
4)Если абонентскими устройствами являются софтфоны - используйте антивирусное по , так как существуют трояны, способные слить логин пароль с софтфона.
Теперь перейдем непосредственно к Эластиксу.
1)Не используйте контексты по умолчанию.
2)Используйте сложные пароли для экстеншенов и транков. Никогда не делайте номер экстеншена = пароль, это первое что брутфорсят.
3)Используйте в экстеншенах фильтрацию по IP :
Permit=192.168.200.105
доступ в этом случае возможен только с адреса прописанного в строчке Permit
4)Запретите гостевые вызовы , для этого в файле sip_general_custom.conf пропишите
allowguest=no
6)Используйте программу Fail2ban, которая читает логи астериска и по определенной маске вычисляет попытку взлома.В Эластиксе она уже установлена, но ее нужно настроить.
So you’ve got your Asterisk based Elastix system up and running and you are able to make and receive calls. Its probably safe to assume you have a static public IP address, and a NAT router/firewall forwarding SIP traffic on port 5060 to your server and RTP traffic on a range of ports forwarded to your server as well. Your setup may vary, and I’ll assume that you have the knowledge to get the traffic to your server.
The good news is that your setup works, the bad news is that your VoIP server is probably still exposed to hackers who are (NO JOKE) actively trying to access your server. SIP is a very high value target for hackers and people are constantly scanning the internet for open connections on port 5060. When they find one the first thing they usually do is to try and brute force attack common extensions and get access to the server.
You will get notifications in your log like this one that show someone is trying to break in:
I am sure you were smart and set up very strong passwords for your extensions, but to be even safer it is a good idea to block inbound SIP traffic from non-trusted IP ranges.
The Elastix GUI interface allows you to control your server’s firewall settings by taking control of IPTables which is Linux’s software based firewall. If you choose to use the Elastix Firewall GUI, it is best to just use it and not rely on hand-coded IPTables rules.
The first thing to do is go to the Security Tab on the Elastix Admin.
The first thing open should be the Firewall settings and you need to specify to turn the Elastix Firewall on. At this point Elastix Firewall is controlling your IPTables and any hand coded settings you have made are nullified so you need to set up your firewall settings in the Elastix Firewall GUI exclusively.
Note that if you have services that are running on ports not covered by the default rules, like for example Webmin, they will cease to function until you allow them.
The default settings for the Elastix Firewall are pretty much useless for security purposes, just letting any traffic from anywhere into the serve. You need to know how they work to configure them, they are numbered and are processed in order. You should not modify the First rule or the last three as they are critical to the system. Rule 1 allows local loopback traffic in the last three rules also allow the system to function.
For an in-depth look at how these rules and the Elastix Firewall GUI work check out This Guide that will help with most everything covered here except the final configuration.
If the only thing you are running on your system is Elastix/Asterisk and your VOIP provider has given you the IP addresses of their servers from where you can expect incoming traffic, you need to create a rule for each IP address and move it up anywhere above the last three rules. You should click the new rule button and add the IP address of the first server with the CIDR of /32 (One address allowed)
Then move the rule up using the up and down buttons next to the service number, anywhere above the last three rules will work. Make a new rule for each valid server IP address from your SIP trunk provider. Your SIP provider may give you a range of expected RTP IP addresses as well, and you can set up those addresses for RTP in a similar fashion. My SIP trunk provider only provides them for SIP connections so I have to leave RTP open.
Now go ahead and edit the Firewall rules for the services that you do use to include only the IP ranges you want to allow to access them, For example edit the incoming SIP rule to your local network to allow for LAN devices to connect. Edit the SSH rule to be your personal workstation or your local LAN.
Now use the Lightbulb icon to deactivate any services you do not use.
At the end of the day your firewall should look similar to this:
The rules basically say:
To set up rule 10 or a similar rule for a non-standard service/port you need to go to define ports and add a new port for your service then add a firewall rule to allow the service for the appropriate IP ranges.
All the rules below are disabled with the yellow light bulb except the final three system rules.
Now you have a more-secure Elastix system, using the Elastix Firewall GUI.
Then go ahead and log in via the admin panel, change the offending rule and then go back in via SSH or local access and type:
Facebook Если у вас не работает этот способ авторизации, сконвертируйте свой аккаунт по ссылке ВКонтакте Google RAMBLER&Co ID
Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal
Коротко о паролях
*Для начала Я рекомендую использовать очень сложные пароли и на все разные, т.е. на root доступ один пароль, mysql - другой, и на web-интерфейс третий. Желательно генерируйте пароли с разным регистром, цифрами и специальными символами, длинной 25+ знаков. Да, это немного неудобно, каждый раз вводить такие пароли, зато надежней. Старайтесь периодически менять пароли, не устанавливайте одинаковые пароли; пароли SIP клиентов не должны совпадать с их логинами, в общем не ленитесь!
*Так же нужно удалить стандартную учетную запись администратора из Elastix. Для этого в web-интерфейсе переходим в раздел пользователей Users и создаем нового пользователя с необычным логином (можно использовать беспорядочный набор букв). Наделим этого пользователя всеми правами администратора, указав для него одноименную группу. Затем заходим уже под новой учетной записью, проверяем, все ли работает и удаляем учетную запись admin(можно изменить его группу в принципе, но лучше вообще его удалить). Почему именно удаляем, а не меняем логин в MySQL? Потому что id пользователя останется, а нам этого не нужно. Вам возможно захочется включить отдельный доступ к FreePBX в настройках безопасности - не рекомендую этого делать вообще! Вполне хватит того, что есть в панели управления Elastix.
Читайте также: