Конфигуриране на Elastix Security - Язик, Язов Антон
В тази статия ще навляза в подробности заОсновната настройка на защитата на Elastix. В мрежата има достатъчно ръководства за инсталиране на тази дистрибуция и освен това там всичко е доста просто по време на инсталационния процес - обичайният текстов режим на инсталатора на Linux и дори има избор на български език, така че ще пропуснем инсталирането на Elastix и ще преминем директно към самата настройка. А защитата Elastix е може би най-важното нещо при настройката. И така, нека приемем, че сме инсталирали комплекта за разпространение, той стартира правилно и мига курсора за поздрав и иска да влезете.
Искам да отбележа, че по-нататък ще разгледаме вариант, при който всичкиSIP клиенти са вътре в локалната подмрежа, а самият Elastix получава връзка само към trunks през Интернет и няма да има достъп от друга мрежа, освен нашата, нито до Asterisk, нито до Apache, нито до нещо друго! Можете да конфигурирате множество подмрежи.
Паролите накратко
* За начало препоръчвам да използвате много сложни пароли и за всички различни, т.е. една парола за root достъп, друга за mysql и трета за уеб интерфейса. Препоръчително е да генерирате пароли с различни главни и главни букви, цифри и специални символи, с дължина над 25 знака. Да, малко е неудобно всеки път да въвеждате такива пароли, но е по-надеждно. Опитайте се да променяте паролите периодично, не задавайте едни и същи пароли; паролите на SIP клиентите не трябва да съвпадат с техните данни за влизане, като цяло не бъдете мързеливи!
* Също така трябва да премахнете администраторския акаунт по подразбиране от Elastix. За да направите това, в уеб интерфейса отидете в секцията Потребители и създайте нов потребител с необичайно влизане (можете да използвате произволен набор от букви). Нека дадем на този потребител пълни администраторски права, като посочим за негогрупа със същото име. След това влизаме под нов акаунт, проверяваме дали всичко работи и изтриваме администраторския акаунт (по принцип можете да промените групата му, но е по-добре да го изтриете напълно). Защо изтриваме и не променяме данните за вход в MySQL? Защото потребителският идентификатор ще остане, но не ни трябва. Може да искате да активирате отделен достъп до FreePBX в настройките си за сигурност - изобщо не препоръчвам да правите това! Това, което има в контролния панел на Elastix, е достатъчно.
IPtables & fail2ban
* И така, влезли сме в уеб интерфейса на Elastix, откъде да започнем? С охрана, разбира се. Отидете в елемента от менюто Сигурност, включете защитната стена и (само в случай, когато една или повече подмрежи действат като SIP клиенти) премахнете всички правила в защитната стена, с изключение на първите и последните две. След това добавете ново правило със следните стойности:
КъдетоАдресът на източника е вашата подмрежа. Но тук можете също да посочите конкретен IP, така че бъдете внимателни. След това преместваме създаденото правило на втора позиция. Убедени сме, че третото правило е, че всякакво движение е забранено у нас. Достатъчно за начало. Като цяло можете да установите връзка от конкретни IP адреси, но сега няма да разглеждам това. По този начин сме забранили всякакъв достъп до сървъра, независимо дали е до Apache или до asterisk, отвсякъде, освен от посочената подмрежа, което е доста надеждно, въпреки факта, че е просто. Е, ако нямате такава възможност, тогава можете поне да забраните ping към машината, за това добавете правило, което забранява всички входящи icmp пакети.
* Сега нека свържем fail2ban към Asterisk. Fail2ban не е инсталиран по подразбиране, така че изпълняваме:
По подразбиране е конфигуриран за Apache, ssh и други стандартни услуги, така че трябва да добавим само Asterisk. Ние създавамефайл/etc/fail2ban/filter.d/asterisk.conf, така:
и добавете следното там:
След това трябва да свържете тази конфигурация с fail2ban. Отворете файла/etc/fail2ban/jail.conf :
и добавете следното в самия край:
Сега добавете fail2ban към стартирането и го стартирайте:
Готов! Сега трябва да се уверим, че всичко работи. За да направите това, изпълнете следната команда:
Сред другите правила трябва да има нещо подобно:
SSH
Ще продължим темата за сигурността, тъй като това е най-важната тема за Elastix и Asterisk като цяло. Сега нека поговорим за SSH, а именно ще променим порта и не само.
* Първо, трябва да създадете потребител, който няма да има никакви права, освен за свързване през SSH, но root трябва да бъде напълно забранено да се свързва чрез този протокол. И така, да започваме. Създайте потребител и задайте парола за него:
Не забравяйте, че паролите трябва да са много сложни и променете данните си за вход, разбира се! След това редактирайте файла/etc/ssh/sshd_config, а именно добавете следните два реда към него:
какво направихме Добавихме потребител, зададохме му парола, след което му позволихме да се свърже чрез SSH, а на root потребителя, напротив, беше забранено да се свързва чрез него. Тоест, когато се свързваме през SSH, ние влизаме под нов потребител с неговата парола и ако трябва да влезем като root, ще изпълним следната команда:
И го доведе до нещо подобно:
Изберете сами порта, основното е, че той не се пресича с портовете на други услуги.
* След това определено трябва да извършим следното действие! Отиваме в секциятаDefine Ports, която се намира в елементаSecurity в уеб интерфейса на Elastix и намираме там вече наличния SSH порт. По подразбиране е зададено на 22,трябва да го редактирате и промените на посочения по-горе, в този пример на 5248. Готово! Просто се уверете, че сте изпълнили правилно и двете точки по-горе за промяна на SSH порта, тъй като едното не може без другото. По принцип, ако направите само едно от двете или направите грешка, ще загубите SSH достъп.
Звездичка
* Нека да преминем директно към най-важната част от Elastix - звездичката. Като цяло, някои от препоръките на вече са приложени в elasticix, но е по-добре да се уверите в това. Нека да преминем през конфигурациите:
Отворете файлаsip_general_custom.conf и се уверете, че има следния ред:
След това отваряме файла sip_general_additional.conf и намираме следния ред там:
Ако тези параметри не присъстват в тези файлове, те трябва да бъдат добавени. Ако имат други значения, трябва да ги приведете точно във формата, посочена по-горе. Тук с първия параметър забраняваме връзки и обаждания от гости, а с втория параметър деактивираме отговора за грешна парола.
* В трънковете можете също да посочите броя на каналите, трябва да обърнете внимание на този параметър. Задайте стойността на вашите потребители.
* В маршрутите въведете ръчно кодовете на градовете, а не целия диапазон от осем. Това също ще ви спести пари, ако вече сте били хакнати по време на разговор. Да, това е неудобно, трябва да следите кога, техните актуализации и т.н., но това е простата предпазна мярка, която ще ви помогне в дъждовен ден.
* Променете порта по подразбиране 5060 на какъвто искате, но отново се уверете, че този порт не се използва от системата. За да направите това, променете параметъраBindport=5060
* Задайте времеви ограничения, когато е възможно. Ако не е необходимо да се обадите 24/7 и за известно време систематанеактивен е по-добре да ограничите изходящите повиквания до временни групи. За да направите това, трябва да създадете временна група, да посочите там през какъв период са възможни изходящи повиквания и да я запазите. Например изходящите повиквания трябва да работят само пет дни в седмицата от 9.00 до 18.00 часа. Посочете началото и края на работната седмица (от понеделник до петък) и съответното време. Запазваме тази група и отиваме в секцията за изходящо маршрутизиране, избираме маршрута и избираме нашия създаден в параметъра за временна група. Сега изходящото маршрутизиране няма да работи през всички други часове и почивни дни.
P.S. а още по-безопасно е да изгасим колата, ако не ни трябва ;)
Apache
Като цяло вече сме затворили от всички, с изключение на необходимата подмрежа, използвайки IPtables, но можете да играете на сигурно и също да затворите Apache. Но преди да направите това, уверете се, че модулите mod_rewrite и mod_security са инсталирани и активирани. Сега отворете файла/etc/httpd/conf/httpd.conf и намерете настройките, отговарящи за главната директория:
Пренасяме последните редове към този формуляр:
В редаРазрешаване от 1.1.1.0/24,, разбира се, пишем нашата подмрежа. Това ще ограничи достъпа до Apache отвсякъде освен от нашата подмрежа. Но това не трябва да се закръгля, тъй като можете да конфигурирате достъпа по-гъвкаво. А именно, за отделни директории можете да посочите достъп от определени IP адреси. Това е удобно, ако използвате CRM и т.н. в допълнение към звездичката. Например, можете да ограничите достъпа до контролния панел на Elastix и да го разрешите само от един или повече IP адреси. За да направите това, създайте файл .htaccess в папката /var/www/html/admin и напишете следното там:
Сега достъпът до админ панела на elasticix ще бъде само от посочените IP адреси, които могат да бъдат регистрирани с интервал. Направете същото с phpmyadmin идруги важни директории.