如何将 Iptables 防火墙规则迁移到新服务器上

介绍

当从一个服务器迁移到另一个服务器时,将iptables防火墙规则作为过程的一部分往往是可取的,本教程将向您展示如何轻松地从一个服务器复制您的活跃iptables规则。

前提条件

此教程需要两个服务器. 我们将指现有 iptables 规则的源服务器为 Server A. 将规则迁移到的目标服务器将被称为 Server B

您还需要有超级用户或sudo访问两个服务器。

查看现有规则

在迁移 iptables 规则之前,让我们看看它们设置为什么。

1sudo iptables -S
1[secondary_label Example output:]
2-P INPUT ACCEPT
3-P FORWARD ACCEPT
4-P OUTPUT ACCEPT
5-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
6-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
7-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
8-A INPUT -s 15.15.15.51/32 -j DROP

上面的示例规则将用于展示防火墙迁移过程。

出口适用规则

iptables-save命令将当前的 iptables 规则写入stdout(标准)。

在具有您要迁移的 iptables 规则的 Server A 上,使用iptables-save将当前规则导出到名为iptables-export的文件中,如下:

1cd ~
2sudo iptables-save > iptables-export

这将创建iptables-export文件,在您的主目录. 此文件可以在不同的服务器上使用,将防火墙规则加载到iptables中。

查看文件内容(可选)

我们将使用命令将其打印到终端:

1cat iptables-export
 1[secondary_label iptables-export contents:]
 2# Generated by iptables-save v1.4.21 on Tue Sep 1 17:32:29 2015
 3*filter
 4:INPUT ACCEPT [135:10578]
 5:FORWARD ACCEPT [0:0]
 6:OUTPUT ACCEPT [8364:1557108]
 7-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 8-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
 9-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
10-A INPUT -s 15.15.15.51/32 -j DROP
11COMMIT
12# Completed on Tue Sep 1 17:32:29 2015

正如您所看到的,该文件包含活跃的 iptables 规则的配置,现在我们已经准备好将此文件复制到我们的目标服务器, Server B

将导出规则复制到目的地服务器

我们需要将规则文件复制到我们的目标服务器 Server B. 最简单的方法是使用scp或将文件内容复制并粘贴到新的文件中 Server B. 我们将展示如何使用scp将文件复制到网络上的/tmp目录。

Server A上,运行这个scp命令. 请确保用您的服务器的登录和IP地址替换所突出的部分:

1scp iptables-export user@server_b_ip_address:/tmp

在提供适当的身份验证后,该文件将被复制到服务器B上的/tmp目录。

进口规则

通过在目标服务器上导出规则,您可以将它们加载到 iptables 中。然而,根据您的情况,您可能希望用新的 IP 地址和范围来更新文件中的规则,并可能更新界面名称。

一旦您已经准备好将规则从iptables-export文件加载到iptables中,让我们使用iptables-restore命令来做到这一点。

Server B,目标服务器上,运行此命令来加载防火墙规则:

1sudo iptables-restore < /tmp/iptables-export

这将将规则加载到iptables中,您可以使用sudo iptables -S命令来验证。

保存规则

Iptables 规则是短暂的,所以必须特别小心,以便在重新启动后仍然存在 - 很可能你会想在 Server B上执行此步骤。

Ubuntu 的

在Ubuntu上,保存iptables规则的最简单方法是使用iptables持久包,以便它们能够幸存于重新启动:

1sudo apt-get install iptables-persistent

在安装过程中,您将被问到是否要保存当前的防火墙规则。

如果您将来更新防火墙规则,并且想要保存更改,请运行此命令:

1sudo invoke-rc.d iptables-persistent save

CentOS 6 和更高版本

在 CentOS 6 和更早版本中,CentOS 7 默认使用 FirewallD,您可以使用 iptables init 脚本来保存 iptables 规则:

1sudo service iptables save

这将将当前的 iptables 规则保存到 /etc/sysconfig/iptables 文件中,该文件在启动时被 iptables 加载。

结论

恭喜您!您的防火墙规则已从原始服务器迁移到新服务器。

Published At
Categories with 技术
Tagged with
comments powered by Disqus