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

Обновлено: 21.11.2024

По умолчанию правила iptables сохраняются навсегда. Они сбрасываются при перезагрузке системы Linux. Другими словами, все ваши изменения iptables будут потеряны при перезагрузке системы Linux. В этой статье мы рассмотрим, как сохранить правила Iptables навсегда. Существует несколько способов создания постоянных правил iptables. Мы рассмотрим каждый из них один за другим.

Как сохранить правила Iptables навсегда

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

Вот синтаксис команд iptables-save и iptables-restore

Сохранить правила iptables

Откройте терминал и выполните следующую команду, чтобы сохранить конфигурацию iptables в файл по вашему выбору (например, /etc/iptables.conf)

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

Восстановить iptables

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

Теперь проблема в том, что эту команду нужно запускать каждый раз, когда ваша система перезагружается, потому что изменения iptables сбрасываются при перезагрузке, и все ваши изменения будут потеряны. Поэтому мы добавляем приведенную выше команду в любое из мест, таких как /etc/rc.local, которое используется Ubuntu для запуска сценариев запуска.

Использование rc.local

Мы добавляем приведенную выше команду в /etc/rc.local, которая запускается каждый раз при перезагрузке вашей системы. Если его нет в вашей системе, выполните следующую команду, чтобы создать его.

Добавьте к нему следующие строки. Он содержит конфигурацию по умолчанию, а также команду восстановления iptables (выделена жирным шрифтом)

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

Вот и все. Теперь ваша система Linux будет автоматически запускать приведенный выше скрипт каждый раз при перезагрузке и тем самым загружать конфигурацию iptables.

Использование Crontab

Кроме того, вы можете загрузить iptables как задание cron при перезагрузке. Выполните следующую команду, чтобы открыть файл crontab.

Откроется список cronjobs в текстовом редакторе.

Добавьте к нему следующую строку

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

Использование iptables-persistent (только для Debian/Ubuntu)

Пользователи Debian/Ubuntu также могут установить пакет iptables-persistent, который будет автоматически восстанавливать iptables при перезагрузке. Если вы устанавливаете этот пакет, вам не нужно явно запускать команду iptables-restore. Этот пакет позаботится об этом. Вот команда для установки iptables-persistent.

Обратите внимание, что если в вашей системе запущены команды ufw или firewalld, то iptables-persistent будет конфликтовать с ними, и его следует избегать.

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

Я создаю правила для iptables. Но, когда я перезагружаю компьютер, правила не работают! Как сохранить правила в Ubuntu?

Проблема была решена!

После записи команд iptables выполните:

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

Поскольку вы нашли решение, вы должны принять ответ, который привел вас к этому результату, или вы должны поместить содержание своего ответа в поле «Ответ», а затем принять свой собственный ответ. Это позволяет пометить этот вопрос в системе как «отвеченный», что поможет другим пользователям, если у них возникнет аналогичная проблема. Добрый день!

Сообщение при установке iptables-persistent выглядит следующим образом: Текущие правила iptables можно сохранить в конфигурационный файл /etc/iptables/rules.v4. Затем эти правила будут загружаться автоматически при запуске системы. Правила сохраняются автоматически только во время установки пакета. См. справочную страницу iptables-save(8) для получения инструкций по обновлению файла правил.

2 ответа 2

Проще всего использовать iptables-persistent .

После установки вы можете сохранить/перезагрузить правила iptables в любое время:

Сервер Ubuntu 16.04

Описанная выше установка работает без проблем, но две приведенные выше команды для сохранения и перезагрузки, похоже, не работают с сервером 16.04. С этой версией работают следующие команды:

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

Сообщение при установке iptables-persistent выглядит следующим образом: Текущие правила iptables можно сохранить в конфигурационный файл /etc/iptables/rules.v4. Затем эти правила будут загружаться автоматически при запуске системы. Правила сохраняются автоматически только во время установки пакета. См. справочную страницу iptables-save(8) для получения инструкций по обновлению файла правил.

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

Вывод, созданный iptables-save, можно затем прочитать на стандартном вводе с помощью iptables-restore. Если на сервере без NetworkManager, обычно используется команда pre-up в /etc/network/interfaces.

Если вы используете NetworkManager, должна быть возможность запустить ту же команду из скрипта, созданного в /etc/NetworkManager/dispatcher.d/. В Документации сообщества — руководство по iptables см. Конфигурация при запуске для NetworkManager для получения дополнительной информации.

Обратите внимание, что команды iptables, iptables-save и iptables-restore предназначены только для IPv4. Для трафика IPv6 эквивалентными командами являются ip6tables, ip6tables-save и ip6tables-restore.

Прикладная программа iptables пользовательского пространства позволяет настраивать таблицы, предоставляемые брандмауэром ядра Linux, а также цепочки и правила, которые он хранит. Модуль ядра, используемый в настоящее время для iptables, применяется только к трафику IPv4, для настройки правил брандмауэра для соединений IPv6 вместо этого используйте ip6tables, которые реагируют на те же структуры команд, что и iptables.

Список текущих правил

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

При этом будет распечатан список из трех цепочек: ввод, пересылка и выход, как в примере с пустой таблицей правил ниже.< /p>

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

Добавление правил

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

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

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

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

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

Предупреждение. Если изменить правило по умолчанию на сброс, будет разрешено только специально принятое соединение. Перед изменением правила по умолчанию убедитесь, что вы включили как минимум SSH, как показано выше.

Эти же правила политики можно определить и для других цепочек, введя имя цепочки и выбрав либо DROP, либо ACCEPT.

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

Теперь, если вы перезапустите свой облачный сервер, все эти конфигурации iptables будут стерты. Чтобы этого не произошло, сохраните правила в файл.

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

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

После установки первоначальная настройка попросит сохранить текущие правила для IPv4 и IPv6, просто выберите Да и нажмите Enter для обоих.

Если вы вносите дальнейшие изменения в свои правила iptables, не забудьте сохранить их снова, используя ту же команду, что и выше. iptables-persistent ищет файлы rules.v4 и rules.v6 в папке /etc/iptables.

Это всего лишь несколько простых команд, которые вы можете использовать с iptables, который способен на гораздо большее. Читайте дальше, чтобы узнать о некоторых других параметрах, доступных для более расширенного управления правилами iptable.

Расширенная настройка правила

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

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

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

Также можно сбросить все правила определенной цепочки или даже всех iptables, используя параметр -F. Это полезно, если вы подозреваете, что iptables мешает вашему сетевому трафику, или вы просто хотите снова начать настройку с чистой таблицы.

Предупреждение. Прежде чем очищать любую цепочку, убедитесь, что для правила по умолчанию задано значение ПРИНЯТЬ.

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

Если iptable очищен, ваш сервер может быть уязвим для атак. Убедитесь, что ваша система защищена альтернативным методом, даже временно отключив iptables.

Главный редактор и технический писатель в UpCloud с 2015 года. Энтузиаст облачных вычислений, пишущий о серверных технологиях и программном обеспечении.

В этом посте мы узнаем, как сохранить iptables на постоянной основе в Ubuntu. Когда мы работаем с операционной системой на базе Red Hat, такой как RHEL и CentOS. Мы можем навсегда установить правило iptables в файле /etc/sysconfig/iptables.
Когда вы работаете в операционной системе Ubuntu, вы можете обнаружить, что можете только временно установить правило iptables. После использования команды iptables и перезагрузки системы правила iptables будут очищены.
Чтобы сделать правила iptables постоянными в системе Ubuntu. Мы будем использовать пакет под названием iptables-persistent.

Навсегда сохранить iptables в Ubuntu

Следуйте приведенным ниже шагам, чтобы установить iptables на постоянной основе в системе Ubuntu.

Шаг 1. Установите пакет iptables-persistent

На экране вы получите варианты для набора правил IPV4 и IPV6, которые необходимо установить. Экран появится во время установки iptables-persistent

Приведенный ниже экран предназначен для выбора IPv4

Нижеприведенный экран предназначен для выбора IPv6 (если вы не хотите устанавливать для IPv6, выберите нет)

Шаг 2. Установка займет несколько секунд/минут. После завершения установки iptables-persistent запустите службу.

ПРИМЕЧАНИЕ. Таким же образом вы можете перезапустить/остановить/перезагрузить службу

Для остановки службы iptables-persistent

Для перезапуска службы iptables-persistent

Для перезагрузки службы iptables-persistent

Шаг 3. Служба iptables-persistent должна быть запущена. Теперь вы можете установить правило iptables и сохранить его в применимой версии IP (например, IPv4/IPv6)

Например. Мы хотим установить iptables (IPv4) для порта №. 27017 и 28017 (например, mongodb)

Это важная часть. После установки правила мы сохраним IPTABLES в файле /etc/iptables/rules.v4. Запустите приведенную ниже команду

В качестве альтернативы вместо использования команды iptables-save можно также отредактировать файл /etc/iptables/rules.v4 .

Будьте внимательны, правила должны быть написаны над строкой слова COMMIT. См. приведенный ниже пример

Если у вас есть iptables с IPv6, выполните те же действия. Вместо использования команды iptables-save > /etc/iptables/rules.v4. Вы должны использовать приведенную ниже команду

Как и в случае с IPv4, в качестве альтернативы вы также можете отредактировать файл /etc/iptables/rules.v6

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

Приведенная ниже команда перезапустит систему
sudo init 6

Примечание. Это руководство посвящено IPTABLE. Следовательно, мы не обсуждаем команду ufw

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