6.4. IPsec ホスト間 (Host-to-Host) 設定

IPsecは、ホスト間接続の方法であるデスクトップまたはワークステーションから 別のデスクトップまたはワークステーションに接続するよう設定することができます。 このタイプの接続は、各ホストが接続されるネットワークが両ホストをつなげるセキュアな トンネルを作成するために使用します。ホスト間接続に必要なことはほとんどなく、 各ホストでのIPsec設定も同様に行なうことはあまりありません。 ホストにはキャリアネットワークヘの専用接続(インターネットなど)と、 IPsec接続を作成するためのRed Hat Enterprise Linuxがあれば十分です。

接続を作成するには、まず、各ワークステーションからシステムとネットワークの情報を収集します。 ホスト間接続には、次のような情報が必要です。

例えば、ワークステーションAとワークステーションBをIPSecトンネルを使って お互いに接続したいとします。ワークステーションは 値foobarbazを持つpre-shared keyを使い接続し、 ユーザーはracoonで各ホスト間の認証キーを 自動生成、共有することに同意しています。両方のホストユーザーは コネクション名をipsec0にしました。

以下にワークステーション B とのホスト間 IPsec 接続の為のワークステーション A 用のifcfgファイルを示します。この例の接続を識別する個有名は ipsec0ですので、ファイル名は/etc/sysconfig/ network-scripts/ifcfg-ipsec0になります:

DST=X.X.X.X
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK

ワークステーションAではX.X.X.XにワークステーションBの IPアドレスを入れますが、ワークステーションBではX.X.X.X にワークステーションAのIPアドレスを入れます。起動時に接続が開始するよう 設定され(ONBOOT=yes)、pre-sahred key認証方法を 使います(IKE_METHOD=PSK)。

以下に、/etc/sysconfig/network-scripts/keys-ipsec0と呼ばれる、事前共有鍵ファイルの内容を示します。両方のワークステーションがお互いを認証するのに使います。このファイルの内容は両方のワークステーションで同じでなければならず、また、rootユーザーのみがこのファイルの読み取り/書き込みを出来る状態であるべきものです。

IKE_PSK=foobarbaz

重要重要
 

rootユーザーだけがファイルを読み取り、編集できるよう、 keys-ipsec0ファイルを変更するには、 ファイルを作成したら次のコマンドを実行します。

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0

認証キーを変更するためには、両方のワークステーション上でkeys -ipsec0ファイルを編集します。正常な接続には、両方の キーが同じでなければなりません

以下の例は、リモートホストへの段階1接続のための特殊設定です。ファイル名はX.X.X.X.confになります(X.X.X.Xには、リモート IPsec ルータの IP アドレスを 入れます)。このファイルは、IPsec トンネルが起動されると自動的に生成されるため、直接編集しないように注意してください。

;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

IPsec 接続が開始された時のデフォルトの第1段階設定ファイルには、Red Hat Enterprise Linux の IPsec 実装で使用する以下の文章が含まれています:

remote X.X.X.X

この設定ファイルの結果となるスタンザが、X.X.X.XIP アドレスで識別されたリモートノードにのみ適用されることをしめします。

exchange_mode aggressive

Red Hat Enterprise Linux 上の IPsec 用のデフォルト設定は攻撃的な認証モードを使用し、これが 複数のホストとの幾つかの IPsec 接続設定を許可しながら、接続オーバーヘッド を低減します。

my_identifier address

ノードの認証時に使用する識別手法を定義します。Red Hat Enterprise Linux はノードの 識別に IP アドレスを使用します。

encryption_algorithm 3des

認証中に使用する暗号法を定義します。デフォルトでは、3DES(Triple Data Encryption Standard)を 使用します。

hash_algorithm sha1;

ノード間の第1段階交渉の間に使用するハッシュアルゴリズムを指定します。 デフォルトでは、Secure Hash Algorithm のバージョン1が使用されます。

authentication_method pre_shared_key

ノード交渉中に使用する認証法を定義します。Red Hat Enterprise Linux はデフォルトでは、 認証に事前共有キーを使用します。

dh_group 2

動的生成のセッションキーを確立する為の Diffie-Hellman グループ番号を 指定します。デフォルトでは、1024 ビットグループが使用されます。

/etc/racoon/racoon.confファイルは、include "/etc/racoon/X.X.X.X.conf" ステートメントを除いて、全てのIPsec ノード上で同一でなければなりません。このステートメントは (及び、参照するファイル)は、IPsec トンネルが起動すると生成されます。ワーク ステーション A では、includeステートメントの X.X.X.Xをワークステーション B の IP アドレスにします。ワークステ ーション B はその逆です。以下に、IPsec 接続が起動したときの一般的な racoon.confファイルを示します。

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

このデフォルトのracoon.confファイルには、IPsec 設定用の 定義されたパス、事前共有鍵、及び証書が含まれています。sainfo anonymousのフィールドは IPsec ノード間の第2段階 SA を説明 しています。— IPsec 接続の性格(使用されるサポート付暗号化アルゴリズムを 含む)交換鍵の方法。次ぎのリストは第2段階のフィールドを定義しています:

sainfo anonymous

IPsec 信用証書が合致する限り、どのピアとでも無記名で SA が開始することを 示します。

pfs_group 2

Diffie-Hellman 鍵交換プロトコルを定義し、これは、IPsec ノードが IPsec 接続の 第2段階の為に相互に臨時のセッション鍵を確立する方法を決定します。デフォルト では、Red Hat Enterprise Linux のIPsec 実装は Diffie-Hellman 暗号化鍵交換グループのグループ2 (いわゆるmodp1024)を使用します。グループ2は、 1024 ビットモジュラーべき乗を使い、これはプライベート鍵が侵略されても、以前の IPsec 送信に対する攻撃者からの解読を防止します。

lifetime time 1 hour

このパラメータは、SA のライフサイクルを指定し、時間、又はデータのバイト数で、 数量化できます。Red Hat Enterprise Linux の IPsec 実装は1時間の寿命を指定します。

encryption_algorithm 3des, blowfish 448, rijndael

第2段階用にサポートされた暗号法を指定します。Red Hat Enterprise Linux は 3DES、448-ビット Blowfish、 及び Rijndael(AES、いわゆるAdvanced Encryption Standardで使用される暗号表記) をサポートしています。

authentication_algorithm hmac_sha1, hmac_md5

サポートされる認証用のハッシュアルゴリズムをリストします。サポートのモード は、sha1 と md5 のハッシュメッセージ認証コードです(HMAC)。

compression_algorithm deflate

IPCOMP(IP Payload Compression)サポート用の収縮コンプレッションアルゴ リズムを定義して、これにより低速な接続上で IP データグラムのかなり高速な 転送ができます。

接続を開始するには、ワークステーションを再起動するか次のコマンドを rootとして各ホストで実行します。

/sbin/ifup ipsec0

IPsec接続をテストするには、tcpdumpユーティリティを実行して ホスト(またはネットワーク)間で転送されているネットワークパケットを表示し、 IPsecで暗号化されていることを確認します。パケットにはAHヘッダが含まれ、 ESPパケットとして表示されていなければなりません。ESPであれば暗号化されている ということです。例えば、

17:13:20.617872 pinky.example.com > ijin.example.com: \
	    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)