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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основные сценарии использования SSH-туннелей

База знаний Linux

В статье, опубликованной ранее, была описана настройка SSH-туннелей, а также было сказано, что SSH не подходит для построения постоянных туннелей. В этой статье будут описаны сценарии, в которых использование SSH-туннелей может быть очень полезным.

Сценарий 1: есть доступ по SSH на хост в удалённой сети, требуется настроить в этой сети множество устройств через web-интерфейс


Например, есть доступ по SSH к серверу телефонии клиента, требуется вручную настроить 20+ телефонов и/или VoIP-шлюзов (использование провижининга по какой-либо причине неприемлемо). Схема ниже:

Схема подключения


Вместо настройки проброса порта для каждого устройства, можно на время настройки сделать SSH-туннель к серверу клиента и добавить на своём хосте маршруты в подсети клиента через SSH-туннель (здесь и далее предполагается, что подключение по SSH производится с хоста под управлением ОС Linux).

 

Настройки на удалённом хосте (все команды, приведённые ниже для удалённого и для локального хоста, нужно выполнять с правами суперпользователя):

# Установите в файле /etc/ssh/sshd_config опцию "PermitTunnel yes", затем перезапустите SSH-сервер для применения настроек
service sshd restart
 
# Включите форвардинг пакетов
sysctl -w net.ipv4.ip_forward=1
 
# Добавьте в iptables правила, пропускающие соединения из туннеля в локальную сеть
# (в рамках данного примера в качестве транзитной подсети будет использоваться 10.255.255.0/30, VPN-интерфейс на обоих концах будет tun7)
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun7 -o eth0 -s 10.255.255.2 -j ACCEPT
 
# Также нужно натировать соединения, приходящие через туннель, т.к. остальные хосты в локальной сети ничего не будут знать о подсети 10.255.255.0/30
iptables -t nat -A POSTROUTING -o eth0 -s 10.255.255.2 -j MASQUERADE

Настройки на локальном хосте:

# Установите SSH-соединение с удалённым хостом с созданием туннеля
ssh -w 7:7 remote-server.example.com
 
# Назначьте IP-адрес своему концу туннеля
ifconfig tun7 up 10.255.255.2 pointopoint 10.255.255.1
 
# Создайте маршруты в подсети клиента через туннель (здесь 192.168.101.0/24 и 192.168.201.0/24)
ip route add 192.168.101.0/24 via 10.255.255.1
ip route add 192.168.201.0/24 via 10.255.255.1
 

Связь с удалёнными подсетями пока не будет работать, т.к. нужно ещё назначить IP-адрес концу туннеля на удалённом хосте:

ifconfig tun7 up 10.255.255.1 pointopoint 10.255.255.2

Если все действия выполнены правильно, на локальном хосте должен быть доступ в удалённые подсети через SSH-туннель, на web-интерфейсы устройств можно заходить по их адресам в удалённой сети без всяких пробросов.
Когда созданный SSH-туннель больше не будет нужен, обязательно отмените все изменения на удалённом хосте:

# Установите в файле /etc/ssh/sshd_config опцию "PermitTunnel no", и снова перезапустите SSH-сервер
service sshd restart
 
# Выключите форвардинг пакетов
sysctl -w net.ipv4.ip_forward=0
 
# Удалите добавленные ранее правила iptables

На локальном хосте достаточно просто разорвать SSH-соединение, через которое настроен туннель.

 

ПРИМЕЧАНИЕ: с помощью описанного приёма можно также получить доступ к web-интерфейсам, которые не работают при обращении к ним через проброс порта по SSH из-за адреса 127.0.0.1 в запрошенном URL (такие устройства встречаются очень редко, но это случается).

 

Сценарий 2: есть доступ по SSH на хост в удалённой сети, требуется скачать и поставить на хост какие-либо пакеты из интернета, но хост находится за файрволом, запрещающим доступ в интернет


Желательно решать подобные вопросы через отдел ИТ клиента, но с этим могут возникнуть самые различные проблемы. С помощью SSH-туннеля можно временно выпустить удалённый хост в интернет через свой собственный хост. В данном примере доступ на удалённый хост по SSH осуществляется через проброс порта:

Схема подключения


Реализация похожа на предыдущий сценарий, но форвардинг и правила iptables теперь нужно добавлять на локальном хосте.

 

Настройки на удалённом хосте (все команды, приведённые ниже для удалённого и для локального хоста, нужно выполнять с правами суперпользователя):

# Установите в файле /etc/ssh/sshd_config опцию "PermitTunnel yes", затем перезапустите SSH-сервер для применения настроек
service sshd restart

Настройки на локальном хосте:

# Включите форвардинг пакетов
sysctl -w net.ipv4.ip_forward=1
 
# Добавьте в iptables правила, пропускающие соединения из туннеля в интернет
# (в качестве транзитной подсети будет также использоваться 10.255.255.0/30, VPN-интерфейс на обоих концах будет tun7)
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun7 -o eth0 -s 10.255.255.1 -j ACCEPT
 
# Включите натирование для соединений из туннеля
iptables -t nat -A POSTROUTING -o eth0 -s 10.255.255.1 -j MASQUERADE
 
# Установите SSH-соединение с удалённым хостом с созданием туннеля
ssh -w 7:7 remote-server.example.com
 
# Назначьте IP-адрес своему концу туннеля
ifconfig tun7 up 10.255.255.2 pointopoint 10.255.255.1 

Снова настройки на удалённом хосте:

# Назначьте IP-адрес удалённому концу туннеля
ifconfig tun7 up 10.255.255.1 pointopoint 10.255.255.2 

Далее самый ответственный момент - чтобы удалённый хост получил полный доступ в интернет через SSH-туннель, нужно будет заменить его шлюз по умолчанию на 10.255.255.2. Естественно перед этим нужно, как минимум, добавить маршрут к IP-адресу, с которого Вы подключаетесь по SSH, через шлюз в подсети удалённого сервера, чтобы тут же не потерять доступ к нему. Обратите внимание на то, что удалённый сервер потеряет доступ ко всем локальным и удалённым подсетям, к которым у него был доступ через шлюз в локальной сети. Обязательно добавьте маршруты через шлюз в локальной сети во все подсети, в которых есть клиенты данного сервера, чтобы сохранить их работоспособность (напримет подсеть 192.168.201.0/24 из предыдущего сценария).
Ниже приведены все измения в таблице маршрутов удялённого хоста, с учётом того, что его шлюзом по умолчанию является 192.168.101.1 и подключение по SSH осуществляется с IP-адреса 1.2.3.4 (обязательно проверьте, с какого именно IP-адреса сервер получает пакеты от вашего хоста, с помощью команды who).

ip route add 1.2.3.4 via 192.168.101.1
ip route add 192.168.201.0/24 via 192.168.101.1
ip route del default; ip route add default via 10.255.255.2

Если все действия выполнены правильно, на удалённом хосте теперь должен быть доступ в интернет через SSH-туннель, можно установить на нём все необходимые пакеты (если хост использует DNS-серверы в локальной сети, желательно поменять их на публичные). После этого нужно обязательно отменить все внесённые изменения.
На удалённом хосте:

# Установите в файле /etc/ssh/sshd_config опцию "PermitTunnel no", и перезапустите SSH-сервер
service sshd restart
 
# Верните маршрут по умолчанию и удалите добавленные маршруты
ip route del default; ip route add default via 192.168.101.1
ip route del 1.2.3.4
ip route del 192.168.201.0/24
 
# Верните DNS-серверы, если меняли их

На локальном хосте:

# Выключите форвардинг пакетов
sysctl -w net.ipv4.ip_forward=0
 
# Удалите добавленные правила iptables и разорвите SSH-соединение




nat, настройка, шлюз, Подключение, VoIP