UMGUM.COM 

Просто с Iptables ( Пример задания простейшей первичной конфигурации защитного экрана "Netfilter" посредством утилиты "Iptables". )

29 июня 2017  (обновлено 27 октября 2018)

OS: Linux Debian/Ubuntu.
Application: Netfilter, Iptables.

Здесь чистой воды шпаргалка в виде BASH-скрипта задания простейшей первичной конфигурации защитного экрана "Netfilter" посредством утилиты "Iptables", предназначенная для типового сервера сетевых приложений.


Предварительная проверка состояния "Netfilter".

Разумеется, прежде всего нужно в обязательном порядке ознакомиться с текущим набором правил фильтрации сетевого трафика! Вполне может быть, что "Netfiter" здесь уже что-то делает.

Просмотр правил основной таблицы "filter", с цепями обработки входящего, транзитного и исходящего трафика:

# iptables -L -n -v --line-numbers

Просмотр правил таблиц расширенной обработки:

# iptables -t nat -L -n -v --line-numbers
# iptables -t mangle -L -n -v --line-numbers

Деактивация лишних прослоек управления.

CLI-утилита "Iptables" - это все, что требуется для управления сетевой защитой Linux-системы. Правда, для её использования потребуется некоторое погружение в теорию принципов сетевых клиент-серверных взаимодействий, а также продумывание методики отслеживания изменений правил, их сохранения и применения таковых при загрузке операционной системы.

Для упрощения процедур эксплуатации "Iptables" в современных Linux-ах иногда применяют дополнительные обёртки, вроде "ufw" (Uncomplicated Firewall, "незамысловатый межсетевой экран") для "Ubuntu". Инструмент "ufw" является интерфейсом к "Iptables" и всегда может быть заменён прямым набором правил для последнего. Обычно я выключаю и деактивирую эту прослойку:

# ufw status verbose
# systemctl stop ufw
# systemctl disable ufw

Скрипт задания простейшей первичной конфигурации защитного экрана.

# vi ./set-iptables-rules.sh && chmod ug+x ./set-iptables-rules.sh

#!/bin/bash

# Предварительно очищаем три основные таблицы правил обработки трафика
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Правилом "по умолчанию" запрещаем все входящие и транзитные соединения
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Правилом "по умолчанию" разрешаем все исходящие соединения
iptables -P OUTPUT ACCEPT

# Явно обрубаем все соединения, не укладывающиеся в логику защитного экрана
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Одним из первых правил разрешаем прохождение пакетов в уже установленных соединениях
# (исключение избыточной аналитики существенно снижает нагрузку на защитный экран)
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Разрешаем входящие соединения от "локальной петли"
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем входящие SSH-подключения
iptables -A INPUT -p TCP --dport 22 -j ACCEPT

# Разрешаем входящие соединения к web-серверу
iptables -A INPUT -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -p TCP --dport 443 -j ACCEPT

# Разрешаем входящие ICMP ping-запросы
iptables -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT

# Опционально разрешаем входящие запросы от сервера мониторинга к Zabbix-агенту
iptables -A INPUT -s 10.20.30.41/32 -p TCP --dport 10050 -j ACCEPT -m comment --comment "Zabbix"

# Опционально разрешаем входящие запросы от сервера мониторинга к JMX-интерфейсу WildFly/Tomcat
iptables -A INPUT -s 10.20.30.41/32 -p TCP --dport 9990 -j ACCEPT -m comment --comment "Zabbix JMX"

# Опционально разрешаем входящие запросы от сервера резервного копирования к Bacula-агенту
iptables -A INPUT -s 10.20.30.42/32 -p TCP --dport 9102 -j ACCEPT -m comment --comment "Bacula"

# Опционально разрешаем входящие запросы от сервера приложений к СУБД PostgreSQL
iptables -A INPUT -s 10.20.30.43/32 -p TCP --dport 5432 -j ACCEPT -m comment --comment "PostgreSQL"

# Опционально разрешаем входящие запросы от сервера приложений к СУБД MySQL
iptables -A INPUT -s 10.20.30.44/32 -p TCP --dport 3306 -j ACCEPT -m comment --comment "MySQL"

# Опционально разрешаем входящие запросы от сервера приложений к СУБД Oracle
iptables -A INPUT -s 10.20.30.45/32 -p TCP --dport 1521 -j ACCEPT -m comment --comment "Oracle"

exit 0

Сохранение и применение правил.

Наборы правил обработки трафика таблиц "Netfilter" не сохраняются автоматически и не восстанавливаются при загрузке операционной системы. Для этого используют команды "iptables-save" и "iptables-restore" в скриптах инициализации сетевой подсистемы, или вспомогательные утилиты:

# aptitude install iptables-persistent

После того, как настройки правил "Netfilter" будут завершены, их следует явно сохранить:

# /etc/init.d/iptables-persistent save

Обращаю внимание, что автоматическое сохранение правил обработки трафика не поддерживается из принципиальных соображений - каждый меняющий конфигурацию защитного экрана должен осознавать момент прохода через "точку невозврата".

Сервис "iptables-persistent" оперирует всего лишь двумя файлами в директории "/etc/iptables/": "rules.v4" и "rules.v6" - с набором команд для "Iptables", которые при загрузке ОС будут применены к "Netfilter".


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )