Как сохранить правила iptables ubuntu

Обновлено: 07.07.2024

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

Если вы хотите разобраться с утилитой более подробно, тогда стоит открыть статью в wikibooks и хорошенько запастись энтузиазмом и терпением, а в этой статье будут следующие, довольно простые, но в тоже время важные темы (кликабельно):

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

Если ввести команду с sudo не предоставляется возможности, тогда нужно ввести просто su , но для этого потребуется ввести пароль от root.

Установка iptables

Для начала убедимся, что утилита iptables установлена. Для этого введем команду iptables -h и если вывод будет command not found , значит утилиту требуется установить.

Установка iptables очень простая, для этого достаточно ввести:

Вместо apt может быть ваш вариант, который зависит от вашего дистрибутива и что там стоит по-умолчанию. Дожидаемся конца установки.

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

Чтобы защитить наш десктоп огненной стеной и не бояться, что к нам подключатся извне посторонние, технически подкованные персоны, следует прописать базовые правила в фаервол. Это не даст 100% гарантии безопасности вашего ПК (что в принципе невозможно), но существенно усложнит жизнь незваным гостям, которые скорее всего выберут цель полегче.

И так, если вы уже авторизованы под root в вашем домашней ОС и готовы забаррикадироваться от недоброжелателей, то стоит начать с правил по-умолчанию. Они будут срабатывать, если для соединения не нашлось других правил.

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

Просмотр правил iptables

После того, как мы внесли новые правила в iptables, необходимо их проверить и убедиться, что мы все сделали правильно. Для этого достаточно ввести простую команду, которая отобразит все установленные правила:

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

Как открыть порт в iptables

Чтобы разрешить подключаться к нашей ОС по SSH, нам потребуется разрешить подключение через порт 22, прописав правило в iptables:

Далее проверим все наши правила с помощью команды iptables -L

Как мы видим, появилось новое правило для ssh по стандартному порту 22. Теперь он открыт и можно подключаться, так как теперь блокируются все входящие соединения, кроме соединений по этому порту. О том, как подключаться к серверу по SSH, вы можете почитать здесь.

Как заблокировать IP адрес в iptables

Вместо используемого адреса в примере может быть любой, как внутренний, так и внешний. Проверим правила с помощью iptables -L

Как сохранить правила iptables

Одной из особенностей утилиты iptables является то, что прописанные правила полностью сбрасываются после перезагрузки системы. Самый простым способом сохранить настройки iptables будет поставить утилиту iptables-persistent . В debian и ubuntu это делается так, если вы по прежнему авторизованы под root:

Во время установки будет вопрос, сохранить ли текущие настройки iptables, пока выберем не сохранять, то есть No , потому что для начала нужно сохранить их в отдельный текстовый файл. В противном случае iptables-persistent ничего не сохранит.

После установки сохраним текущие настройки iptables в отдельный файл, который будет располагаться в папке утилиты:

А затем перезапустим службу iptables-persistent

То попробуйте перезапустить службу с другим названием:

В debian и ubuntu должен работать второй вариант.

Все, теперь можно смело перезагружать компьютер или сервер, все настройки iptables при это сохранятся.

Как откатить сохраненные правила iptables

Если вы ввели несколько правил по ошибке и хотите откатиться к тому набору правил, которые мы сохранили в файл в предыдущем разделе с помощью команды iptables-save , то для их восстановления достаточно ввести команду iptables-restore и указать пусть к этому файлу с сохраненными настройками:

Как удалить правило в iptables

Чтобы удалить одно конкретное правило из iptables, для начала нужно выяснить его номер и цепочку. Для этого нужно получить список всех правил с опцией --line-numbers :

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

В данном примере мы будем удалять правило под номером 1, который запрещает все входящие соединения с IP адреса 192.168.122.122 :

Уникальный номер правила мы знаем, теперь смотрим название его цепочки:

Теперь выведем весь список и проверим удалилось ли правило:

Как мы видим, правило успешно удалилось.

Как сбросить все правила iptables

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

Теперь выведем список правил и проверим сбросились ли они:

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

Для начала следует очистить правила, которые выставляет хостер по-умолчанию, потому что при определенных обстоятельствах прописанные ниже правила могут конфликтовать с теми, что уже есть.

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

Теперь разрешим внутренние соединения с 127.0.0.1 (localhost), а также установленные соединения для приложений и пинга.

Добавим несколько дополнительных фильтров:

Далее откроем порт 22, чтобы была возможность подключаться к серверу по SSH:

Открываем порты для базовых сервисов веб-сервера:

Если дополнительно планируется настраивать на сервере почту, то следует открыть порты и для этих служб:

Затем проверим все настройки командой iptables -L

И наконец стоит сохранить наши правила, чтобы они не испарились после перезагрузки сервера. Как это сделать, уже рассказано в разделе выше.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Требования

Для выполнения руководства нужно иметь два сервера. Исходный сервер, на котором находятся правила фаервола, называется в руководстве сервером A; целевой сервер – B.

Также нужно иметь права sudo.

Просмотр правил iptables

Прежде чем приступить к переносу правил брандмауэра, нужно просмотреть их. Для этого выполните следующую команду на сервере A:

sudo iptables -S
Example output:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP

Теперь нужно перенести эти правила на другой сервер.

Экспорт правил Iptables

Команда iptables-save сохранит текущие правила брандмауэра в stdout, после чего его можно будет сохранить в файл.

Используйте эту команду на сервере А, чтобы экспортировать правила в файл iptables-export.


sudo iptables-save > iptables-export

После этого в домашнем каталоге появится файл iptables-export, при помощи которого можно перенести правила фаервола на другой сервер.

Просмотр файла (опционально)

Проверьте, содержит ли новый файл все необходимые данные:

Как видите, данный файл содержит все текущие правила iptables, и теперь можно скопировать этот файл на целевой сервер.

Перенос правил на целевой сервер

Проще всего для этого использовать scp или же просто скопировать и вставить содержимое файла в новый файл на целевом сервере.

Ниже показано, как при помощи scp скопировать файл по сети в каталог /tmp.

Итак, запустите команду scp на сервере А, указав логин и IP-адрес сервера.

scp iptables-export user@server_b_ip_address:/tmp

Пройдя авторизацию, файл будет скопирован в каталог /tmp на сервер В.

Примечание: Содержимое каталога /tmp будет удалено при перезагрузке системы. Не забудьте переместить файл в более надёжный каталог.

Импорт правил

Теперь можно загрузить перенесённые правила.

Примечание: В случае необходимости сейчас можно обновить их, добавив данные нового сервера; отредактируйте файл /tmp/iptables-export, внеся всё необходимое.

Когда правила будут соответствовать требованиям данного сервера, загрузите их из файла iptables-export при помощи команды iptables-restore.

На сервере В запустите:

sudo iptables-restore < /tmp/iptables-export

Чтобы убедиться, что правила загружены успешно, используйте:

sudo iptables -S

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

Несохранённые правила фаервола действительны только в течение одной сессии; чтобы сделать набор правил постоянным, нужно его сохранить. Убедитесь, что вы на сервере В, и следуйте соответствующему разделу.

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

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

sudo apt-get install iptables-persistent

Во время установки программа предложит сохранить текущие правила iptables. Выберите yes.

В дальнейшем для сохранения новых или обновлённых правил используйте команду:

sudo invoke-rc.d iptables-persistent save

Сохранение правил в CentOS 6 и 7

По умолчанию системы CentOS 6 и 7 используют фаервол FirewallD; чтобы сохранить правила iptables, используйте:

sudo service iptables save

Это сохранит текущие правила iptables в файл /etc/sysconfig/iptables, который загрузится после перезапуска системы.

Продолжаем наше знакомство с фаерволом Netfilter & Iptables. Во второй части статьи речь пойдет об управлении правилами iptables. Мы научимся добавлять правила в межсетевой экран, сохранять их и восстанавливать. Рассмотрим утилиты для управления правилами и напишем свой скрипт управления.

Отключение Selinux и Firewalld в CentOS/RHEL системах

Если вы хотите начать использовать iptables в CentOS или других Red Hat производных системах, то перед настройкой необходимо отключить Selinux и firewalld.

Для отключения selinux отредактируем файл /etc/sysconfig/selinux.

Firewalld - надстройка над iptables, играющая роль брандмауэра, применяется в RHEL системах по умолчанию. Так как управлять фаерволом мы будем при помощи собственных правил, то firewalld необходимо отключить.

Добавление и сохранение правил iptables

Для примера добавим какое-нибудь безобидное правило, чтобы не затрагивать подключение. Например запретим прохождение транзитных пакетов.

Проверим текущие настройки межсетевого экрана командой iptables -L -n -v.

В цепочке FORWARD действием по умолчанию значится DROP, следовательно правило работает.

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

Изменения в правилах сохраняются/записываются посредством встроенной утилиты iptables-save. Необходимо создать файл в который будут записываться правила.

Так-как я нахожусь в системе под root, то команда создаст файл в домашней директории root-пользователя /root/iptables_rules. Для создания файла в другом каталоге, команда должна выглядеть так:

Воспользуемся iptables-save и сохраним изменения, записав их в созданный файл iptables_rules.

Cодержимое файла iptables_rules, в который были записаны правила, будет выглядеть так:

Утилита iptables-save считала текущие настройки правил из оперативной памяти и записала их в указанный файл, в форме понятной для пользователя, то есть в форме правил.

Политики по умолчанию записываются после знака двоеточия (:).

  • iptables -P FORWARD DROP будет записано как :FORWARD DROP

Обычные правила записываются после политик по умолчанию, без слова iptables. Например нужно запретить любые подключения с машины под адресом 192.168.1.100, добавляем нужное правило (iptables -A INPUT -s 192.168.1.100 -j DROP) в файл iptables_rules.

Если правила добавляются сразу в файл минуя консоль, то их нужно применить в фаерволе, для этого существует утилита iptables-restore.

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

Применение и восстановление правил iptables

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

Если правило добавлено сразу в файл, то оно не применяется в фаерволе и его надо применить.

Для восстановления правил после перезагрузки или включения системы необходимо применять iptables-restore. Чтобы не проделывать процедуру восстановления правил каждый раз, правила можно добавить в автозагрузку.

CentOS

В CentOS добавить правила в автозагрузку можно посредством правки файла rc.local.

Теперь правила будут применяться в фаерволе при запуске системы. Для того чтобы запретить загрузку через rc.local, уберите добавленную строку или закомментируйте ее.

Debian & Ubuntu

В Debian & Ubuntu все работает также, только rc.local расположен в каталоге /etc, загрузку можно прописать здесь. Можно сделать иначе, в Debian & Ubuntu запуск правил удобнее прописать в конф. файле сетевых интерфейсов /etc/network/interfaces.

Теперь правила будут стартовать совместно с сетевым интерфейсом. Можно делать перезапуск правил путем перезагрузки сетевого интерфейса, для применения внесенных правок.

Можно пойти дальше и прописать команду для сохранения текущего состояния правил при выключении/перезапуске компьютера или при перезапуске интерфейса.

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

Данные схемы рабочие, но неудобные, делать сохранение и восстановление правил можно по другому, при помощи специальных утилит. Теперь когда мы знаем механизм работы, можно переходить к изучению утилит помогающих управлять правилами iptables.

iptables-services в CentOS/RHEL системах

В CentOS существует утилита управления правилами iptables, делающая все вышеописанное, она создает файл для записи, сохраняет изменения, загружает правила при запуске системы. Эта утилита называется iptables-services.

После установки в директории /etc/sysconfig появляются файлы iptables и ip6tables, в эти файлы производится запись правил. В файл iptables производится запись правил для протокола IPv4, в файл ip6tables для протокола IPv6.

Конфигурационный файл находится в /etc/sysconfig/iptables-config. Здесь нас интересуют два параметра:

  • IPTABLES_SAVE_ON_STOP="no" - сохранение текущих правил при остановке демона iptables, по умолчанию отключено.
  • IPTABLES_SAVE_ON_RESTART="no" - сохранение текущих правил при перезапуске/перезагрузке системы, по умолчанию отключено.

Включим сохранение текущих правил, нужно заменить значения с "no" на "yes". Правила будут сохраняться автоматически в файл /etc/sysconfig/iptables, при перезагрузке системы/службы iptables. Также правила можно сохранять командой restart.

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

iptables-persistent в Debian & Ubuntu

Почти то же, что и iptables-services, только немного неудобнее.

Во время установки будет задано два вопроса, на которые следует ответить положительно.

iptables debian ubuntu

После установки в каталоге /etc/iptables появятся файлы rules.v4 и rules.v6. В эти файлы будут записываться правила межсетевого экрана.

Управление правилами при помощи iptables-persistent немного отличается от iptables-services в более неудобную сторону. После добавления новых правил через консоль, следует выполнять команду для их сохранения.

Команда записывает изменения правил в файл /etc/iptables/rules.v4, в процессе выполнения запрашивается подтверждение. Если после добавления нового правила вы не выполните эту команду, то оно будет работать только до первой перезагрузки или отключения системы.

Автоматически сохранять текущие правила при перезагрузке iptables-persistent не может.

Для подстраховки можно воспользоваться рассмотренным выше способом и добавить в файл /etc/network/interfaces, команду для автоматического сохранения правил.

Также после установки пакета появляется демон netfilter-persistent при помощи которого можно управлять правилами iptables.

При выполнении команды --help можно посмотреть список доступных команд для управления.

Выполняться они могут через команду - service

  • service netfilter-persistent start - запустить сервис
  • service netfilter-persistent stop - остановить сервис
  • service netfilter-persistent restart - перезапустить сервис
  • service netfilter-persistent reload - восстановить правила из файлов rules.v4/rules.v6
  • service netfilter-persistent save - сохранить правила в файлы rules.v4/rules.v6
  • service netfilter-persistent flush - полностью очищает текущие правила, все становится открыто, но не очищает файл с записанными правилами. Поэтому после перезагрузки, правила из файла считаются и загрузятся снова, если его предварительно не очистить.

Таким образом для сохранения правил можно пользоваться как dpkg-reconfigure так и service netfilter-persistent save, например.

Скрипт для правил iptables

Самый удобный, надежный, самый легкий способ управления правилами, я как всегда приберег для конца статьи. Помимо всех вышеописанных способов правила можно добавлять скриптом.

Перед написанием скрипта, установите iptables-services в CentOS, iptables-persistent в Debian. На самом деле можно обойтись и без них, но с ними немного удобнее.

Создаем скрипт, по привычке я называю его ipt.sh, скрипт можно назвать как угодно, например myname.sh, где myname это имя скрипта.

Теперь можно добавлять необходимые правила, правила записываются обычным образом, без каких-либо дополнительных требований. В качестве примера приведу свой минимальный набор правил, которым пользуюсь повсеместно, добавляя в него необходимые правила в зависимости от обстоятельств.

Данный набор правил закрывает любые подключения извне, кроме подключений к работающим на сервере службам через разрешенные порты.

Примечание: обязательно смените имя сетевого интерфейса ens3 на свое (eth0 или enp0s3) в правиле разрешающем выходной трафик.

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

Если вы пишете скрипт в CentOS, то указываем /etc/sysconfig/iptables, если в Debian или Ubuntu, то /etc/iptables/rules.v4. Именно поэтому в начале я говорил, что должны стоять iptables-services и iptables-persistent, соответственно.

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

В конечном виде скрипт выглядит так.

Скрипт написан. Теперь его надо сделать исполняемым.

После чего его необходимо выполнить.

Если после выполнения скрипта проверить состояние фаервола, можно увидеть следующее.

Межсетевой экран в порядке, правила применены и работают. А что с файлом для сохранения?

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

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

Iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) Netfilter для ядер Linux, начиная с версии 2.4. С её помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов. Для работы с семейством протоколов IPv6 существует отдельная версия утилиты — Ip6tables. Для использования утилиты Iptables требуются привилегии суперпользователя (root).

Основные понятия

Ключевыми понятиями iptables являются:

Правило — состоит из критерия, действия и счетчика. Если пакет соответствует критерию, к нему применяется действие, и он учитывается счетчиком. Критерия может и не быть — тогда неявно предполагается критерий «все пакеты». Указывать действие тоже не обязательно — в отсутствие действия правило будет работать только как счетчик. Правила для каждой цепочки срабатывают в порядке их следования, поэтому порядок важен. Критерий — логическое выражение, анализирующее свойства пакета и/или соединения и определяющее, подпадает ли данный конкретный пакет под действие текущего правила. Критерии соединяются логическим «И». Действие — описание действия, которое нужно проделать с пакетом и/или соединением в том случае, если они подпадают под действие этого правила. О действиях более подробно будет рассказано ниже. Счетчик — компонент правила, обеспечивающий учет количества пакетов, которые попали под критерий данного правила. Также счетчик учитывает суммарный объем таких пакетов в байтах. Цепочка — упорядоченная последовательность правил. Цепочки можно разделить на пользовательские и базовые. Базовая цепочка — цепочка, создаваемая по умолчанию при инициализации таблицы. Каждый пакет, в зависимости от того, предназначен ли он самому хосту, сгенерирован им или является транзитным, должен пройти положенный ему набор базовых цепочек различных таблиц. Кроме того, базовая цепочка отличается от пользовательской наличием «действия по умолчанию» (default policy). Это действие применяется к тем пакетам, которые не были обработаны другими правилами этой цепочки и вызванных из нее цепочек. Имена базовых цепочек всегда записываются в верхнем регистре (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING). Пользовательская цепочка — цепочка, созданная пользователем. Может использоваться только в пределах своей таблицы. Рекомендуется не использовать для таких цепочек имена в верхнем регистре, чтобы избежать путаницы с базовыми цепочками и встроенными действиями. Таблица — совокупность базовых и пользовательских цепочек, объединенных общим функциональным назначением. Имена таблиц (как и модулей критериев) записываются в нижнем регистре, так как в принципе не могут конфликтовать с именами пользовательских цепочек. При вызове команды iptables таблица указывается в формате -t имя_таблицы. При отсутствии явного указания, используется таблица filter.

Архитектура

В системе netfilter, пакеты пропускаются через цепочки. Цепочка является упорядоченным списком правил, а каждое правило может содержать критерии и действие или переход. Когда пакет проходит через цепочку, система netfilter по очереди проверяет, соответствует ли пакет всем критериям очередного правила, и если так, то выполняет действие (если критериев в правиле нет, то действие выполняется для всех пакетов проходящих через правило). Вариантов возможных критериев очень много. Например, пакет соответствует критерию –source 192.168.1.1 если в заголовке пакета указано, что отправитель — 192.168.1.1. Самый простой тип перехода, –jump, просто пересылает пакет в начало другой цепочки. Также при помощи –jump можно указать действие. Стандартные действия доступные во всех цепочках — ACCEPT (пропустить), DROP (удалить), QUEUE (передать на анализ внешней программе), и RETURN (вернуть на анализ в предыдущую цепочку). Например, команды

Цепочки

Существует 5 типов стандартных цепочек, встроенных в систему:

PREROUTING — для изначальной обработки входящих пакетов. INPUT — для входящих пакетов адресованных непосредственно локальному процессу (клиенту или серверу). FORWARD — для входящих пакетов перенаправленных на выход (заметьте, что перенаправляемые пакеты проходят сначала цепь PREROUTING, затем FORWARD и POSTROUTING). OUTPUT — для пакетов генерируемых локальными процессами. POSTROUTING — для окончательной обработки исходящих пакетов.

Также можно создавать и уничтожать собственные цепочки при помощи утилиты iptables.

Таблицы

Цепочки организованны в 4 таблицы:

raw — просматривается до передачи пакета системе определения состояний. Используется редко, например для маркировки пакетов, которые НЕ должны обрабатываться системой определения состояний. Для этого в правиле указывается действие NOTRACK. Содержит цепочки PREROUTING и OUTPUT. mangle — содержит правила модификации (обычно заголовка) IP‐пакетов. Среди прочего, поддерживает действия TTL (Time to live), TOS (Type of Service), и MARK (для изменения полей TTL и TOS, и для изменения маркеров пакета). Редко необходима и может быть опасна. Содержит все пять стандартных цепочек. nat — просматривает только пакеты, создающие новое соединение (согласно системе определения состояний). Поддерживает действия DNAT, SNAT, MASQUERADE, REDIRECT. Содержит цепочки PREROUTING, OUTPUT, и POSTROUTING. filter — основная таблица, используется по умолчанию если название таблицы не указано. Содержит цепочки INPUT, FORWARD, и OUTPUT.

Цепочки с одинаковым названием, но в разных таблицах — совершенно независимые объекты. Например, raw PREROUTING и mangle PREROUTING обычно содержат разный набор правил; пакеты сначала проходят через цепочку raw PREROUTING, а потом через mangle PREROUTING.

Состояния

В системе netfilter, каждый пакет проходящий через механизм определения состояний, может иметь одно из четырёх возможных состояний:

NEW — пакет открывает новый сеанс. Классический пример — пакет TCP с флагом SYN. ESTABLISHED — пакет является частью уже существующего сеанса. RELATED — пакет открывает новый сеанс, связанный с уже открытым сеансом. Например, во время сеанса пассивного FTP , клиент подсоединяется к порту 21 сервера, сервер сообщает клиенту номер второго, случайно выбранного порта, после чего клиент подсоединяется ко второму порту для передачи файлов. В этом случае второй сеанс (передача файлов по второму порту) связан с уже существующим сеансом (изначальное подсоединение к порту 21).

Диаграмма прохождения таблиц и цепочек

Упрощённая диаграмма прохождения таблиц и цепочек:

http://www.rootdir.org/.offload/kptd-simplified-ru.svg

http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

Базовая конфигурация

Ниже приведён пример базовой статической конфигурации iptables. При сохранении и загрузке подобной конфигурации необходимо принимать во внимание возможность внесения в неё изменений со стороны других сервисов, например Fail2ban. Кроме того, при использовании IPv6-адресации конфигурацию для IPv6 следует выполнять независимо от IPv4.

Просмотр текущей конфигурации:

Создаём скрипт с дампом правил iptables:

Копируем следующий код:

Дополняем нужными правилами с учётом iptables-save.

Сохраняем и закрываем: Ctrl + O , Enter , Ctrl + X

Делаем скрипт исполняемым и загружаем правила iptables:

Просмотр текущей конфигурации:

Создаём скрипт с дампом правил ip6tables:

Копируем следующий код:

Дополняем нужными правилами с учётом ip6tables-save.

Сохраняем и закрываем: Ctrl + O , Enter , Ctrl + X

Делаем скрипт исполняемым и загружаем правила iptables:

Дополнительные правила

Ниже приведены некоторые сравнительно часто используемые правила. Цепочки INPUT/OUTPUT применяются для фильтрации локального трафика. Для транзитного трафика необходимо использовать цепочку FORWARD.

Читайте также: