IPTables правила для ntopng

Первым делом посмотрим текущие правила IPTables:

iptables -nvL

Чтобы открыть порт ntopng добавим правило:

sudo iptables -A INPUT -m tcp -p tcp --dport 3000 -j ACCEPT

Чтобы открыть порт ntopng только для конкретной сети или IP:

sudo iptables -A INPUT -m tcp -p tcp --dport 3000 -s 10.0.0.0/24 -j ACCEPT

Смотри также мои статьи:
Настройка IPTables
Установка и настройка ntopng

IPTables правила для nprobe

Первым делом посмотрим текущие правила IPTables:

iptables -nvL

Чтобы nprobe мог принимать NetFlow данные, откроем ему порт:

sudo iptables -A INPUT -p udp --dport 2055 -j ACCEPT

Чтобы nprobe мог принимать NetFlow данные только от конкретной сети или IP:

sudo iptables -A INPUT -s 10.0.0.0/24 -p udp --dport 2055 -j ACCEPT

Смотри также мои статьи:
Настройка IPTables
Установка и настройка nprobe

IPTables правила для MySQL

Если в iptables блокируются все входящие соединения (INPUT DROP) и чтобы открыть внешний доступ к MySQL необходимо добавить правила:

iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

Замечу, для того чтобы открыть внешний доступ, также нужно в конфигурационном файле my.cnf закомментировать строку «bind-address = 127.0.0.1».

Если по умолчанию INPUT ACCEPT, то сначала укажем с каких IP разрешен доступ, а только последним правилом заблокируем всем остальным:

/sbin/iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port 3306 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.5 -p tcp --destination-port 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

Например используя nmap можно проверить локально и внешне фильтруется ли доступ:

nmap -p 3306 localhost
nmap -p 3306 192.168.1.5

Смотри также:
Настройка IPTables
Другие мои статьи о MySQL

IPTables правила для NTP и SNTP

Чтобы открыть доступ NTP клиенту и серверу в IPTables необходимо добавить правила:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -s 10.0.0.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -D INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

Смотри также:
Настройка IPTables
Настройка NTP клиента и сервера в Linux

IPTables правила для FTP сервера

Чтобы открыть доступ к FTP серверу в IPTables необходимо добавить правила:

sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1024:1030 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 192.168.1.0/24:

sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 21 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1024:1030 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -D OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 1024:1030 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

1024-1030 — пример портов для пассивного режима, указываются в конфигурации FTP сервера, например для ProFTPd указываются в файле /etc/proftpd/proftpd.conf так:

PassivePorts 1024 1030

Смотри также мои статьи:
Настройка IPTables
Активный и пассивный режим работы FTP
Установка и настройка Pure-FTPd в Ubuntu
Установка и настройка ProFTPd в Ubuntu

IPTables правила для Asterisk

Чтобы разрешить подключение SIP в IPTables, добавим правила (первое для соединений, второе для голосового трафика):

sudo iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Чтобы разрешить подключения только с конкретного адреса, то вместо правил выше укажем (где 192.168.1.50 доверенный IP адрес):

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 10000:20000 -j ACCEPT

Аналогично укажем для каждого IP либо сразу для подсети, например:

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

Смотри также мои статьи:
IPTables правила для Asterisk AMI
Настройка IPTables

Скрипт быстрой настройки IPTables

Иногда нужно например удалить все правила IPTables и прописать только нужное, так вот для удобства можно указать их в скрипте, после чего выполнить его.

Переключимся на root пользователя, в Ubuntu это можно сделать так:

sudo -i

Сначала посмотрим существующие правила (возможно некоторые будут нужны и их можно будет скопировать в скрипт):

iptables -nvL

И собственно ниже приведу пример скрипта с набросанными правилами IPTables:

#!/bin/sh
# Пример очистки и удаления всех существующие правил и цепочек
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X
iptables -X
# Запретим все входящие и проходящие соединения, разрешим все исходящие от сервера
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Разрешим локальный интерфейс
iptables -A INPUT -i lo -j ACCEPT
# Не трогаем уже установленные соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Откроем порты SSH, HTTP для всех если нужно
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# При необходимости можно разрешить все входящие соединения конкретному IP-адресу
iptables -A INPUT -s 192.168.10.101 -j ACCEPT
# Пример разрешения PING
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# и т.д.

Сделаем файл скрипт исполняемым:

chmod +x rules.sh

Выполним его:

./rules.sh

Для удобного сохранения правил в Ubuntu, чтобы они не сбросились после перезапуска системы, можно установить iptables-persistent:

apt-get install iptables-persistent

После чего сохранять правила командой:

service iptables-persistent save

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

iptables-save >/etc/firewall.conf
ip6tables-save >/etc/firewall6.conf

Создать файл например через редактор nano (Ctrl+X для выхода из редактор, y/n и Enter для сохранения или отмены изменений):

nano -w /etc/network/if-up.d/00-iptables

Добавить в него содержимое:

#!/bin/sh
iptables-restore < /etc/firewall.conf
ip6tables-restore < /etc/firewall6.conf

И сделать файл выполняемым:

chmod 744 /etc/network/if-up.d/00-iptables

Смотрите также:
Настройка IPTables

Журналирование активности средствами IPTables

С помощью iptables можно записывать в лог-файл сетевую активность, то есть какие данные куда передаются и откуда приходят.
Пример команды:

sudo iptables -t filter -A FORWARD -s 192.168.1.0/24 -m tcp -p tcp --dport 80 -j LOG --log-prefix "iptables: "

Чтобы информация писалась не в rsyslog файл, а отдельно, создадим файл:

sudo nano /etc/rsyslog.d/10-iptables.conf

И добавим в него следующее:

:msg, contains, "iptables: " -/var/log/iptables.log
& ~

Чтобы применить изменения перезапустим rsyslog:

sudo /etc/init.d/rsyslog reload

Готово, указанная в первом правиле сетевая активность будет записываться в файл /var/log/iptables.log.

Также желательно настроить logrotate для удаления старых логов, для экономии места на диске.

Смотрите также:
Настройка logrotate для ротации логов
Настройка IPTables

Установка и использование Firewall Builder (fwbuilder)

Firewall Builder — утилита позволяющая легко подготовить правила для множества брандмауэров, например iptables, ipfw, acl для HP, Cisco и т.д.

Утилиту можно fwbuilder запускать как под Windows так и Linux, в Linux когда она установлена ее можно запускать из меню или набрав команду fwbuilder.

В Linux Ubuntu fwbuilder можно установить скачав его по ссылке http://sourceforge.net/projects/fwbuilder/files/Current_Packages/ и запустив скачанный файл либо через консоль, например командой:
dpkg -i fwbuilder_5.1.0.3599-ubuntu-precise-1_amd64.deb

Инструкцию по использованию fwbuilder для dd-wrt можно посмотреть на официальном сайте http://www.dd-wrt.com/wiki/index.php/Firewall_Builder