Ubuntuで事前共有鍵とRSA鍵を使用するLibreswanベースのIpsec VPN
このチュートリアルでは、LibreSwanがUbuntuプラットフォームにインストールされます。 LibreSwanはIPsecプロトコルのオープンソース実装で、FreeSwanプロジェクトに基づいており、RedHatベースのLinuxディストリビューションでこのパッケージを使用できるようになっています。 ただし、プロジェクトのソースコードには、他のLinuxプラットフォームでコンパイルするための詳細な手順が記載されています。 インストールプロセスの後、ゲートウェイベースのIPsec VPNへのゲートウェイは、送信者から受信者のピアにデータを保護するように設定されます。
IPsecプロトコルの詳細は、 前の記事。 ただし、LibreSwanに関するIPsecプロトコルの2つの部分について簡単に説明します。
IPsecベースのVPNは、 インターネットキーイング交換 プロトコルと カプセル化セキュリティペイロード (ESP)プロトコル。
- > IKE
名前が示すように、IKEプロトコルの目的は、VPNのピアを事前共有鍵(公開鍵暗号化、自由度)を使用して認証し、鍵を動的に生成し、VPNピアと鍵を共有することです。 IPsecの第2フェーズの暗号化キーもIKEに依存します。 Libreswanはプロジェクトのplutoプログラムを使用してIKEプロトコルを実装します。
- > ESP
ESPプロトコルは、Linuxカーネル(NETEY / XFRM)のIPsecスタックに実装されている同意ポリシーの実際の仕様です。
Libreswanの機能
- 事前共有キーベース認証のサポート
- 公開鍵ベースの認証をサポートしています。
- IKE v1 / v2バージョンのキー交換をサポートします。
- NSS暗号ライブラリがサポートされています。
- XauthとDNSSecもサポートされています。
Ubuntu 16.04の必須パッケージ
LibreSwanのコンパイルに成功するためには、Ubuntuに以下のパッケージをインストールする必要があります。 LibreSwanのインストール時に、プラグイン/機能やコマンドを有効または無効にする方法についての簡単な情報もソースコードに記載されています。
apt-get -yアップデート
apt-get install libunbound-dev libevent-dev libsystemd-dev libnss3-dev libnspr4-dev pkg-config libpam0g-dev libcap-ng-dev libselinux1-dev libcurl4-nss-devフレックスbison gcc make libnss3-tools
必要なパッケージのインストールは以下の通りです。
IPsecツールの最新のソースコードは、wgetコマンドを使用してダウンロードされ、次のtarコマンドを使用して抽出されます。
wget https://download.libreswan.org/libreswan-3.20.tar.gz
tar -xzf libreswan-3.20.tar.gz
cd libreswan-3.20
configureコマンドを実行する必要はありません。 make 次のようにLibreSwanをビルドする2つの方法を示すコマンドです。
最後に、実行 すべてを作る プラットフォーム上にLibreSwanを構築するコマンド。
すべてを作る
今すぐ実行する make installを コマンドを使用してIPsecプログラムをインストールします。
IPsecサービスの開始
上のスクリーンショットに示すように、UbuntuプラットフォームでIPSecサービスを有効にするには、次のコマンドを使用する必要があります。
systemctl enable ipsec.service
IPsecサービスを開始する前に、NSS暗号ライブラリを初期化する必要があります。 これは、IPsec VPNの暗号アルゴリズムの使用にLibreSwanによって使用されます。
IPsec initnss
最後に、次のコマンドを使用してIPSecサービスを開始します。
ipsecセットアップの開始
ラン ipsecのステータス コマンドを使用して、UbuntuプラットフォームでLibreSwanの設定を表示します。
ipsecのステータス
LibreSwanの設定
このチュートリアルでは、事前共有鍵とRSA鍵(公開鍵/秘密鍵ペア)を使用して、ピア間でIPsec VPNを設定します。 両方のピア(左/右)の構成を以下に示します。
事前共有キーベースのVPN
ipsec.conf(左側のVMの設定ファイル)ipsec.secrets(左側のVMの設定ファイル)
バージョン2:PSK "vpn_psk192.168.15.145"
設定のセットアップ
protostack = netkey
conn vpn_psk
ike = aes256-sha256; modp4096
phase2alg = aes256-sha256; modp4096
左= 192.168.15.145
leftsubnet = 172.16.10.0 / 24
右= 192.168.15.245
rightsubnet = 192.169.50.0 / 24
authby = secret
タイプ=トンネル
自動=開始
ipsec.conf(正しいVMの設定ファイル)ipsec.secrets(正しいVMの設定ファイル)
バージョン2:PSK "vpn_psk192.168.15.245"
設定のセットアップ
protostack = netkey
conn vpn_psk
ike = aes256-sha256; modp4096
phase2alg = aes256-sha256; modp4096
左= 192.168.15.245
leftsubnet = 192.169.50.0 / 24
右= 192.168.15.145
rightsubnet = 172.16.10.0 / 24
authby = secret
タイプ=トンネル
自動=開始
上記の設定をipsec.confファイルとipsec.secretsファイルに設定した後、次のコマンドを両側で実行して、IPSecネゴシエーションプロセスを開始します。
ipsec restart
事前共有キーVPNのステータス
の出力 ipsecのステータス および setkey -D コマンドを以下に示します。
ipsecのステータス
setkey -D
RSA(パブリック/プライベート)キーベースのVPN
両方のマシンのRSAキーを生成し、それらを構成ファイルに含める必要があります。 このチュートリアルでは、縮小版のRSAキーを示します。 また、含まれている公開鍵を1行にする必要があります。
RSAキーの生成
以下に示すように、以下のコマンドを使用して、両方のピアのキーを生成します。
ipsec newhostkey --output /etc/ipsec.secrets
生成された公開鍵は、以下のようにipsec.secretsファイルに追加されます。
同様に、RSAキーは、次のスナップショットに示すように、右側のマシンに対して同じコマンドを使用して生成されます。
上に示したように、鍵生成コマンドは自動的にRSA公開鍵を /etc/ipsec.secrets 両方のピアマシンで RSAの秘密鍵は、NSSのデータベースに格納されます。 /etc/ipsec.d/*.db ファイル。
RSAキーを生成した後、次のステップではipsec.confファイル内の両方のマシンの設定を変更します。
ipsec.conf(左側のVMの設定ファイル)
バージョン2
設定のセットアップ
protostack = netkey
conn vpn_rsa
ike = aes256-sha256; modp4096
phase2alg = aes256-sha256; modp4096
左= 192.168.15.145
leftsubnet = 172.16.10.0 / 24
右= 192.168.15.245
rightsubnet = 192.169.50.0 / 24
authby = rsasig
leftrsasigkey = 0sAQPgMUjAb8QOQaJ1FTkIQf3f [........] ALQNXUf $
rightrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
タイプ=トンネル
自動=開始
ipsec.conf(正しいVMの設定ファイル)
バージョン2
設定のセットアップ
protostack = netkey
conn vpn_rsa
ike = aes256-sha256; modp4096
phase2alg = aes256-sha256; modp4096
左= 192.168.15.245
leftsubnet = 192.169.50.0 / 24
右= 192.168.15.145
rightsubnet = 172.16.10.0 / 24
authby = rsasig
rightrsasigkey = 0sAQPgMUjAb8QOQaJ1FTkIQf3f [........] ALQNXUf $
leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
タイプ=トンネル
自動=開始
LibreSwanの設定ファイルを変更したら、次のコマンドを使用して両方のマシンでIPsecサービスを再起動します。
ipsec restart
左のデバイスのIPsec VPNのステータスは、次のスクリーンショットに示されています。 それは、 RSASIG ポリシーでIPsecトンネルのピアを認証するために使用されます。
このチュートリアルの目的は、IPsecプロトコルの実装を提供する「LibreSwan」を探索することです。 RedHatディストリビューションで利用できますが、Ubuntu/Debianなどの別のプラットフォーム用に簡単にコンパイルできます。 この記事では、最初のLibreSwanツールがソースから構築され、次にゲートウェイデバイス間で事前共有キーとRSAキーを使用してXNUMXつのVPNが構成されます。