Настройка IP Tables для сервера IP телефонии Asterisk на CentOS7
Данная заметка предназначена для последующей корректной настройки сервера IP телефонии на базе CentOS 7 с использованием модуля Asterisk, этому будет посвящена отдельная статья.
Сейчас рассмотрим работу и настройку IP Tables для Asterisk, а для начала выполним проверку установленного программного пакета IP Tables. Стоит заметить – для выполнения команд необходимы права суперпользователя:
rpm -q iptables
Если данного пакета не обнаружено – необходимо выполнить установку с использованием стандартного менеджера пакетов в CentOS 7 – yum:
yum -y install iptables
Далее перейдем непосредственно к конфигурированию IP Tables, просмотрев все текущие правила:
iptables -L
Настройка общих правил IP Tables
Создаем новое правило:
iptables -P INPUT ACCEPT
Это правило дает разрешение на все входящие подключения. Очень актуально при удаленной настройке сервера по SSH – блокировки/разрыва нашего соединения не произойдет. Следующей командой сбросим все правила, оставив только созданное нами правило:
iptables -F
Теперь перейдем к настройке интерфейсов:
iptables -A INPUT -i lo -j ACCEPT
Этим правилом мы разрешаем все подключения на localhost (адаптер lo / loopback).
Комментарий к выполненной команде:
-А добавляет правило в конец заданной цепочки
-lo интерфейс
-i перед интерфейсом lo разрешает на него все виды трафика
-j указывает роль данного правила, т.е. принять все подключения
Далее командой (указана ниже) выполним настройку правил для пакетов:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Опция -m используется для загрузки модуля state. Модуль state в свою очередь проверяет состояние пакета и определяет является ли он новым-NEW, уже созданным-ESTABLISHED или новым, но связанным-RELATED с уже установленным соединением. Состояние ESTABLISHED указывает на то, что пакет принадлежит уже установленному соединению через которое пакеты идут в обоих направлениях. Признак NEW подразумевает, что пакет открывает новое соединение или пакет принадлежит однонаправленному потоку. Признак RELATED указывает на то что пакет принадлежит уже существующему соединению, но при этом он открывает новое соединение.
Сделаем правильно для порта 22, используемого по умолчанию для SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Опираясь на сказанное выше, мы понимаем – это правило добавляется к цепочке INPUT, т.е. ко входящим подключениям и разрешает (пропускает) все пакеты приходящие по протоколу TCP (-p tcp) на порт 22 (-drop 22).
Для открытия порта 80, т.е. для доступа к веб-серверу необходимо сделать следующее правило:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -P INPUT DROP
Изменяет наше первое правило для входящих цепей (подключений/пакетов), таким образом трафик блокируется на все входящие подключения. Заранее мы оставили только 80 и 22 порты открытыми.
Далее (по очереди) убираем маршрутизацию трафика и разрешаем весь исходящий:
iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
Сохраним правила:
service iptables save
Настройка правил IP Tables для Astersik
Следующим списком команд откроем доступ для портов 5060, 4569, 5038 (Asterisk Manager Interface) и 10000:20000, т.е. для SIP, IAX, AMI, RTP:
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT service iptables save
Настройка IP Tables на CentOS 7 для сервера IP телефонии Asterisk завершена. Следите за обновлениями блога!