Ubuntu で事前共有キーと RSA キーを使用する Libreswan ベースの Ipsec VPN
このページでは
- Libreswan の機能
- IPsec サービスの開始
- LibreSwan の設定
- 事前共有キー VPN のステータス
このチュートリアルでは、LibreSwan を Ubuntu プラットフォームにインストールします。 LibreSwan は、IPsec プロトコルのオープン ソース実装であり、FreeSwan プロジェクトに基づいており、RedHat ベースの Linux ディストリビューションですぐに使用できるパッケージとして提供されています。ただし、プロジェクトのソース コードには、他の Linux プラットフォームでコンパイルするための詳細な手順が記載されています。インストール プロセスの後、ゲートウェイ ツー ゲートウェイ ベースの IPsec VPN が構成され、送信側ピアから受信側ピアへのデータが保護されます。
IPsec プロトコルの詳細については、以前の記事をご覧ください。ただし、LibreSwan に関する IPsec プロトコルの 2 つの部分に関する簡単な情報を以下に説明します。
IPsec ベースの VPN は、Internet Keying Exchange プロトコルと Encapsulating Security Payload (ESP) プロトコルで構成されています。
--> イケ
名前が示すように、IKE プロトコルの目的は、VPN のピアを認証し(事前共有キー、公開キー暗号化、freeradius を使用)、動的にキーを生成し、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 update
apt-get install libunbound-dev libevent-dev libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex 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 つの方法が表示されます。
最後に、make all コマンドを実行して、プラットフォーム上に LibreSwan をビルドします。
make all
make install コマンドを実行して、IPsec プログラムをインストールします。
IPsec サービスの開始
上のスクリーンショットに示すように、次のコマンドを使用して、Ubuntu プラットフォームで IPSec サービスを有効にする必要があります。
systemctl enable ipsec.service
IPsec サービスを開始する前に、NSS 暗号ライブラリを初期化する必要があります。これは、IPsec VPN で暗号化アルゴリズムを使用するために LibreSwan によって使用されます。
IPsec initnss
最後に、次のコマンドを使用して IPSec サービスを開始します。
ipsec setup start
ipsec status コマンドを実行して、Ubuntu プラットフォームで LibreSwan の設定を表示します。
ipsec status
LibreSwan の設定
このチュートリアルでは、事前共有キーと RSA キー (公開/秘密キーのペア) を使用してピア間に IPsec VPN をセットアップします。両方のピア (左/右) の構成を以下に示します。
事前共有鍵ベースの VPN
ipsec.conf (configuration file of left VM) ipsec.secrets (configuration file of left VM)
バージョン 2 192.168.15.145 192.168.15.245: PSK \vpn\psk>123
config setup
protostack=netkey
conn vpn_pskike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
<.15.15. leftsubnet=172.16.10.0/24
right=192.168.15.245
rightsubnet=192.169.50.0/24
> authby=secret
type=tunnel
auto=startipsec.conf (configuration file of right VM) ipsec.secrets (configuration file of right VM)
バージョン 2 192.168.15.245 192.168.15.145: PSK \vpn_psk123\
config setup
protostack=netkey
conn vpn_pskike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
< leftsubnet=192.169.50.0/24
right=192.168.15.145
rightsubnet=172.16.10.0/24
authby=secret
type=tunnel
auto=startipsec.conf ファイルと ipsec.secrets ファイルで上記の構成を設定した後、両側で次のコマンドを実行して、IPSec ネゴシエーション プロセスを開始します。
ipsec restart
事前共有キー VPN のステータス
ipsec status および setkey -D コマンドの出力を以下に示します。
ipsec status
setkey -D
RSA (公開/秘密) キー ベースの VPN
両方のマシンの RSA キーを生成し、構成ファイルに含める必要があります。このチュートリアルでは、RSA キーの縮小版を示します。また、含まれている公開鍵が 1 行である必要があります。
RSA キーの生成
以下に示すように、次のコマンドを使用して両方のピアのキーを生成します。
ipsec newhostkey --output /etc/ipsec.secrets
生成された公開鍵は、以下に示すように ipsec.secrets ファイルに追加されます。
同様に、RSA キーは、次のスナップショットに示すように、右側のマシンに対して同じコマンドを使用して生成されます。
上記のように、キー生成コマンドは、両方のピア マシンの /etc/ipsec.secrets に RSA 公開キーを自動的に含めます。 RSA の秘密鍵は、/etc/ipsec.d/*.db ファイルの下の NSS のデータベースに保存されます。
RSA キーを生成した後、次のステップでは、ipsec.conf ファイル内の両方のマシンの構成を変更します。
ipsec.conf (configuration file of left VM)
バージョン 2
config setup protostack=netkey
conn vpn_rsaike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
<.15.15. leftsubnet=172.16.10.0/24
right=192.168.15.245
rightsubnet=192.169.50.0/24
> authby=rsasig
leftrsasigkey=0saqpgmujab8qoqaj1ftkiqf3f [........] alqnxuf $
rightrsasigkey=0saqos7aph6lppuggc454+w [........] fsd2zqe
type=tunnel
auto=startipsec.conf (configuration file of right VM)
バージョン 2
config setup protostack=netkey
conn vpn_rsaike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
< leftsubnet=192.169.50.0/24
right=192.168.15.145
rightsubnet=172.16.10.0/24
authby=rsasig
rightrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[.......]ALQNXUf$
leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[.....] ...]fSd2zQE
type=tunnel
auto=startLibreSwan 構成ファイルを変更したら、次のステップは、次のコマンドを使用して両方のマシンで IPsec サービスを再起動することです。
ipsec restart
左のデバイスの IPsec VPN のステータスは、次のスクリーンショットに示されています。 IPsec トンネルのピアを認証するためにポリシーで RSASIG が使用されていることを示しています。
このチュートリアルの目的は、IPsec プロトコルの実装を提供する \LibreSwan\ を探索することです。 RedHat ディストリビューションで利用できますが、Ubuntu/Debian などの別のプラットフォーム用に簡単にコンパイルできます。この記事では、最初の LibreSwan ツールをソースから構築し、次にゲートウェイ デバイス間の事前共有および RSA キーを使用して 2 つの VPN を構成します。