IPtables — это брандмауэр, который защищает компьютер от несанкционированных подключений извне а также ограничивает исходящие подключения. Для Астериска iptables дает возможность отключить подсети, из которых не должно быть подключений к Asterisk, а также в связке с fail2ban iptables может защитить сервер от атак типа bruteforce «грубая сила» — подбора паролей к сервисам.
Чтобы просмотреть уже настроенные правила выполните (на примере CentOS):
1 |
iptables -L -n |
Настройка iptables для Asterisk
SIP протоколу необходимо открыть порт 5060:
1 |
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT |
если у Вас asterisk работает на другом порту или Вы используете протокол TCP вместо UDP, исправьте команду соответствующим образом.
Если дополнительно SIP будет защищен TLS то и 5061 и 5062:
1 |
iptables -A INPUT -p tcp -m tcp --dport 5061:5062 -j ACCEPT |
RTP протоколу (голосовой поток) необходимо открыть порты с 10000 по 20000:
1 |
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT |
В случае, если Вы ограничили в настройках asterisk диапазон портов (или полностью его сменили) не забудьте отразить это в правиле iptables!
Если Вы настроили соединение по IAX (точнее, IAX2) между двумя серверами asterisk (либо телефоны/софтфоны подключаются к астериску по IAX), необходимо открыть порт 4569:
1 |
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT |
Если у Вас настроен asterisk AMI (Asterisk Manager Interface), то добавьте следующее правило:
1 |
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT |
Сохраните правила чтобы они применялись после перезагрузки:
1 |
iptables-save > /etc/sysconfig/iptables |
Настройка iptables через файлы конфигурации
В операционной системе RHEL / CentOS уже предусмотрены конфигурационные файлы для iptables, они находятся здесь: /etc/sysconfig/iptables
. Для IPv6 соответственно: /etc/sysconfig/ip6tables
.
Для Debian по умолчанию конфигурационных файлов не предусмотрено, необходимо установить пакет iptables-persistent:
1 |
apt-get install iptables-persistent |
После установки пакета можно сохранить правила в файл с конфигурацией:
1 |
iptables-save > /etc/iptables/rules.v4 |
для IPv6 это будет:
1 |
ip6tables-save > /etc/iptables/rules.v6 |
В соответствующий конфигурационный файл добавьте следующие строки (обязательно ДО строки COMMIT !):
# Для работы по SIP протоколу (порт UDP 5060):
1 |
-A INPUT -p udp -m udp --dport 5060 -j ACCEPT |
# Для работы по RTP протоколу (голосовой поток, по умолчанию порты UDP с 10000 по 20000):
1 |
-A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT |
# соединение по IAX (точнее, IAX2) между двумя серверами asterisk :
1 |
-A INPUT -p udp -m udp --dport 4569 -j ACCEPT |
# Asterisk AMI (Asterisk Manager Interface):
1 |
-A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT |
После сохранения файла необходимо перезагрузить iptables.
Для CentOS:
1 |
service iptables restart |
для Debian:
1 |
/etc/init.d/iptables-persistent restart |