Ubuntu20.04にStrongSwanVPNをインストールして構成する

仮想プライベートネットワークは、パブリックインターネット接続からプライベートネットワークを作成してIDを保護するために使用されます。 VPNは暗号化されたトンネルを使用して、データを安全に送受信します。

strongSwanは、Linux、OS X、FreeBSD、Windows、Android、iOSなどのさまざまなオペレーティングシステムをサポートする最も有名なVPNソフトウェアの1つです。 安全な接続確立のためにIKEv1およびIKEv2プロトコルを使用します。 組み込みのプラグインを使用してその機能を拡張できます。

このチュートリアルでは、Ubuntu20.04でStrongSwanを使用してKEv2VPNサーバーをセットアップする方法を段階的に説明します。

前提条件

•Ubuntu20.04サーバーを実行している2つのシステム
•ルートパスワードは両方のサーバーで構成されています

StrongSwanをインストールする

デフォルトでは、StrongSwanはUbuntu20.04のデフォルトリポジトリで利用できます。 次のコマンドを使用して、他の必要なコンポーネントと一緒にインストールできます。

apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y

すべてのパッケージをインストールしたら、CA証明書の生成に進むことができます。

VPNサーバーの証明書を生成する

次に、VPNサーバーの証明書とキーを生成して、クライアント側でサーバーの信頼性を検証する必要があります。

まず、次のコマンドを使用してルートCAの秘密鍵を作成します。

ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem

次に、ルートCAを作成し、上記のキーを使用して署名します。

ipsec pki --self --in /etc/ipsec.d/private/ca.key.pem --type rsa --dn "CN=My VPN Server CA" --ca --lifetime 3650 --outform pem > /etc/ipsec.d/cacerts/ca.cert.pem

次に、次のコマンドを使用してVPNサーバーの秘密鍵を作成します。

ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem

最後に、次のコマンドを使用してサーバー証明書を生成します。

ipsec pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa | ipsec pki --issue --lifetime 2750 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem --dn "CN=vpn.domain.com" --san="vpn.domain.com" --flag serverAuth --flag ikeIntermediate --outform pem > /etc/ipsec.d/certs/server.cert.pem

この時点で、すべての証明書がVPNサーバーで使用できるようになります。

StrongSwanVPNを構成する

strongswanのデフォルトの設定ファイルは/etc/ipsec.confです。 メインの構成ファイルをバックアップして、新しいファイルを作成できます。

mv /etc/ipsec.conf /etc/ipsec.conf-bak

次に、新しい構成ファイルを作成します。

nano /etc/ipsec.conf

次のconfigおよびconn設定を追加します。

config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
strictcrlpolicy=no
uniqueids=yes
cachecrls=no

conn ipsec-ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
[email protected]
leftcert=server.cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8
rightsendcert=never
eap_identity=%identity

Save と close /etc/ipsec.confファイル。

次に、認証用のEAPユーザー資格情報とRSA秘密鍵を定義する必要があります。

ファイル/etc/ipsec.secretsを編集して設定できます。

nano /etc/ipsec.secrets

次の行を追加します。

: RSA "server.key.pem"
vpnsecure : EAP "password"

次に、次のようにStrongSwanサービスを再起動します。

systemctl restart strongswan-starter

システムブートでStrongSwanを起動できるようにするには、次のように入力します。

systemctl enable strongswan-starter

VPNサーバーのステータスを確認し、次のように入力します。

systemctl status strongswan-starter

カーネルパケット転送を有効にする

次に、/ etc / sysctl.confファイルを編集して、パケット転送を有効にするようにカーネルを構成する必要があります。

nano /etc/sysctl.conf

次の行のコメントを解除します。

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Save と close 次に、ファイルは次のコマンドを使用して新しい設定を再ロードします。

sysctl -p

StrongSwanクライアントをインストールして構成する

このセクションでは、StrongSwanクライアントをリモートマシンにインストールし、VPNサーバーに接続します。

まず、次のコマンドを使用して、必要なすべてのパッケージをインストールします。

apt-get install strongswan libcharon-extra-plugins -y

すべてのパッケージがインストールされたら、次のコマンドでStrongSwanサービスを停止します。

systemctl stop strongswan-starter

次に、ca.cert.pemファイルをVPNサーバーから/etc/ipsec.d/cacerts/ディレクトリにコピーする必要があります。 以下に示すように、SCPコマンドを使用してコピーできます。

scp [email protected]:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/

VPNクライアント認証を設定するには、/ etc /ipsec.secretsファイルを使用します。

nano /etc/ipsec.secrets

次の行を追加します。

vpnsecure : EAP "password"

次に、strongSwanのメイン構成ファイルを編集します。

nano /etc/ipsec.conf

/etc/ipsec.secretsファイルで指定したドメイン、パスワードに一致する次の行を追加します。

conn ipsec-ikev2-vpn-client
auto=start
right=vpn.domain.com
rightid=vpn.domain.com
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=vpnsecure
leftauth=eap-mschapv2
eap_identity=%identity

次に、次のコマンドを使用してStrongSwanVPNサービスを開始します。

systemctl start strongswan-starter

次に、次のコマンドを使用してVPN接続ステータスを確認します。

ipsec status

次の出力が得られるはずです。

Security Associations (1 up, 0 connecting):
ipsec-ikev2-vpn-client[1]: ESTABLISHED 28 seconds ago, 104.245.32.158[vpnsecure]...104.245.33.84[vpn.domain.com]
ipsec-ikev2-vpn-client{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ca6f451c_i ca9f9ff7_o
ipsec-ikev2-vpn-client{1}: 10.10.10.1/32 === 0.0.0.0/0

上記の出力は、クライアントとサーバーの間にVPN接続が確立され、IPアドレス10.10.10.1がクライアントマシンに割り当てられていることを示しています。

次のコマンドを使用して、新しいIPアドレスを確認することもできます。

ip a

次の出力が得られるはずです。

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:68:f5:20:9e brd ff:ff:ff:ff:ff:ff
inet 104.245.32.158/25 brd 104.245.32.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.10.1/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:68ff:fef5:209e/64 scope link
valid_lft forever preferred_lft forever

結論

上記のガイドでは、Ubuntu20.04でStrongSwanVPNサーバーとクライアントをセットアップする方法を学びました。 これで、IDを保護し、オンラインアクティビティを保護できます。