Как перенести правила брандмауэра Iptables на новый сервер

Вступление

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

Предпосылки

Этот учебник требует двух серверов. Мы будем ссылаться на исходный сервер, который имеет существующие правила iptables, как * Сервер A *. Сервер назначения, на который будут перенесены правила, будет называться * Сервер B *.

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

Посмотреть существующие правила Iptables

Прежде чем переносить ваши правила 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 + записывает текущие правила iptables в + stdout + (стандартный выход). Это дает нам простой способ экспортировать правила брандмауэра в файл, перенаправив + stdout + в файл.

На * Server A *, в котором есть правила iptables, которые вы хотите перенести, используйте + iptables-save + для экспорта текущих правил в файл с именем «iptables-export», например так:

cd ~
sudo iptables-save >

Это создаст файл + iptables-export в вашем домашнем каталоге. Этот файл можно использовать на другом сервере для загрузки правил брандмауэра в iptables.

Просмотр содержимого файла (необязательно)

Давайте кратко рассмотрим содержимое файла. Мы будем использовать команду + cat для вывода ее на терминал:

cat iptables-export
iptables-export contents:# Generated by iptables-save v1.4.21 on Tue Sep  1 17:32:29 2015
*filter
:INPUT ACCEPT [135:10578]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8364:1557108]
-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
COMMIT
# Completed on Tue Sep  1 17:32:29 2015

Как видите, файл содержит конфигурацию активных правил iptables. Теперь мы готовы скопировать этот файл на наш целевой сервер * Сервер B *.

Копировать экспортированные правила на целевой сервер

Нам нужно скопировать файл правил на наш целевой сервер * Сервер B *. Самый простой способ сделать это - использовать + scp + или скопировать и вставить содержимое файла в новый файл на * сервере B *. Мы покажем, как использовать + scp + для копирования файла по сети в каталог + / tmp +.

На * сервере A * выполните команду + scp +. Обязательно замените выделенные части логином и IP-адресом вашего сервера:

scp iptables-export @:/tmp

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

Правила импорта Iptables

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

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

На * сервере B *, конечном сервере, выполните эту команду, чтобы загрузить правила брандмауэра:

sudo iptables-restore < /tmp/iptables-export

Это загрузит правила в iptables. Вы можете проверить это командой + sudo iptables -S +.

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

Правила Iptables эфемерны, поэтому необходимо соблюдать особую осторожность, чтобы они сохранялись после перезагрузки - вполне вероятно, что вы захотите выполнить этот шаг на * сервере B *. Мы покажем вам, как сохранить правила как в Ubuntu, так и в CentOS.

Ubuntu

В Ubuntu самый простой способ сохранить правила iptables, чтобы они выдержали перезагрузку, - это использовать пакет iptables-persistent. Установите его с помощью apt-get следующим образом:

sudo apt-get install iptables-persistent

Во время установки вам будет предложено сохранить текущие правила брандмауэра. Ответ + да +, если вы хотите сохранить текущий набор правил.

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

sudo invoke-rc.d iptables-persistent save

CentOS 6 и старше

В CentOS 6 и более ранних версиях CentOS 7 по умолчанию использует FirewallD - вы можете использовать сценарий инициализации iptables для сохранения правил iptables:

sudo service iptables save

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

Заключение

Поздравляем! Ваши правила брандмауэра были перенесены с вашего исходного сервера на новый.