48.7.6.2. 手動 IPsec Host-to-Host 設定
接続作成の最初の手順は、各ワークステーションからシステムおよびネットワーク情報を収集することです。ホスト間の接続には、以下が必要です。
- 各ホストの IP アドレス
- 一意の名前(例:
ipsec1
)。これは、IPsec 接続を特定し、他のデバイスまたは接続と区別するために使用されます。 - 固定暗号化キーまたは racoon によって自動的に生成される暗号鍵。
- 接続の初期段階で使用され、セッション中に暗号鍵を交換するために使用される事前共有認証キー。
たとえば、Workstation A および Workstation B が IPsec トンネルを介して相互に接続するとします。ユーザーは
Key_Value01
の値で共有前のキーを使用して接続し、ユーザーは各ホスト間で認証キーを自動的に生成して共有することに同意します。両方のホストユーザーは、接続 ipsec1
に名前を付けます。
注記
大文字、小文字、数字、および句読点の組み合わせを使用する PSK を選択する必要があります。簡単に保証できる PSK はセキュリティーリスクを設定します。
各ホストに同じ接続名を使用する必要はありません。インストールに便利で意味のある名前を選択する必要があります。
以下は、Workstation B を使用したホスト間の IPsec 接続の Workstation A の IPsec 設定ファイルです。この例では接続を識別する一意の名前は ipsec1 であるため、作成されるファイルは
/etc/sysconfig/network-scripts/ifcfg-ipsec1
と呼ばれます。
DST=X.X.X.X TYPE=IPSEC ONBOOT=no IKE_METHOD=PSK
Workstation A の場合、X.X.X.X.X は Workstation B の IP アドレスで、X. X.X.X.X は Workstation A の IP アドレスです。この接続は起動時に開始するように設定されず(
ONBOOT=no
)、事前共有鍵メソッド(IKE_METHOD=PSK
)を使用します。
以下は、両方のワークステーションが相互に認証するために必要な、事前共有キーファイル(
/etc/sysconfig/network-scripts/keys-ipsec1
と呼ばれる)の内容です。このファイルのコンテンツは両方のワークステーションで同一で、root ユーザーのみがこのファイルの読み取りや書き込みが可能でなければなりません。
IKE_PSK=Key_Value01
重要な影響
root ユーザーのみがファイルの読み取りまたは編集ができるように
keys-ipsec1
ファイルを変更するには、ファイルの作成後に以下のコマンドを使用します。
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
いつでも認証キーを変更するには、両方のワークステーションの
keys-ipsec1
ファイルを編集します。適切な接続の場合には、両方の認証キーが同一でなければなりません。
以下の例は、リモートホストへのフェーズ 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 設定ファイルには、IPsec の Red Hat Enterprise Linux 実装で使用される以下のステートメントが含まれています。
- remote X.X.X.X
- この設定ファイルの後続のスタンザは、X.X.X.X IP アドレスで識別されるリモートノードにのみ適用されることを指定します。
- exchange_mode aggressive
- Red Hat Enterprise Linux における IPsec のデフォルト設定は、アグレッシブ認証モードを使用します。これにより、複数のホストとの複数の IPsec 接続の設定を許可し、接続のオーバーヘッドが低減します。
- my_identifier アドレス
- ノードの認証時に使用する識別方法を指定します。Red Hat Enterprise Linux は IP アドレスを使用してノードを識別します。
- encryption_algorithm 3des
- 認証中に使用される暗号化暗号を指定します。デフォルトでは、Triple Data Encryption Standard (3DES)が使用されます。
- hash_algorithm sha1;
- ノード間のフェーズ 1 ネゴシエーション中に使用されるハッシュアルゴリズムを指定します。デフォルトでは、Secure Hash Algorithm バージョン 1 が使用されます。
- authentication_method pre_shared_key
- ノードのネゴシエーション中に使用される認証方法を指定します。デフォルトでは、Red Hat Enterprise Linux は認証に事前共有キーを使用します。
- dh_group 2
- 動的に生成されるセッションキーを確立するための Diffie-Hellman グループ番号を指定します。デフォルトでは、modp1024 (グループ 2)が使用されます。
48.7.6.2.1. Racoon 設定ファイル
/etc/racoon/racoon.conf
ファイルは、/ etc/racoon/X.X.X.X.conf ステートメントを 除き、すべての IPsec ノードで同一でなければ なりません。このステートメント(および参照するファイル)は、IPsec トンネルがアクティブになると生成されます。Workstation A の場合、include ステートメントの X.X.X.X は Workstation 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 接続の性質(使用される暗号化アルゴリズムを含む)と鍵交換方法である IPsec ノード間のフェーズ 2 SA を記述します。以下のリストは、フェーズ 2 のフィールドを定義します。
- sainfo anonymous
- IPsec 認証情報が一致する場合、SA が任意のピアで匿名で初期化できることを示します。
- pfs_group 2
- Diffie-Hellman 鍵交換プロトコルを定義します。これは、IPsec ノードが IPsec 接続の 2 番目のフェーズで相互一時セッションキーを確立する方法を決定します。デフォルトでは、IPsec の Red Hat Enterprise Linux 実装は、Diffie-Hellman 暗号化鍵交換グループのグループ 2 (または
modp1024
)を使用します。Group 2 は 1024 ビットのモジュール指数を使用し、秘密鍵が侵害された場合でも攻撃者が以前の IPsec 送信を復号化できないようにします。 - ライフタイム 1 時間
- このパラメーターは SA の有効期間を指定し、データの時間またはバイト単位で定量化できます。IPsec のデフォルトの Red Hat Enterprise Linux 実装は、1 時間の長さを指定します。
- encryption_algorithm 3des、blowfish 448、rijndael
- フェーズ 2 でサポートされる暗号を指定します。Red Hat Enterprise Linux は、3DES、448 ビット Blowfish、および Rijndael ( Advanced Encryption Standard または AESで使用される暗号)をサポートします。
- authentication_algorithm hmac_sha1、hmac_md5
- は、認証でサポートされるハッシュアルゴリズムを一覧表示します。サポートされるモードは sha1 および md5 ハッシュされたメッセージ認証コード(HMAC)です。
- compression_algorithm deflate
- IP Payload Compression (IPCOMP)サポート用の Deflate 圧縮アルゴリズムを定義します。これにより、低速な接続で IP データグラムの送信を高速化できます。
接続を開始するには、各ホストで以下のコマンドを使用します。
ifup <nickname>
<nickname> は、IPsec 接続に指定した名前に置き換えます。
IPsec 接続をテストするには、tcpdump ユーティリティーを実行し、ホスト間で転送されているネットワークパケットを表示し、IPsec で暗号化されていることを確認します。パケットには AH ヘッダーが含まれる必要があり、ESP パケットとして表示されるはずです。ESP は暗号化されることを意味します。以下に例を示します。
~]# tcpdump -n -i eth0 host <targetSystem>
IP 172.16.45.107 > 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)