Основы iptables

iptables — утилита для командной строки, которая является стандартным интерфейсом управления работой брандмауэра netfilter. Здесь разобраны основные правила брандмауэра, которые используются во многих сценариях: открытие и блокирование портов, IP-адресов, сервисов и сетевых интерфейсов. Большое руководство по iptables: https://www.opennet.ru/docs/RUS/iptables/

Краткое руководство https://wiki.centos.org/HowTos/Network/IPTables

Порядок правил в цепочке имеет важное значение.

  • Добавляем правило в конец цепочки:

 

  • Вставляем новое правило в цепочку под нужным номером. Число после имени правила — задаёт его номер.

Чтобы поместить правило в начало цепочки, достаточно не указывать его номер.

 

  • Проверить текущий набор правил iptables можно следующим образом:

 

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

Если новые правила Iptables не сохранить специальной командой, то они сбрасываются после перезагрузки сервера.

Сохранение правил в Ubuntu

В Ubuntu новые правила iptables сохраняются с помощью пакета iptables-persistent. Если пакет не установлен, то его следует установить:

Для сохранения новых правил следует ввести команду:

Сохранение правил в CentOS версии 6 и младше

В CentOS 6 для сохранения новых правил можно воспользоваться следующей командой:

Правила iptables сохраняются в файле /etc/sysconfig/iptables.

В ОС CentOS 7 вместо iptables используется FirewallD

 

Общие правила iptables

Интерфейс обратной петли

Интерфейс обратной петли (loopback) используется для настройки взаимодействия сервера приложений с сервером баз данных на локальном адресе. Для установки соединения, необходимо настроить брандмауэр для его поддержки.

Чтобы разрешить loopback трафик, нужно выполнить команды:

Разрешение существующих и связанных с ними входящих подключений

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

Разрешение существующих исходящих соединений

Правило для разрешения серверу поддерживать исходящий трафик существующих соединений:

Внешняя eth0 и внутренняя сеть eth1

Правило для настройки взаимодействия eth0 и eth1 :

Сброс недействительных пакетов

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

Блокировка IP-адреса

Правило для блокировки всех сетевых соединений, исходящих от конкретного IP-адреса (например, 15.15.15.45):

Отклонить соединение

Правило для отклонения соединения, поступающие от конкретного IP-адреса. При этом инициатор получит ошибку Connection refused:

Ограничение соединений по интерфейсу

Блокировка соединения, поступающие от конкретного IP на определённый интерфейс:

 

Сервис SSH

Разрешение всего входящего трафика:

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

Белый список IP-адресов

Правило для разрешения входящих SSH соединений только от безопасных подсетей или адресов.

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

Разрешение исходящего трафика

Правило для разрешения исходящих SSH-соединений (если OUTPUT – не ACCEPT).

 

Входящие соединения rsync

Rsync — программа для синхронизации файлов и каталогов, использует порт 873.

Правило для разрешения входящих соединений rsync, поступающих от определённых IP-адресов или подсети:

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

Веб-серверы

Разрешение входящего трафика HTTP

Чтобы разрешить весь входящий HTTP-трафик (порт 80), используйте:

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

Разрешение входящего трафика HTTPS

Правило для разрешения всего входящего HTTPS –трафика по 443 порту:

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

Разрешение входящего трафика HTTP и HTTPS

С помощью модуля multiport можно разрешить трафик HTTP и HTTPS. Правило, которое открывает оба порта для входящего трафика:

Вторая команда уместна только в случае, если политика OUTPUT – не ACCEPT.

СУБД MySQL

Белый список IP-адресов для удалённого доступа к серверу MySQL.

Правило открывающее доступ к MySQL только для определённых IP-адресов или подсетей:

Вторая команда уместна только в случае, если политика OUTPUT для MySQL – не ACCEPT.

Сетевые интерфейсы MySQL

Правило для разрешения доступа к MySQL с помощью определённого сетевого интерфейса, например, eth1:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

СУБД PostgreSQL

СУБД PostgreSQL  для установки клиентских соединений прослушивает порт 5432.

Белый список IP-адресов для доступа к PostgreSQL с удалённого сервера

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Сетевые интерфейсы PostgreSQL

Открыть доступ к PostgreSQL с помощью сетевого интерфейса, например, eth1:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Почтовые сервисы

Почтовые серверы Sendmail или Postfix работают с разными протоколами и слушают большое количество портов для получения/отправки электронной почты. Для повышения безопасности следует оставить открытыми только те порты, которые используются и заблокировать исходящую SMTP почту.

Блокирование исходящей почты SMTP

SMTP использует порт 25 для отправки почтовых сообщений. Правило для его блокировки:

Разрешение трафика SMTP

Правило для разрешения SMTP трафика на 25 порту:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Разрешение входящего трафика IMAP

Правило для разрешения серверу отвечать на IMAP-соединения на порт 143 и принятие почты:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Разрешение входящего трафика IMAPS

Правило для разрешения серверу отвечать на IMAPS-соединения на порт 993 и принятие почты:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Разрешение входящего трафика POP3

Правило для разрешения серверу отвечать на POP3-соединения на порт 110 и принятие почты:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.

Разрешение входящего трафика POP3S

Правило для разрешения серверу отвечать на POP3S-соединения на порт 995 и принятие почты:

Вторая команда уместна только в случае, если политика OUTPUT– не ACCEPT.