Сохранение и восстановление больших наборов правил windows

Обновлено: 28.06.2024

Рабочую копию правил Netfilter хранит в пространстве ядра linux. Ядро по умолчанию разрешает все подключения, что мы видим при выполнении команды iptables с опцией -L При этом все изменения правил, сделанные нами во время работы операционной системы, автоматически обычно никуда не сохраняются при выключении компьютера. Поэтому после очередного включения вы обнаруживаете, что настроенных правил опять нет и везде установлены политики по умолчанию - ACCEPT.

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

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

  • С помощью утилиты iptables-save и загружать их с помощью iptables-restore;
  • С помощью утилиты iptables-persistent (данный вариант возможен в операционных системах Debian и Ubuntu).

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

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

Для сохранения правил межсетевого экрана Netfilter в linux можно использовать пакет iptables-save. Данный пакет записывает текущую конфигурацию в файл с указанным именем. Существуют две версии данного пакета:

  • iptables-save для протокола IPv4;
  • ip6tables-save для протокола IPv6.

Синтаксис команд одинаковый, поэтому мы рассмотрим вариант ipv4.

iptables-save [ -m modprobe ] [ -c ] [ -t таблица ] [ -f имя файла ]

  • -m modprobe: Указывает путь к программе modprobe. По умолчанию iptables-save проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe - утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
  • -c: включает в поток вывода программы все счетчики количества переданных байтов и пакетов;
  • -t таблица: выводит в поток вывода только одну таблицу, которая была явно указана. При отсутствии флага выводит все таблицы настроек firewall;
  • -f имя файла: Указывает имя файла записи настроек. Если файл не указан, то вывод происходит в поток вывода на экран STDOUT.

В самом простом варианте команда будет выглядеть, например, следующим образом:

sudo iptables-save -f /etc/iptables-conf/iptables_rules.ipv4

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

sudo iptables-save > /etc/iptables-conf/iptables_rules2.ipv4

В данном варианте команды iptables-save выводит оформленные правила в поток вывода на экран STDOUT, который мы перенаправляем в указанный нами файл. Предварительно необходимо создать директорию /etc/iptables-conf/:

sudo mkdir /etc/iptables-conf/

Просмотреть содержимое каталога можно с помощью команды:

ls -la /etc/iptables-conf/


Как загрузить правила iptables

iptables-restore [ -chntvV ] [ -w секунды ] [ -W миллисекунды ] [ -M modprobe ] [ -T таблица ] [ имя файла ]

  • -c: восстанавливает значения всех счетчиков пакетов и байтов;
  • -n: позволяет не сбрасывать содержимое правил обновляемой таблицы правил iptables. Если не указан - все текущие правила обновляемой таблицы сбрасываются. Получается, что правила из файла дописываются в конец таблиц рабочей конфигурации, если указан этот параметр;
  • -t: происходит только сборка и тестирование набора правил из файла, без обновление рабочей таблицы правил iptables;
  • -v: выводит дополнительную отладочную информацию в течении восстановления набора правил;
  • -V: выводит номер версии программы;
  • -w секунды: дождаться монопольной блокировки фильтра пакетов ядра linux xtables. Применяется, чтобы предотвратить одновременное выполнение нескольких экземпляров утилиты. Опция заставляет ждать программу в течении некоторого времени возможности монопольной блокировки xtables;
  • -W миллисекунды: интервал ожидания для каждой попытки запуска пакета в монопольном режиме. Часто многие приложения системы критичны к времени запуска и выполнения, поэтому длительное ожидания для монопольной блокировки xtables часто является неприемлемым. Данный параметр в миллисекундах задает максимальное время такого ожидания. По умолчанию равно 1 секунде. Применяется только совместно с ключом -w;
  • -M modprobe: Указывает путь к программе modprobe. По умолчанию iptables-restore проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe - утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
  • -T таблица: Восстанавливает только таблицу правил с указанным именем, даже если поток данных содержит другие таблицы;
  • имя файла: путь до файла с восстанавливаемыми таблицами правил в файловой системе

sudo iptables-restore -vV /etc/iptables-conf/iptables_rules.ipv4

Или вариант восстановления правил из файла без сброса содержимого текущих таблиц Netfilter:

sudo iptables-restore -nvV /etc/iptables-conf/iptables_rules.ipv4


Автозагрузка правил iptables

1. Загрузка правил с помощью скрипта

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


Сохранить набор правил межсетевого экрана с помощью команды:

sudo iptables-save -f /etc/iptables-conf/iptables_rules.ipv4

Для запуска набора правил при старте операционной системы перед включением сетевого интерфейса мы создаем новый файл с помощью команды:

sudo vi /etc/network/if-pre-up.d/iptables

Заметим - в сети есть много вариантов места размещения скрипта на локальной машине, но я считаю именно размещение в папке if-pre-up.d наиболее верным, так как при этом скрипт будет выполнятся перед включением сетевого интерфейса. Добавляем в данный файл следующий скрипт:


Сохраняем файл iptables Ctrl+O. Выходим из editor Ctrl+X. Устанавливаем необходимые права для созданного файла:

sudo chmod +x /etc/network/if-pre-up.d/iptables

Перезагружаем компьютер и проверяем результат для таблицы filter с помощью команды:

sudo -t filter iptables -L

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

2. Автозагрузка правил iptables-persistent

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

sudo apt-get install iptables-persistent

Этот пакет впервые стал доступен в Debian (Squeeze) и Ubuntu (Lucid). Используемые этим пакетом правила iptables хранятся в следующих директориях:

  • /etc/iptables/rules.v4 для набора правил протокола IPv4;
  • /etc/iptables/rules.v6 для набора правил протокола IPv6.

Но они должны быть сохранены в понятном утилите iptables-persistent виде.




sudo dpkg-reconfigure iptables-persistent

Или можно использовать iptables-save и ip6tables-save:

sudo iptables-save > /etc/iptables/rules.v4

sudo ip6tables-save > /etc/iptables/rules.v6


Утилита netfilter-persistent тоже позволяет управлять автозагрузкой правил. Вот её синтаксис:

sudo netfilter-persistent [ действие ]

Где [действие] может принимать следующие значения:

  • start - вызывает все плагины с параметром start, для загрузки правил в netfilter;
  • stop - если настроена конфигурация сброса настроек Netfilter при остановке плагина, сбрасывает все настройки firewall на значения по умолчанию. Иначе просто выдает предупреждение;
  • flush - плагины вызываются с параметром flush, что приводит к сбросу правил межсетевого экрана на значения по умолчанию;
  • save - вызывает плагины с параметром save, позволяя сохранить значения правил брандмауэра в файлы на диске;
  • reload - не задокументированный параметр, возникали случаи когда параметр start не срабатывал, помогал вызов этого параметра для загрузки правил из файла на диске;

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

sudo netfilter-persistent save

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

sudo netfilter-persistent start

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

Это связано с наличием новой утилиты настройки и редактирования правил Netfilter - nftables, для миграцию на эту утилиту старых правил iptables можно использовать автоматический транслятор правил iptables-translate. Но это уже тема для отдельной статьи.


Выводы

Итак, в этой статье мы рассмотрели где хранятся правила iptables а также как сохранить правила iptables после перезагрузки, разобрались с настройкой скрипта автозагрузки и пакета iptables-persistent.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Некоторые вспомогательные модули уже включены в состав ядра. Если быть более точным, то в состав ядра включены вспомогательные модули для протоколов FTP и IRC. Если в вашем распоряжении нет необходимого вспомогательного модуля, то вам следует обратиться к patch-o-matic, который содержит большое количество вспомогательных модулей для трассировки таких протоколов, как ntalk или H.323. Если и здесь вы не нашли то, что вам нужно, то у вас есть еще варианты: вы можете обратиться к CVS iptables, если искомый вспомогательный модуль еще не был включен в patch-o-matic, либо можете войти в контакт с разработчиками netfilter и узнать у них – имеется ли подобный модуль и планируется ли он к выпуску. Если и тут вы потерпели неудачу, то наверное вам следует прочитать Rusty Russell's Unreliable Netfilter Hacking HOW-TO.

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

modprobe ip_conntrack_*

Обратите внимание на то, что механизм определения состояния не имеет никакого отношения к трансляции сетевых адресов (NAT), поэтому вам может потребоваться большее количество дополнительных модулей, если вы выполняете такую трансляцию. Допустим, что вы выполняете трансляцию адресов и трассировку FTP соединений, тогда вам необходим так же и соответствующий вспомогательный модуль NAT. Имена вспомогательных модулей NAT начинаются с ip_nat_, в соответствии с соглашением об именах. В данном случае модуль называется ip_nat_ftp. Для протокола IRC такой модуль будет называться ip_nat_irc. Тому же самому соглашению следуют и названия вспомогательных модулей трассировщика, например: ip_conntrack_ftp и ip_conntrack_irc.

Глава 5. Сохранение и восстановление больших наборов правил

В состав пакета iptables входят две очень удобные утилиты, особенно если вам приходится иметь дело с большими наборами правил. Называются они iptables-save и iptables-restore. Первая из них сохраняет, а вторая восстанавливает наборы правил в/из файла. По своему формату файл с набором правил похож на обычные файлы сценариев командной оболочки (shell), в чем вы сможете убедиться чуть ниже.

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

Эта проблема легко решается с помощью iptables-save и iptables-restore Утилита iptables-save записывает набор правил в обычный текстовый файл в особом формате. Утилита iptables-restore загружает набор правил из файла. Главное преимущество этих утилит состоит в том, что они производят сохранение/восстановление всего набора правил за одно обращение. iptables-save «в один присест» получает из пространства ядра и записывает в файл весь набор правил, а iptables-restore загружает из файла и переписывает за одно обращение в пространство ядра набор правил для каждой таблицы. Или другими словами – вместо того, чтобы обращаться огромное число раз к ядру для того чтобы получить набор правил, а затем опять записать его в пространство ядра не меньшее число раз, можно просто сохранить набор правил в файл, а затем загружать его из файла, при этом число перемещений наборов в ядро будет зависеть только от числа используемых таблиц.

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


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

  • Способы создания резервных копий правил брандмауэра Windows
  • Способы восстановление правил брандмауэра Windows из резервных копий
  • Сброс правил брандмауэра Windows по умолчанию



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

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

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

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

Создание резервных копий правил брандмауэра Windows.



Все, у нас будет резервная копия правил брандмауэра с расширением .wfw

Восстановление правил брандмауэра Windows из резервных копий.






Таким образом, можно восстановить настройки правил брандмауэра Windows. Аналогично, данные правила, можно импортировать на чистую систему (после переустановки) или на другое устройство.

Сброс правил брандмауэра Windows по умолчанию.







Таким образом, мы восстановили полностью все правила брандмауэра Windows по умолчанию, удалив все внесенные раннее правила в брандмауэр.

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

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

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

С помощью PowerShell

Создать резервную копию конкретного правила брандмауэра в Windows 10 можно с помощью консоли PowerShell .

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

Install-Module -Name Firewall-Manager

Install-Module

При этом вам будет предложено подключить или установить поставщика NuGet, на что следует дать согласие, введя Y и нажав ввод . На установку из ненадежного репозитория тоже даем согласие вводом Y и нажатием Enter .

Если до этого вы еще не разрешили выполнение в PowerShell сценариев, обязательно разрешите, иначе следующие действие завершится ошибкой.

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

Set-ExecutionPolicy Unrestricted

Set-ExecutionPolicy

И подтвердите действие вводом Y.

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

Выполняем одну за другой эти две команды:

Import-Module Firewall-Manager
Export-FirewallRules -Name "Название-правила" -CSVFile "путь-к-резервной-копии-CSV"

PowerShell

По завершении работы, восстановите политику выполнения скриптов командой Set-ExecutionPolicy restricted . Чтобы импортировать сохраненное правило, выполните сначала первую команду, а за ней — Import-FirewallRules "путь-к-резервной-копии-CSV". Если при создании бекапа у вас вдруг возникнут проблемы, воспользуйтесь альтернативным методом.

Экспорт правила брандмауэра через реестр

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

Открыв редактор реестра, перейдите к ключу:

HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy

Кликните правой кнопкой мыши по подразделу FirewallRules и выберите в меню «Экспортировать».

RegEdit

Экспортировать

Затем откройте полученный файл реестра Блокнотом и найдите правило, которое хотите сохранить.

Файл реестра

Ищите по имени, оно будет указано в параметре «Name».

Удалите все строки, кроме содержащей правило и сохраните файл.

REG-файл

Когда потребуется точечно восстановить правило, выполните слияние этого REG -файла.

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