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

При смене сервера часто возникает необходимость перенести правила 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.

cd ~
sudo iptables-save > iptables-export

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

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

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

cat iptables-export
# 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, и теперь можно скопировать этот файл на целевой сервер.

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

Проще всего для этого использовать 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, который загрузится после перезапуска системы.

Перенос правил брандмауэра успешно завершён!

Tags: , , ,

Добавить комментарий