Iptables – Настройки МСЭ

Приблизительное время чтения: 5 минут

Для чего нужен Межсетевой Экран (МСЭ) #

Iptables — это файервол для операционной системы на базе Linux в нашем случае CentOS 7. Он удобен и сравнительно прост в использовании, поэтому пользоваться им могут все, а не только системные администраторы.

Программа отвечает за блокировку или пропуск сетевого трафика для вашего сервера телефонии. При установке соединения с устройством iptables сверяется со списком правил, после чего принимает решение о действии в каждом конкретном случае. Сетевой пакет (TCP или UDP) может передаваться дальше или отклоняться.

Для настройки МСЭ перейдите в раздел: УПРАВЛЕНИЕ Настройки МСЭ

Основные настройки для работы сервера телефонии

  1. Доступ к веб-интерфейсу BOXPBX порты TCP 80 (http) и 443 (https).
  2. Доступ к операционной системе CentOS 7 порт TCP 48659 (SSH) порт можно изменить при необходимости.
  3. Доступ для регистрации абонентских устройств порт UDP 49001 (SIP), если использовать порт UDP 5060, то его требуется включать для списка IP адресов!
  4. Доступ для голосового трафика телефонии, диапазон портов UDP с 10000 до 20000 (RTP), порты должны быть открыты в обязательном порядке!

Символ # выключает правило. В первой строке #!/bin/sh не нужно убирать этот символ.

#!/bin/sh
/sbin/iptables -F
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
/sbin/iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
/sbin/iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
/sbin/iptables -I INPUT -p icmp -f -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
/sbin/iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -A INPUT -p tcp --dport 48659 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 49001 -j ACCEPT
#/sbin/iptables -A INPUT -p udp --dport 5060 -j ACCEPT
#/sbin/iptables -A INPUT -p udp -m udp -i eth0 -s 80.75.130.86 --dport 5060 -j ACCEPT
#/sbin/iptables -A INPUT -p udp -m udp -i eth0 -s 92.55.11.172 --dport 5060 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --syn --dport 48659 -m recent --name SSHLIMIT --set
/sbin/iptables -A INPUT -p tcp --syn --dport 48659 -m recent --name SSHLIMIT --update --seconds 30 --hitcount 3 -j DROP
/sbin/iptables-save > /etc/iptables_rules

Пример конфигурации МСЭ

network-firewall

Типы правил #

iptables

Существует три типа сетевых пакетов: входящие (отправленные на этот компьютер), исходящие (отправленные в сеть из этого компьютера) и проходящие (пересылаемые дальше). Фильтр iptables также делит пакеты на три цепочки, input, forward и output.

  • Input. Обрабатываются входящие соединения и сетевые пакеты. Цепочка задействуется при попытке подключения к пользовательскому компьютеру по SSH или отправке сайтом контента через браузер.
  • Output. Обрабатываются исходящие пакеты и соединения. Если выполнить пинг любого ресурса или зайти на любой сайт в браузере, iptables разрешит действие или запретит соединение, исходя из записанной цепочки правил.
  • Forward. Обрабатываются проходящие соединения. Сетевые пакеты, которые проходят через компьютер и предназначены другому адресату, попадают в эту цепочку. Встречается, если использовать компьютер как маршрутизатор или при раздаче Wi-Fi.
  • Не забывайте, что пинг внешних хостов требует не только отправки пакетов (input), но и получения ответа (input). Двусторонняя коммуникация — важное условие работы многих протоколов. Поэтому настройка iptables должна учитывать возможность полноценной работы с сервером по SSH. Зачастую forward оказывается невостребованным.

Стоит упомянуть еще два важных типа цепочек. Имеются в виду необходимая для первичной обработки и анализа абсолютно всех входящих пакетов цепочка Prerouting (сюда пакет попадает перед обработкой iptables), и завершающая работу с пакетами цепочка Postrouting (сюда после прохождения цепочки forward отправляются пакеты, которые нужно передать на другие узлы сети).

У каждого типа сетевых пакетов может быть набор правил, которые определяют, какое действие применить к конкретному пакету. Основными действиями являются:

  • ACCEPT – Разрешить прохождение сетевого пакета дальше по цепочке правил;
  • DROP – Удалить пакет;
  • REJECT – Отклонить сетевой пакет, уведомив об этом отправителя;
  • LOG – Запись о сетевом пакете в лог;
  • QUEUE – Отправить сетевой пакет пользовательскому приложению.

Действия с соединениями #

Перед настройкой фильтра проверьте, какие условия выполняются по умолчанию. Если соединение не подпадает под существующие правила, будут выполниться действия, заданные по умолчанию. Узнать уже сконфигурированные правила можно командой в консоли сервера Linux: iptables -L -nv.

В рабочем варианте все три цепочки должны разрешать приём трафика. Это можно задать вручную так:

iptables –policy INPUT ACCEPT
iptables –policy OUTPUT ACCEPT
iptables –policy FORWARD ACCEPT

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

iptables –policy INPUT DROP
iptables –policy OUTPUT DROP
iptables –policy FORWARD DROP

Таблицы iptables #

Таблицы iptables имеют тот же набор цепочек i(nput, forward, output) и предназначены для выполнения модификации, фильтрации или других действий над сетевыми пакетами. Выделяют следующие таблицы:

  • Raw – Для работы с пакетами, которые пока не прошли обработку;
  • Mangle – Для модификации пакетов;
  • Nat – Для поддержки работы NAT, если вы хотите использовать компьютер в качестве маршрутизатора;
  • Filter – Используется по умолчанию для фильтрации пакетов.

Дополнительные настройки #

Если посмотреть на синтаксис утилиты, можно заметить, что команда обычно имеет следующий вид:

# iptables <-t таблица> <действие> <цепочка> <дополнительные_параметры>

Здесь «таблица» указывает таблицу, с которой нужно работать. «Действие» — указывает действие, которое нужно выполнить (например, создать/удалить правило). «Дополнительные параметры» описывают действие и правило, которое нужно выполнить. Какими бывают действия?

  • -A. Добавить правило в цепочку;
  • -С. Проверить все правила;
  • -D. Удалить правило;
  • -I. Вставить правило с нужным номером;
  • -L. Вывести все правила в текущей цепочке;
  • -S. Вывести все правила;
  • -F. Очистить все правила;
  • -N. Создать цепочку;
  • -X. Удалить цепочку;
  • -P. Установить действие по умолчанию.

Среди дополнительных настроек для правил выделим следующие:

  • -p. Указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh;
  • -s. Указать ip адрес устройства-отправителя пакета;
  • -d. Указать ip адрес получателя;
  • -i . Входной сетевой интерфейс;
  • -o. Исходящий сетевой интерфейс;
  • -j. Выбрать действие, если правило подошло.
Рекомендация

В случае если iptables заблокировал доступ к серверу выполните следующие шаги:
1. # systemctl status iptables – Статус работы сервиса
2. # systemctl stop iptables – Остановить работу сервиса
3. Проверить ошибки программы Iptables
4. # systemctl start iptables – Запустить сервис
5. # iptables -nvL – Посмотреть правила которые необходимы для работы телефонии

Прокрутить вверх