Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Настройка виртуальных хостов в Apache

База знаний Linux

Периодически возникает необходимость предоставить доступ определённым адресам и/или подсетям к определённым web-сервисам. Можно достигнуть этого с помощью директив Allow и Deny, но защита будет более надёжной, если разделить web-сервисы по виртуальным хостам, доступным по разным портам, а доступ к этим портам ограничить с помощью iptables. В этом случае, хост, для которого запрещён доступ к порту виртуального хоста, вообще не сможет установить соединение с Apache при попытке доступа к этому виртуальному хосту.

Для примера возьмём два web-сервиса, типичных для сервера телефонии на базе Asterisk - FreePBX и FOP2. Доступ к FreePBX должен быть открыт только для подсети администраторов (192.168.127.0/24), доступ к FOP2 должен быть открыт для подсети администраторов и подсети колл-центра (192.168.10.0/24).

Приведённые настройки верны для CentOS 6.

Базовая настройка виртуальных хостов
Web-директория FreePBX - /var/www/html/admin, web-директория FOP2 - /var/www/html/fop2, FreePBX будет доступен по порту 8081, FOP2 будет доступен по порту 8082. Для базовой настройки виртуальных хостов, внесите следующие настройки в какой-либо файл в директории /etc/httpd/conf.d (например /etc/httpd/conf.d.virtual_hosts.conf).

Listen 8081
<VirtualHost *:8081>
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresActive on
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType css/text "access plus 1 year"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>
Listen 8082
<VirtualHost *:8082>
DocumentRoot /var/www/html/fop2
<Directory /var/www/html/fop2>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresActive on
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType css/text "access plus 1 year"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

Основные директивы Apache, использованные в указанных настройках:
Listen [<адрес>:]<номер_порта> - Apache будет слушать на указанном порту, можно указывать эту директиву несколько раз, чтобы Apache слушал на нескольких портах. Также можно указать адрес вместе с портом, тогда Apache будет слушать только на указанном адресе.
<VirtualHost <адрес>[:<порт>]> - все директивы между дирекстивами <VirtualHost <адрес>[:<порт>]> и </VirtualHost> будут распространяться только на виртуальный хост, доступный по указанному адресу и порту. Если критерием является только порт, а адрес может быть любым (как в нашем случае), вместо адреса можно указать «*».
DocumentRoot - корневая директория виртуального хоста.
Все директивы, указанные для корневых директорий виртуального хоста, являются рекомендуемыми значениями и не влияют на данную схему настройки виртуальных хостов, Вы можете найти описание этих директив в официальной документации Apache.

Здесь и далее, после внесения изменений применяем настройки Apache

service httpd reload

Теперь можно разграничить доступ к виртуальным хостам с помощью iptables:

iptables -A INPUT -p tcp --dport 8081 -s 192.168.127.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8082 -s 192.168.127.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8082 -s 192.168.10.0/24 -j ACCEPT

Добавление HTTP-аутентификации к виртуальному хосту
В FreePBX периодически обнаруживаются критические уязвимости, поэтому закрытие FreePBX HTTP-аутентификацей - рекомендуемая мера по усилению безопасности сервера телефонии. Можно просто закрыть FreePBX HTTP-аутентификацией (тогда нужно будет дополнительно аутентифицироваться в FreePBX после прохождения HTTP-аутентификации), также можно заменить аутентификацию FreePBX HTTP-аутентификацией, т.к. FreePBX поддерживает аутентификацию средствами web-сервера. Для HTTP-аутентификации можно использовать учётные записи FreePBX, логины и SHA1-хэши паролей FreePBX находятся в таблице ampusers.
Для добавления HTTP-аутентификации к виртуальному хосту FreePBX, приведите его настройки к следующему виду:

Listen 8081
<VirtualHost *:8081>
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName 'Who goes there'
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLDB asterisk
AuthMySQLUserTable ampusers
AuthMySQLUser freepbxuser
AuthMySQLPassword freepbx_db_password
AuthMySQLNameField username
AuthMySQLPasswordField password_sha1
AuthMySQLAuthoritative On
AuthMySQLPwEncryption sha1
Require valid-user
Satisfy all
ExpiresActive on
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType css/text "access plus 1 year"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

AuthMySQLDB - имя базы данных FreePBX
AuthMySQLUser - имя пользователя для доступа к БД FreePBX
AuthMySQLPassword - пароль для доступа к БД FreePBX (имя пользователя и пароль для доступа к БД FreePBX можно взять из файла /etc/freepbx.conf или из файла /etc/amportal.conf)
Для того, чтобы FreePBX использовал аутентификацию web-сервера и не запрашивал сам дополнительную аутентификацию, нужно указать значение webserver для параметра AUTHTYPE в файле /etc/amportal.conf и в таблице freepbx_settings (по умолчанию в обоих местах стоит значение database). Запрос к БД для изменения типа аутентификации FreePBX будет выглядеть так:
UPDATE 'freepbx_settings' SET 'value'='database' WHERE 'keyword'='AUTHTYPE';

Добавление SSL к виртуальному хосту
В завершение статьи, зашифруем подключение к web-интерфейсу FreePBX, чтобы пароли, передаваемые в открытом виде, нельзя было получить сниффером (Digest-аутентификация - тема для отдельной статьи).
Добавляем настройки SSL к виртуальному хосту:

Listen 8081
<VirtualHost *:8081>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!aNULL:!eNULL:!LOW:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/pki/tls/certs/pbx.example.com.pem
SSLCertificateKeyFile /etc/pki/tls/private/pbx.example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/pbx.example.com_ca.pem
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www/html/admin
<Directory /var/www/html/admin>
Options FollowSymLinks
AllowOverride None
SSLOptions +StrictRequire
SSLRequireSSL
Order allow,deny
Allow from all
AuthType Basic
AuthName 'Who goes there'
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLDB asterisk
AuthMySQLUserTable ampusers
AuthMySQLUser freepbxuser
AuthMySQLPassword freepbx_db_password
AuthMySQLNameField username
AuthMySQLPasswordField password_sha1
AuthMySQLAuthoritative On
AuthMySQLPwEncryption sha1
Require valid-user
Satisfy all
ExpiresActive on
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType css/text "access plus 1 year"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-v
</Directory>
</VirtualHost>

Большая часть настроек SSL взята из файла /etc/httpd/conf.d/ssl.conf, файл входит в состав пакета mod_ssl.
SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile - укажите в этих параметрах пути к сертификату, закрытому ключу и сертификату центра сертификации.
В корень виртуального хоста добавлены опции «SSLOptions +StrictRequire» и «SSLRequireSSL», эти опции запрещают подключение без использования SSL.

asterisk, fop2, настройка, Подключение, FreePBX, centOS