ウェブサイト検索

Ubuntu で事前共有キーと RSA キーを使用する Libreswan ベースの Ipsec VPN


このページでは

  1. Libreswan の機能
  2. IPsec サービスの開始
  3. LibreSwan の設定
    1. 事前共有キー 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_psk

    ike=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=start

    ipsec.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_psk

    ike=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=start

    ipsec.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_rsa

    ike=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=start

    ipsec.conf (configuration file of right VM)              

    バージョン 2

    config setup protostack=netkey
    conn vpn_rsa

    ike=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=start

    LibreSwan 構成ファイルを変更したら、次のステップは、次のコマンドを使用して両方のマシンで IPsec サービスを再起動することです。

    ipsec restart

    左のデバイスの IPsec VPN のステータスは、次のスクリーンショットに示されています。 IPsec トンネルのピアを認証するためにポリシーで RSASIG が使用されていることを示しています。

    このチュートリアルの目的は、IPsec プロトコルの実装を提供する \LibreSwan\ を探索することです。 RedHat ディストリビューションで利用できますが、Ubuntu/Debian などの別のプラットフォーム用に簡単にコンパイルできます。この記事では、最初の LibreSwan ツールをソースから構築し、次にゲートウェイ デバイス間の事前共有および RSA キーを使用して 2 つの VPN を構成します。