Libreswanを使用してIPsecVPNを構成する方法

IPsecベースのVPNの目的は、OSIモデルのネットワーク層でトラフィックを暗号化して、攻撃者がクライアントとVPNサーバーの間を盗聴できないようにすることです。 Windows、Linux、MacOSでIPsecプロトコル機能も提供するstrongswanに関する記事で。 ただし、LibreSwanツールとOpenSwanツールも同じ目的で使用できます。 このチュートリアルでは、Unix / Linux環境用のIPsecプロトコルの別の実装であるLibreSwanに焦点を当てています。 LibreSwanはOpenSwanIPsecプロジェクトから分岐しており、RedHatベースのLinuxディストリビューションで利用できます。

このチュートリアルでは、LibreSwanはUbuntu 16.04LTSのソースからコンパイルされます。 さまざまなLinuxディストリビューション用のLibreSwanのコンパイル手順は、ReadMeファイルに記載されています。次のスナップショットは、LibreSwanのインストールに必要なパッケージ、機能の有効化/無効化、およびコマンドを示しています。

LibreSwanのインストール後、VPNは、トラフィックを暗号化するためにゲートウェイ間モードで構成されます。 違う LibreSwanの例 構成はプロジェクトのWebサイトに記載されています。

Libreswanをインストールする方法

また、Linuxディストリビューションでパケット転送が有効になっていることも前提としています。 Ubuntu 16.04 LTSでLibreSwanをコンパイルするには、次のパッケージが必要です。

apt-get -y update
apt-get -y install libnss3-dev libnspr4-dev pkg-config libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make

LibreSwanの最新のソースコードは、 プロジェクトのウェブサイト。 圧縮ファイルは、次のコマンドを使用して抽出されます。

tar -xzf libreswan-3.19.tar.gz

次に、「make」コマンドを実行して、LibreSwanコンパイルの命令を取得します。

したがって、「makeall」コマンドを実行してUbuntuVMでLibreSwanをビルドします。 このコマンドは、バインドされていないヘッダーファイルが見つからないという次のエラーを生成します。

fatal error: unbound.h: No suh file or directory

したがって、LibreSwanにはさらにいくつかのパッケージが必要です。 次のコマンドは、アンバウンド用の開発ライブラリをインストールします。

apt-get install libunbound-dev

LibreSwanのコンパイル中に、イベントライブラリがないために別のエラーが発生します。

fatal error: event.h: No suh file or directory

次のコマンドを実行して、libeventパッケージをインストールします。

apt-get install libevent-dev

インストールスクリプトは、Ubuntuプラットフォームでsystemdパッケージが欠落しているために別のエラーを示しています。

fatal error: systemd/sd-daemon.h: No suh file or directory

必要なパッケージのインストールを以下に示します。

apt-get install libsystemd-dev

最後に、もう一度「makeall」または「makeinstall」を実行して、LibreSwanをコンパイルしてインストールします。

make all

上記のコマンドは、LibreSwanをシステムにインストールします。 ただし、「ipsecstart」コマンドの使用中に以下のエラーが発生しました。

/usr/local/sbin/ipsec: certutil: Not found

次のコマンドでも、以下に示すのと同じエラーが発生しました。

ipsec setup start
ipsec initnss

*(必要なキーを生成するにはNSSライブラリに必要です)

/usr/local/sbin/ipsec: certutil: Not found
apt-get install libnss3-tools

次のコマンドは、LibreSwanツールに必要なNSS暗号化ライブラリを初期化します。

ipsec initnss

最後に、以下に示すように、ipsecサービスを正常に開始します。

ipsec setup start

LibreSwanのインストールが成功したら、次のステップは両方のVMでVPN設定を構成することです。 これで example、PSKベースのトンネルは、ゲートウェイ間のトラフィックを保護するために設定されます。

サイドA-ipsec.conf構成ファイル

root@test-VirtualBox:/home/test# cat /etc/ipsec.conf
config setup
protostack=netkey
conn vpn

left=192.168.15.50
leftsubnet=10.12.50.0/24
right=192.168.15.5
rightsubnet=10.12.5.0/24
authby=secret
pfs=yes
rekey=yes
keyingtries=3
type=tunnel
auto=start
ike=aes256-sha1;modp2048
phase2alg=aes256-sha1;modp2048

ipsec.secrets

192.168.15.50 192.168.15.5: PSK "12345678asdfghjk1qwe3wqA“

サイドB-ipsec.conf構成ファイル

root@test-VirtualBox:/home/test# cat /etc/ipsec.conf
config setup
protostack=netkey
conn vpn

left=192.168.15.50
leftsubnet=10.12.50.0/24
right=192.168.15.5
rightsubnet=10.12.5.0/24
authby=secret
pfs=yes
rekey=yes
keyingtries=3
type=tunnel
auto=start
ike=aes256-sha1;modp2048
phase2alg=aes256-sha1;modp2048

ipsec.secrets

192.168.15.5 192.168.15.50: PSK "12345678asdfghjk1qwe3wqA“

上記の設定を行った後、両側で次のコマンドを実行すると、ipsecネゴシエーションプロセスが開始されます。

ipsec restart

サイドA:

サイドB:

ipsec vpnのステータスも、次のコマンドを使用してチェックされます。

setkey -D

上記のスナップショットは、VM間に確立された4つのSA(セキュリティアソシエーション)を示しており、トンネルの状態は「成熟」しています。

結論

このチュートリアルでは、別のオープンソースのIPsec実装「LibreSwan」が正常にコンパイルされ、UbuntuVMにインストールされています。 また、2つのVM間のPSKに基づいてゲートウェイ間VPNを確立するように構成されています。 LibreSwanの構成がStrongSwanとは異なることも観察されます。