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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Защита Asterisk с помощью iptables

База знаний Настройка Asterisk

Netfilter — штатный файрвол linux, а iptables — интструмент, используемый для его настройки. Netfilter включает в себя 4 таблицы — raw, filter, mangle и nat. Все правила, которые будут описаны в этой статье, относятся к таблице filter, т.к. решение о том, будет пакет пропущен или нет, следует принимать в ней.

 
   По умолчанию, в таблицу filter входят цепочки INPUT, FORWARD и OUTPUT. Цепочку INPUT проходят пакеты, адресованные самому хосту, FORWARD — пакеты, адресованные другому хосту, OUTPUT — пакеты, отправляемые хостом. В дополнение к основным цепочкам пользователь может создавать свои цепочки с произвольными названиями.
   Цепочки состоят из правил, в которых могут производиться проверки определенных параметров пакета (например адрес отправления, протокол, порт назначения и т.д.), если проверяемые параметры пакета удовлетворяют правилу, к пакету применяется действие, описанное в правиле (ACCEPT — пропустить, DROP — сбросить пакет, REJECT — сбросить пакет и проинформировать об этом отправителя).
   Каждый пакет проходит правила цепочки по порядку, пока не найдется правило, по которому пакет будет пропущен или сброшен. Если ни одно правило основной цепочки не подходит, то к пакету применяется политика цепочки. По умолчанию, политика всех цепочек таблицы filter равна ACCEPT, это означает, что пакеты, не подходящие ни к одному правилу, будут пропущены.

   Далее рассмотрим настройку правил iptables для хоста Asterisk на конкретном примере.
   У хоста Asterisk две сетевые карты:
eth0, IP-адрес — 192.168.1.100, подключение к локальной сети.
eth1, IP-адрес — 11.11.11.11, подключение к сети Интернет.
IP-телефоны находятся в подсетях 192.168.1.0/24 и 192.168.2.0/24, а также подключаются из удаленного офиса с IP-адреса 1.2.3.4. Администратор подключается к станции с IP-адресов 192.168.3.254 и 5.6.7.8. IP-адрес SIP-провайдера — 22.22.22.22.

Настройка файрвола:

Для начала, создадим дополнительные цепочки для различных пакетов.
В цепочку ADMIN будут направляться SSH, HTTP и HTTPS трафик.

iptables -N ADMIN
iptables -A ADMIN -s 192.168.3.254 -j ACCEPT
iptables -A ADMIN -s 5.6.7.8 -j ACCEPT

В цепочку PHONES будут направляться пакеты от IP-телефонов.

iptables -N PHONES
iptables -A PHONES -s 192.168.1.0/24 -j ACCEPT
iptables -A PHONES -s 192.168.2.0/24 -j ACCEPT
iptables -A PHONES -s 1.2.3.4 -j ACCEPT

В цепочку SIP будет направляться SIP и RTP трафик.

iptables -N SIP
iptables -A SIP -j PHONES
iptables -A SIP -s 22.22.22.22 -j ACCEPT

Теперь напишем правила для цепочки INPUT.

Данное правило разрывает TCP-соединение с отправкой RST-пакета, если первым пакетом в этом соединении был SYN-ACK. Подобное поведение файрвола не позволит злоумышленникам использовать IP-адрес хоста в атаках с использованием IP спуфинга.

iptables -A INPUT -p tcp -m state --state NEW --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset

Сбрасываем первый пакет TCP-соединения, если он не является SYN-пакетом.

iptables -A INPUT -p tcp -m state --state NEW! --syn -j DROP

Принимаем пакеты в состоянии RELATED и ESTABLISHED, сбрасываем пакеты в состоянии INVALID.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

Принимаем весь трафик с локального интерфейса

iptables -A INPUT -i lo -j ACCEPT

Принимаем SSH, HTTP и HTTPS трафик только с IP-адресов администратора.

iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ADMIN
iptables -A INPUT -p tcp --dport 22 -j ADMIN

Принимаем SIP и RTP трафик с IP-адресов провайдера и IP-телефонов.
(в нашем случае, диапазон портов для RTP трафика — 10000-20000)

iptables -A INPUT -p udp -m multiport --dport 5060,10000-20000 -j SIP

Принимаем TFTP-запросы от телефонов.
(TFTP-сервер часто используется при провижининге IP-телефонов)

iptables -A INPUT -p udp --dport 69 -j PHONES

Принимаем NTP-запросы от телефонов.
(в нашем случае IP-телефоны будут синхронизировать время со станцией)

iptables -A INPUT -p udp --dport 123 -j PHONES

Принимаем ICMP-пакеты типа 3, код 4 (необходима фрагментация, но установлен флаг DF) — это необходимо для работы механизма «Path MTU Discovery».

iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT

Принимаем ICMP-пакеты типа 11 (TTL пакета истекло)

iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT

Принимаем ICMP-пакеты типа 8 (эхо-запрос, пинг). Для предотвращения пинг флада будем пропускать 10 пакетов в секунду

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/sec -j ACCEPT

Все остальные пакеты можно сбрасывать, ставим политику цепочки INPUT в DROP

iptables -P INPUT DROP

Политику цепочки FORWARD тоже можно, на всякий случай, установить в DROP, т.к. хост не будет выступать в роли маршрутизатора.

iptables -P FORWARD DROP

Цепочку OUTPUT можно не трогать, но можно и запретить в ней отправку пакетов на определенные IP-адреса, если это требуется.

Если на хосте включен протокол IPv6, но его использование не планируется, следует запретить весь IPv6 трафик с помощью утилиты ip6tables.

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

Ниже приведен скрипт целиком, для изменения настроек iptables можно просто вносить изменения в этот скрипт и запускать его.


IPTABLES=/sbin/iptables

IP6TABLES=/sbin/ip6tables

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

$IP6TABLES -P INPUT DROP
$IP6TABLES -P FORWARD DROP
$IP6TABLES -P OUTPUT DROP

$IPTABLES -F
$IPTABLES -X ADMIN 2>/dev/null
$IPTABLES -X PHONES 2>/dev/null
$IPTABLES -X SIP 2>/dev/null

$IPTABLES -N ADMIN
$IPTABLES -A ADMIN -s 192.168.3.254 -j ACCEPT
$IPTABLES -A ADMIN -s 5.6.7.8 -j ACCEPT

$IPTABLES -N PHONES
$IPTABLES -A PHONES -s 192.168.1.0/24 -j ACCEPT
$IPTABLES -A PHONES -s 192.168.2.0/24 -j ACCEPT
$IPTABLES -A PHONES -s 1.2.3.4 -j ACCEPT

$IPTABLES -N SIP
$IPTABLES -A SIP -j PHONES
$IPTABLES -A SIP -s 22.22.22.22 -j ACCEPT

$IPTABLES -A INPUT -p tcp -m state --state NEW --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p tcp -m state --state NEW! --syn -j DROP
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --dport 80,443 -j ADMIN
$IPTABLES -A INPUT -p tcp --dport 22 -j ADMIN
$IPTABLES -A INPUT -p udp -m multiport --dport 5060,10000-20000 -j SIP
$IPTABLES -A INPUT -p udp --dport 69 -j PHONES
$IPTABLES -A INPUT -p udp --dport 123 -j PHONES
$IPTABLES -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/sec -j ACCEPT

$IPTABLES -P INPUT DROP


Примечание: Правильно настроенный файрвол не является гарантией безопасности IP-АТС. Рекомендуется еще установка программы Fail2Ban для устранения возможности длительного подбора паролей.

limit, Time, трафик, Подключение, настройка, установка, sip, nat, asterisk, сервер, IP-телефоны, телефоны