Iptablesファイアウォールルールを新しいサーバーに移行する方法
序章
あるサーバーから別のサーバーに移行する場合、プロセスの一部としてiptablesファイアウォールルールを移行することが望ましい場合がよくあります。 このチュートリアルでは、アクティブなiptablesルールセットをあるサーバーから別のサーバーに簡単にコピーする方法を説明します。
前提条件
このチュートリアルには2台のサーバーが必要です。 既存のiptablesルールを持つソースサーバーをServerAと呼びます。 ルールが移行される移行先サーバーは、サーバー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ルールのエクスポート
The iptables-save
コマンドは現在のiptablesルールをに書き込みます stdout
(標準出力)。 これにより、リダイレクトすることでファイアウォールルールをファイルにエクスポートする簡単な方法が得られます stdout
ファイルに。
移行するiptablesルールが設定されているサーバーAで、 iptables-save
現在のルールを次のように「iptables-export」という名前のファイルにエクスポートするには:
- cd ~
- sudo iptables-save > iptables-export
これにより、 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 user@server_b_ip_address:/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
インストール中に、現在のファイアウォールルールを保存するかどうかを尋ねられます。 応答 yes
、現在のルールセットを保存する場合。
将来ファイアウォールルールを更新し、変更を保存する場合は、次のコマンドを実行します。
- sudo invoke-rc.d iptables-persistent save
CentOS6以前
CentOS 6以前(CentOS 7はデフォルトでFirewallDを使用)では、iptablesinitスクリプトを使用してiptablesルールを保存できます。
- sudo service iptables save
これにより、現在のiptablesルールが /etc/sysconfig/iptables
ファイル。起動時にiptablesによってロードされます。
結論
おめでとう! ファイアウォールルールが元のサーバーから新しいサーバーに移行されました。