序章

あるサーバーから別のサーバーに移行する場合、プロセスの一部としてiptablesファイアウォールルールを移行することが望ましい場合がよくあります。 このチュートリアルでは、アクティブなiptablesルールセットをあるサーバーから別のサーバーに簡単にコピーする方法を説明します。

前提条件

このチュートリアルには2台のサーバーが必要です。 既存のiptablesルールを持つソースサーバーをServerAと呼びます。 ルールが移行される移行先サーバーは、サーバーBと呼ばれます。

また、スーパーユーザーが必要です。 sudo、両方のサーバーへのアクセス。

既存のIptablesルールを表示する

iptablesルールを移行する前に、それらが何に設定されているかを見てみましょう。 サーバーAで次のコマンドを使用してこれを行うことができます。

  1. 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ルールのエクスポート

The iptables-save コマンドは現在のiptablesルールをに書き込みます stdout (標準出力)。 これにより、リダイレクトすることでファイアウォールルールをファイルにエクスポートする簡単な方法が得られます stdout ファイルに。

移行するiptablesルールが設定されているサーバーAで、 iptables-save 現在のルールを次のように「iptables-export」という名前のファイルにエクスポートするには:

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

これにより、 iptables-export ファイル、ホームディレクトリにあります。 このファイルを別のサーバーで使用して、ファイアウォールルールをiptablesにロードできます。

ファイルの内容を表示(オプション)

ファイルの内容を簡単に見てみましょう。 を使用します cat ターミナルに出力するコマンド:

  1. 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アドレスに置き換えてください。

  1. scp iptables-export user@server_b_ip_address:/tmp

適切な認証を提供した後、ファイルはにコピーされます /tmp サーバーBのディレクトリ。 の内容に注意してください /tmp 再起動すると削除されます。保存したい場合は、別の場所に自由に配置してください。

Iptablesルールのインポート

宛先サーバーにエクスポートされたルールを使用して、それらをiptablesにロードできます。 ただし、状況によっては、ファイル内のルールを新しいIPアドレスと範囲で更新し、場合によってはインターフェイス名を更新することもできます。 ルールをロードする前にルールを変更する場合は、必ず編集してください。 /tmp/iptables-export 今すぐファイルします。

からルールをロードする準備ができたら iptables-export ファイルをiptablesに入れて、 iptables-restore そうするためのコマンド。

宛先サーバーであるサーバーBで、次のコマンドを実行してファイアウォールルールをロードします。

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

これにより、ルールがiptablesにロードされます。 これは、 sudo iptables -S 指図。

ルールを保存

Iptablesルールは一時的なものであるため、再起動後も存続するように特別な注意を払う必要があります。この手順は、サーバーBで実行することをお勧めします。 UbuntuとCentOSの両方でルールを保存する方法を紹介します。

Ubuntu

Ubuntuでは、iptablesルールを保存して再起動後も存続させるための最も簡単な方法は、iptables-persistentパッケージを使用することです。 apt-getで次のようにインストールします。

  1. sudo apt-get install iptables-persistent

インストール中に、現在のファイアウォールルールを保存するかどうかを尋ねられます。 応答 yes、現在のルールセットを保存する場合。

将来ファイアウォールルールを更新し、変更を保存する場合は、次のコマンドを実行します。

  1. sudo invoke-rc.d iptables-persistent save

CentOS6以前

CentOS 6以前(CentOS 7はデフォルトでFirewallDを使用)では、iptablesinitスクリプトを使用してiptablesルールを保存できます。

  1. sudo service iptables save

これにより、現在のiptablesルールが /etc/sysconfig/iptables ファイル。起動時にiptablesによってロードされます。

結論

おめでとう! ファイアウォールルールが元のサーバーから新しいサーバーに移行されました。