6.5. 証明書ベースの認証を使用した IPsec ホスト/サイト間 VPN の手動設定
ホスト/サイト間 VPN は、個々のリモートコンピューターとプライベートネットワークの間にセキュアで暗号化された接続を確立し、インターネットなどのセキュアでないパブリックネットワークを介してそれらをシームレスにリンクできるようにします。これは、物理的にオフィスにいるかのように、自分のコンピューターから会社の内部ネットワーク上のリソースにアクセスする必要があるリモート従業員に最適です。
認証のために、認証局 (CA) によって管理されるデジタル証明書を使用すると、非常にセキュアでスケーラブルなソリューションが実現します。接続元ホストとゲートウェイが、それぞれ信頼できる CA によって署名された証明書を提示します。この方法により、強力で検証可能な認証が実現し、ユーザー管理が簡素化されます。アクセス権の付与または失効は、CA で一元的に行うことができます。Libreswan は、各証明書を証明書失効リスト (CRL) と照合し、証明書がリストに掲載されていればアクセスを拒否することで、付与や失効を強制します。
6.5.1. IPsec ゲートウェイの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
セキュアなリモートアクセスを可能にするには、Libreswan IPsec ゲートウェイを適切に設定する必要があります。Libreswan は、ネットワークセキュリティーサービス (NSS) データベースからサーバー証明書、秘密鍵、および CA 証明書を読み取ります。
次の例では、認証されたクライアントが内部 192.0.2.0/24 サブネットにアクセスすることを許可し、仮想 IP プールから各クライアントに IP アドレスを動的に割り当てます。セキュリティーを維持するために、ゲートウェイはクライアント証明書が同じ信頼できる CA によって発行されていることを確認し、失効した証明書へのアクセスが拒否されるように、証明書失効リスト (CRL) を自動的に使用します。
前提条件
ゲートウェイに、次の内容を含む公開鍵暗号化標準 #12 (PKCS #12) ファイル
~/file.p12
が存在する。- サーバーの秘密鍵
- サーバー証明書
- CA 証明書
- 中間証明書 (必要な場合)
秘密鍵および証明書署名要求 (CSR) の作成や、CA からの証明書要求に関する詳細は、CA のドキュメントを参照してください。
サーバー証明書には次のフィールドを含めます。
-
Extended Key Usage (EKU) を
TLS Web Server Authentication
に設定します。 - コモンネーム (CN) またはサブジェクト代替名 (SAN) を、ゲートウェイの完全修飾ドメイン名 (FQDN) に設定します。
- X509v3 CRL 配布ポイントに、証明書失効リスト (CRL) への URL を含めます。
-
Extended Key Usage (EKU) を
- VPN クライアントトラフィックの戻りのルートが、VPN ゲートウェイを指すように内部ネットワーク上に設定されている。
手順
Libreswan がまだインストールされていない場合は、以下を実行します。
libreswan
パッケージをインストールします。dnf install libreswan
# dnf install libreswan
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークセキュリティーサービス (NSS) データベースを初期化します。
ipsec initnss
# ipsec initnss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、
/var/lib/ipsec/nss/
ディレクトリーにデータベースが作成されます。ipsec
サービスを有効にして起動します。systemctl enable --now ipsec
# systemctl enable --now ipsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイアウォールで IPsec ポートとプロトコルを開きます。
firewall-cmd --permanent --add-service="ipsec" firewall-cmd --reload
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PKCS #12 ファイルを NSS データベースにインポートします。
ipsec import ~/file.p12
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーと CA 証明書のニックネームを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この情報は設定ファイルに必要です。
/etc/ipsec.d/
ディレクトリーに接続用の.conf
ファイルを作成します。たとえば、次の設定で/etc/ipsec.d/host-to-site.conf
ファイルを作成します。CRL チェックを有効にするために、
config setup
セクションを追加します。config setup crl-strict=yes crlcheckinterval=1h
config setup crl-strict=yes crlcheckinterval=1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例で指定されている設定は次のとおりです。
crl-strict=yes
- CRL チェックを有効にします。NSS データベース内で CRL が利用できない場合、認証中のクライアントが拒否されます。
crlcheckinterval=1h
- 指定期間後に、サーバーの証明書に指定された URL から CRL を再取得します。
ゲートウェイのセクションを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例で指定されている設定は次のとおりです。
ikev2=insist
- 最新の IKEv2 プロトコルを、IKEv1 へのフォールバックなしで、唯一許可されるプロトコルとして定義します。
left=%defaultroute
-
ipsec
サービスの起動時に、デフォルトルートインターフェイスの IP アドレスを動的に設定します。left
パラメーターは、ホストの IP アドレスまたは FQDN に設定することもできます。 leftid=%fromcert
およびrightid=%fromcert
- 証明書の識別名 (DN) フィールドからアイデンティティーを取得するように Libreswan を設定します。
leftcert="<server_certificate_nickname>"
- NSS データベースで使用されるサーバーの証明書のニックネームを設定します。
leftrsasigkey=%cert
およびrightrsasigkey=%cert
- 証明書に埋め込まれた RSA 公開鍵を使用するように Libreswan を設定します。
leftsendcert=always
- クライアントが CA 証明書に照らして証明書を検証できるように、ゲートウェイに証明書を常に送信するように指示します。
leftsubnet=<subnets>
- クライアントがトンネル経由でアクセスできるゲートウェイに接続されているサブネットを指定します。
mobike=yes
- クライアントがネットワーク間をシームレスにローミングできるようにします。
rightaddresspool=<ip_range>
- ゲートウェイがクライアントに IP アドレスを割り当てることができる範囲を指定します。
modecfgclient=yes
-
クライアントが
modecfgdns
パラメーターで設定された DNS サーバー IP とmodecfgdomains
で設定された DNS 検索ドメインを受信できるようにします。
例で使用されているすべてのパラメーターの詳細は、システム上の
ipsec.conf(5)
man ページを参照してください。パケット転送を有効にします。
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipsec
サービスを再起動します。systemctl restart ipsec
# systemctl restart ipsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルで
auto=start
を使用すると、接続が自動的にアクティブになります。他の方法の場合、接続をアクティブ化するために追加の手順が必要です。詳細は、システム上のipsec.conf(5)
man ページを参照してください。
検証
- クライアントを設定し、VPN ゲートウェイに接続します。
サービスが CRL をロードし、エントリーを NSS データベースに追加したかどうかを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ:
- クライアントが必要なリソースとのみ通信できるようにファイアウォールルールを設定します。ファイアウォールの詳細は、ファイアウォールおよびパケットフィルターの設定 を参照してください。
6.5.2. GNOME Settings を使用してクライアントを IPsec VPN ゲートウェイに接続するように設定する リンクのコピーリンクがクリップボードにコピーされました!
リモートのプライベートネットワーク上のリソースにアクセスするには、ユーザーはまず IPsec VPN 接続を設定する必要があります。GNOME Settings アプリケーションは、NetworkManager で IPsec VPN 接続プロファイルを作成し、トンネルを確立するためのグラフィカルなソリューションです。
前提条件
- IPsec VPN ゲートウェイが設定されている。
-
NetworkManager-libreswan-gnome
パッケージがインストールされている。 クライアントに、次の内容を含む PKCS #12 ファイル
~/file.p12
が存在する。- ユーザーの秘密鍵
- ユーザー証明書
- CA 証明書
- 中間証明書 (必要な場合)
秘密鍵および証明書署名要求 (CSR) の作成や、CA からの証明書要求に関する詳細は、CA のドキュメントを参照してください。
-
証明書の Extended Key Usage (EKU) が
TLS Web Client Authentication
に設定されている。
手順
ネットワークセキュリティーサービス (NSS) データベースを初期化します。
ipsec initnss
# ipsec initnss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、
/var/lib/ipsec/nss/
ディレクトリーにデータベースが作成されます。PKCS #12 ファイルを NSS データベースにインポートします。
ipsec import ~/file.p12
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーのニックネームと CA 証明書を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この情報は設定ファイルに必要です。
- Super キーを押して Settings と入力し、Enter キーを押して GNOME Settings アプリケーションを開きます。
- VPN エントリーの横にある ボタンをクリックします。
- リストから IPsec based VPN を選択します。
Identity タブで、次のようにフィールドに入力します。
Expand 表6.1 Identity タブの設定 フィールド名 値 ipsec.conf
の対応するパラメーターName
<networkmanager_profile_name>
該当なし
Gateway
<ip_address_or_fqdn_of_the_gateway>
right
Type
IKEv2 (certificate)
authby
Group name
%fromcert
leftid
Certificate name
<user_certificate_nickname>
leftcert
Remote ID
%fromcert
rightid
- Advanced をクリックします。
Advanced properties ウィンドウで、Connectivity タブのフィールドに次のように入力します。
Expand 表6.2 Connectivity タブの設定 フィールド名 値 ipsec.conf
の対応するパラメーターRemote Network
192.0.2.0/24
rightsubnet
Narrowing
選択済み
narrowing
Enable MOBIKE
yes
mobike
Delay
30
dpddelay
Timeout
120
dpdtimeout
Action
Clear
dpdaction
- をクリックして接続設定に戻ります。
- をクリックして接続を保存します。
- Settings アプリケーションの Network タブで、VPN プロファイルの横にあるスイッチを切り替えて接続を有効にします。
検証
- リモートネットワーク内のホストへの接続を確立するか、ping を実行します。
次のステップ
- DHCP またはステートレスアドレス自動設定 (SLAAC) が設定されたネットワークでこのホストを使用すると、接続がリダイレクトされる危険性があります。詳細と軽減策は、接続がトンネルを回避しないように VPN 接続を専用ルーティングテーブルに割り当てる を参照してください。