7.4. raw RSA 鍵認証を使用した IPsec サイト間 VPN の手動設定
サイト間 VPN は、2 つの異なるネットワーク間にセキュアな暗号化トンネルを確立し、インターネットなどのセキュアでないパブリックネットワークを介してそれらをシームレスにリンクします。
たとえば、サイト間 VPN を使用すると、支社のデバイスがすべて同じローカルネットワークの一部であるかのように、企業本社のリソースにアクセスできるようになります。
ゲートウェイデバイスの認証に関しては、RSA 鍵は事前共有鍵 (PSK) よりもセキュアです。非対称暗号化によって秘密情報共有のリスクが排除されるためです。また、RSA 鍵を使用すると、強力なピアツーピア認証を提供しつつも、認証局 (CA) が不要になるため、デプロイが容易になります。
両方のゲートウェイデバイスで次の手順を実行してください。
前提条件
- 両方のネットワークのルートにより、リモートネットワークへのトラフィックがローカル VPN ゲートウェイデバイスを介して送信されるようになっている。
手順
Libreswan がまだインストールされていない場合は、次の手順を実行します。
libreswanパッケージをインストールします。# dnf install libreswanネットワークセキュリティーサービス (NSS) データベースを初期化します。
# ipsec initnssこのコマンドにより、
/var/lib/ipsec/nss/ディレクトリーにデータベースが作成されます。ipsecサービスを有効にして起動します。# systemctl enable --now ipsecファイアウォールで IPsec ポートとプロトコルを開きます。
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
RSA 鍵ペアを作成します。
# ipsec newhostkeyipsecユーティリティーにより、鍵ペアが NSS データベースに保存されます。- ピアを指定します。IPsec トンネルでは、一方のホストを left に、もう一方のホストを right に指定する必要があります。これは任意に選択できます。一般的には、ローカルホストを left、リモートホストを right と呼びます。
left と right 両方のピアの Certificate Key Attribute ID (CKAID) を表示します。
# ipsec showhostkey --list < 1> RSA keyid: <key_id> ckaid: <ckaid>以降のステップで、両方のピアの CKAID が必要になります。
公開鍵を表示します。
left ピアで次のように入力します。
# ipsec showhostkey --left --ckaid <ckaid_of_left_peer> # rsakey AwEAAdKCx leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...right ピアで次のように入力します。
# ipsec showhostkey --right --ckaid <ckaid_of_right_peer> # rsakey AwEAAcNWC rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...
これらのコマンドにより、設定ファイルで使用する必要がある対応するパラメーターとともに、公開鍵が表示されます。
/etc/ipsec.d/ディレクトリーに接続用の.confファイルを作成します。たとえば、次の設定で/etc/ipsec.d/site-to-site.confファイルを作成します。conn <connection_name> # General setup and authentication type auto=start authby=rsasig # Site A left=<ip_address_or_fqdn_of_left_peer> leftid=@site_a leftrsasigkey=<public_key_of_left_peer> leftsubnet=192.0.2.0/24 # Site B right=<ip_address_or_fqdn_of_right_peer> rightid=@site_b rightrsasigkey=<public_key_of_right_peer> rightsubnet={198.51.100.0/24, 203.0.113.0/24}注記両方のゲートウェイデバイスで同じ設定ファイルを使用できます。Libreswan は内部情報を使用して、自身が left ホストで動作しているか、right ホストで動作しているかを識別します。ただし、
left*パラメーターのすべての値が一方のピアに属し、right*パラメーターの値がもう一方のピアに属することが重要です。この例で指定されている設定は次のとおりです。
conn <connection_name>- 接続名を定義します。名前は任意であり、Libreswan はこれを使用して接続を識別します。この接続のパラメーターは、少なくとも 1 つのスペースまたはタブでインデントする必要があります。
auto=<type>-
接続の開始方法を制御します。値を
startに設定すると、Libreswan はサービスの起動時に自動的に接続をアクティブ化します。 authby=rsasig- この接続に対して RSA 署名認証を有効にします。
left=<ip_address_or_fqdn_of_left_peer>およびright=<ip_address_or_fqdn_of_right_peer>- ピアの IP アドレスまたは DNS 名を定義します。
leftid=<id>およびrightid=<id>-
Internet Key Exchange (IKE) ネゴシエーションプロセス中に各ピアを識別する方法を定義します。これには、完全修飾ドメイン名 (FQDN)、IP アドレス、またはリテラル文字列を使用できます。後者の場合、文字列の前に
@記号を付けます。 leftrsasigkey=<public_key>およびrightrsasigkey=<public_key>-
ピアの公開鍵を指定します。前のステップで
ipsec showhostkeyコマンドによって表示された値を使用します。 leftsubnet=<subnet>およびrightsubnet=<subnet>- トンネルを介して接続されるサブネットを Classless Inter-Domain Routing (CIDR) 形式で定義します。片側で複数のサブネットをトンネリングする場合は、それらを中括弧で囲み、コンマで区切って指定します。
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.confipsecサービスを再起動します。# systemctl restart ipsec設定ファイルで
auto=startを使用すると、接続が自動的にアクティブになります。他の方法の場合、接続をアクティブ化するために追加の手順が必要です。詳細は、システム上のipsec.conf(5)man ページを参照してください。
検証
IPsec ステータスを表示します。
# ipsec status接続が正常に確立されていれば、出力に次の行が含まれています。
Internet Key Exchange バージョン 2 (IKEv2) ネゴシエーションのフェーズ 1 が正常に完了しています。
000 #2: "<connection_name>":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); REKEY in 27935s; REPLACE in 28610s; newest; idle;これで、セキュリティーアソシエーション (SA) が、実際のデータ暗号化トンネル (子 SA またはフェーズ 2 SA と呼ばれる) をネゴシエートする準備が整いました。
子 SA が確立されています。
000 #3: "<connection_name>":500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); REKEY in 27671s; REPLACE in 28610s; IKE SA #2; idle;これは、データトラフィックが通過する実際のトンネルです。
- ローカルサブネット内のクライアントから、リモートサブネット内のクライアントに ping を実行します。
次のステップ
- DHCP またはステートレスアドレス自動設定 (SLAAC) が設定されたネットワークでこのホストを使用すると、接続がリダイレクトされる危険性があります。詳細と軽減手順については、接続がトンネルをバイパスしないようにするために VPN 接続を専用ルーティングテーブルに割り当てる を参照してください。