Вступление
При миграции с одного сервера на другой часто желательно перенести правила брандмауэра 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 при загрузке.
Заключение
Поздравляем! Ваши правила брандмауэра были перенесены с вашего исходного сервера на новый.