среда, 9 февраля 2022 г.

Защита WEB интерфейса FreePBX с помощью Apache HTTP Authentication and Authorization

Описание сервера
OS: CentOS 8
# cat /etc/os-release
NAME="CentOS Stream"
VERSION="8"

Asterisk 16+FreePBX 15

Server version: Apache/2.4.37 (centos)
Server built:   Nov 12 2021 04:57:27

Предварительно нужно создать файл с паролями:

htpasswd -c /etc/httpd/.htpasswd admin

*admin это имя пользователя, укажите любое

*параметр -с создает новый файл, чтобы добавить еще пользователя выполните команду без этого параметра.

Далее редактируем файл /etc/httpd/conf/httpd.conf 

Добавляем 

 AuthType Basic
 AuthName "Restricted Content"
 AuthUserFile /etc/httpd/.htpasswd
 Require valid-user

В две директории:
!Важно закомментировать # Require all granted иначе авторизация не заработает

<Directory "/var/www">
<Directory "/var/www/html">


!Важно

/var/www/html/admin/.htaccess меняем  параметр Require all granted на Require valid-user

# Apache 2.4
<IfModule mod_authz_core.c>
        # Disallow all . files, such as .htaccess or .git
        <FilesMatch "\..*$">
                Require all denied
        </FilesMatch>
        # Allow index, config, and ajax.php, as well as all our image types.
        <FilesMatch "(^$|index\.html|index\.php|config\.php|ajax\.php|\.(map|gif|GIF|jpg|jpeg|png|css|js|swf|txt|ico|ttf|svg|eot|woff|woff2|wav|mp3|aac|ogg|webm|gz)$)">
                Require valid-user
                #Require all granted
        </FilesMatch>
</IfModule>

После редактирования перезапускаем httpd сервер

systemctl restart httpd


Долго загружается dashboard и после выдает ошибку FreePBX 15 на CentOS 8

После установки Asterisk 16 и  FreePBX на чистую систему CentOS из консоли, при входе в веб интерфейс, dashboard долго думает и потом выдает сообщение об ошибке

Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.

Gateway Timeout The gateway did not receive a timely response from the upstream server or application.

В System Overview будет сообщение
There was an error asking for Overview. Check the error logs for more information

Эта проблема связанна с тем что в скрипте (/var/www/html/admin/modules/dashboard/sections/Overview.class.php) модуля есть функции mailq которые используют консольную системную утилиту mailq для получения сведений об очереди e-mail сообщений.

Из консоли выполните команду 
# mailq -v
WARNING: local host name (HOSTNAME) is not qualified; see cf/README: WHO AM I?
/var/spool/mqueue is empty

mailq ругается на имя хоста, которое указанно не правильно, вам нужно переименовать хост чтобы он был похож на домен 

Пример
hostname.local
asterisk.local
ast.ru
astersik.org
asterisk.ru

Переименовать можно следующими командами 

hostnamectl set-hostname asterisk.local

Измените так же имя в файле /etc/hostname чтобы после перезагрузки оно сохранилось.

Очистка переполненной памяти на сервере Asterisk без перезагрузки

 При интенсивной нагрузке на сервис Asterisk он может постепенно занимать (отжирать) всю физическую память на сервере.

Для решения есть несколько путей решений этой проблемы, но самый простой регулярно очищать буфер и кэш памяти командами, которые можно добавить в Cron по расписанию.

Команды для очистки памяти сервера без перезагрузки сервисов.

echo 1 > /proc/sys/vm/compact_memory
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches


Пример для cron

*/10 * * * *  echo 1 > /proc/sys/vm/compact_memory
30 */3 * * *  sync && echo 3 | sudo tee /proc/sys/vm/drop_caches