この手順では、次の設定がすでになされているものとします。
各システムには、2 つのアドレス (IPv4 アドレスと IPv6 アドレス) がある
各システムは、128 ビットのキーを必要とする MD5 アルゴリズムを使って AH 保護を呼び出す
各システムは、192 ビットのキーを必要とする 3DES アルゴリズムを使って ESP 保護を呼び出す
IPsec は、共有セキュリティアソシエーションを使用する
共有セキュリティアソシエーションでは、2 つのシステムを保護するのに 1 組だけの SA を必要とします。
システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システム全体のセキュリティがリモートログインセッションレベルに低下します。
システムごとに、他のシステムのアドレスとホスト名を /etc/inet/ipnodes ファイルに追加します。次のように、1 つのシステムのエントリは連続してそのファイルに入力します。
partym という名前のシステムでは、ipnodes ファイルに次のように入力します。
# Secure communication with enigma 192.168.116.16 enigma fec0::10:20ff:fea0:21f6 enigma |
enigma という名前のシステムでは、ipnodes ファイルに次のように入力します。
# Secure communication with partym 192.168.13.213 partym fec0::9:a00:20ff:fe7b:b373 partym |
システムの名前は、一例として使用しているだけです。実際にシステム間のトラフィックを保護する場合には、各自のシステムの名前を使用してください。
これで、起動スクリプトでは、存在しないネーミングサービスに依存することなくシステム名を使用できます。
システムごとに、/etc/inet/ipsecinit.conf ファイルを作成します。
/etc/inet/ipsecinit.sample ファイルを /etc/inet/ipsecinit.conf にコピーすることができます。
ipsecinit.conf ファイルに IPsec ポリシーエントリを追加します。
システムごとに、2 つのシステム間の IPsec セキュリティアソシエーションの組を追加します。
システムごとに、読み取り専用の /etc/inet/secret/ipseckeys ファイルを編集します。読み取り専用ファイルのアクセス権は 400 です。ipseckeys ファイル で、ESP 保護と AH 保護のセキュリティアソシエーションの組は、次の形をとります。
add protocol spi random-hex-string dst local-system \ encr_alg protocol-algorithm \ encrkey random-hex-string-of-algorithm-specified-length add protocol spi random-hex-string dst local-system \ auth_alg protocol-algorithm \ authkey random-hex-string-of-algorithm-specified-length add protocol spi random-hex-string dst remote-system \ encr_alg protocol-algorithm \ encrkey random-hex-string-of-algorithm-specified-length add protocol spi random-hex-string dst remote-system \ auth_alg protocol-algorithm \ authkey random-hex-string-of-algorithm-specified-length |
protocol |
esp または ah。ah プロトコルでは、auth_alg と authkey 引数を使用する。esp プロトコルでは、encr_alg と encrkey 引数も使用する。esp では、さらに、ah で使用する auth_alg と authkey 引数も使用する |
random-hex-string |
16 進数形式の最大 8 桁の乱数。SPI が受け取れる以上の桁数を入力すると、超過部分は無視される。SPI が受け取れるより少ない桁数を入力すると、パディングが行われる |
local-system |
ローカルシステム名 |
remote-system |
リモートシステム名 |
protocol-algorithm |
ESP または AH のアルゴリズム。それぞれのアルゴリズムには、特定の長さのキーが必要 認証アルゴリズムには MD5 と SHA がある。暗号化アルゴリズムには 3DES と AES がある |
random-hex-string-of-algorithm-specified-length |
アルゴリズムによって必要とされる長さをもつ 16 進数の乱数。たとえば、MD5 アルゴリズムでは、128 ビットキーのため 32 桁の乱数が必要。3DES アルゴリズムでは、192 ビットキーのため 48 桁の乱数が必要 |
乱数を生成します。
アウトバウンドトラフィックとインバウンドトラフィックにはそれぞれ、3 種類の乱数が必要です。したがって、システムごとに次の乱数が必要になります。
spi キーワードの値として、2 つの 16 進数の乱数。1 つの乱数はアウトバウンドトラフィック用、もう 1 つの乱数はインバウンドトラフィック用。それぞれの乱数の最大桁数は 8 桁
AH の MD5 アルゴリズム用として、2 つの 16 進数の乱数。各乱数は 32 桁でなければならない。1 つの乱数は dst enigma 用、もう 1 つの乱数は dst partym 用
ESP の 3DES アルゴリズム用として、2 つの 16 進数の乱数。192 ビットキーの場合、各乱数は48 桁でなければならない。1 つの乱数は dst enigma 用、もう 1 つの乱数は dst partym 用
乱数発生関数がすでにある場合は、それを使用してください。ない場合は、od コマンドを使用できます。この手順については、乱数を生成する方法を参照してください。
たとえば、enigma では、ipseckeys ファイルの内容は次のようになります。
# for inbound packets add esp spi c83f5a4b dst enigma encr_alg 3DES \ encrkey b6a8f89213a796bde03c601029861eae91c65783368165a6 # add ah spi 2f526ae6 dst enigma auth_alg MD5 authkey 305ec56369ca62c2ae804690c5713e18 # for outbound packets add esp spi 0cecc4b2 dst partym encr_alg 3DES \ encrkey 802e89f9f9b929ea2b615641b71ac7034a540d3cbeeaf6a9 # add ah spi a75bbe5f dst partym auth_alg MD5 \ authkey 2ae8b94967e6b9b0dd16e6d4b7ea7278 |
partym の ipseckeys には、同一のキーを使用します。コメントが異なっていますが、これは、dst enigma が enigma ではインバウンド、partym ではアウトバウンドであるためです。
# for outbound packets add esp spi c83f5a4b dst enigma encr_alg 3DES \ encrkey b6a8f89213a796bde03c601029861eae91c65783368165a6 # add ah spi 2f526ae6 dst enigma auth_alg MD5 authkey 305ec56369ca62c2ae804690c5713e18 # for inbound packets add esp spi 0cecc4b2 dst partym encr_alg 3DES \ encrkey 802e89f9f9b929ea2b615641b71ac7034a540d3cbeeaf6a9 # add ah spi a75bbe5f dst partym auth_alg MD5 \ authkey 2ae8b94967e6b9b0dd16e6d4b7ea7278 |
これらのキーと SPI は、セキュリティアソシエーションごとに変更できます。セキュリティアソシエーションごとに、異なるキーと異なる SPI を割り当てるべきです。
リブートします。
# /usr/sbin/reboot |
パケットが保護されているかどうかを確認するには、パケットが保護されていることを確認する方法を参照してください。
次の例では、IPv6 アドレスを持つシステム間の保護トラフィックをテストする方法について説明します。実際の稼動環境では、ipsecconf コマンドを実行するよりもリブートする方が安全です。
2 つのシステム間のトラフィックを保護する方法の手順 5 までを実行します。
リブートする代わりに、ipseckey コマンドを使ってセキュリティアソシエーションをデータベースに追加します。
# ipseckey -f /etc/inet/secret/ipseckeys |
次のように、ipsecconf コマンドを使用して IPsec ポリシーを有効にします。
# ipsecconf -a /etc/inet/ipsecinit.conf |
このコマンドの実行時には警告を読んでください。ソケットがすでに使用中 (ラッチされた) の場合には、システムのセキュリティが低下します。
次の例では、IPv4 アドレスを持つシステム間のトラフィックを保護する方法について説明します。この例では、自動キー管理 (IKE) を使用してセキュリティアソシエーションを作成します。IKE は、管理者が介在する必要が少なく、大量のトラフィックを容易に保護するようにスケーリングします。
前の手順の手順 2 の/etc/inet/ipnodes ファイルを /etc/hosts ファイルに置き換えます。
partym システムで、enigma を /etc/hosts ファイルに追加します。
# echo "192.168.116.16 enigma">> /etc/hosts |
enigma システムで、partym を /etc/hosts ファイルに追加します。
# echo "192.168.13.213 partym">> /etc/hosts |
ipsecinit.conf ファイルを編集して IPsec ポリシーエントリを追加します (手順 4 を参照)。
キーは、次のどちらかの方法で作成できます。
IKE を設定してキーを自動的に生成する。IKE はキーを自動的に更新します。IKE を設定するには、表 4–1 の設定手順のどれかに従ってください。IKE 設定ファイルの構文については、ike.config(4) のマニュアルページを参照してください。
キーの生成や保守を手動で行う必要が特にない場合は、IKE を設定すべきです。
IKE デーモン in.iked を起動しない場合は、キーを手動で作成できます。これについては、2 つのシステム間のトラフィックを保護する方法の手順 5 を参照してください。
リブートします。
リブートせずにトラフィックを保護する場合は、ipseckey コマンドと ipsecconf コマンドを使用します。
# ipseckey -f /etc/inet/secret/ipseckeys # ipsecconf -a /etc/inet/ipsecinit.conf |
このコマンドの実行時には警告を読んでください。ソケットがすでに使用中 (ラッチされた) の場合には、システムのセキュリティが低下します。
パケットが保護されているかどうかを確認するには、パケットが保護されていることを確認する方法を参照してください。