仮想プライベートネットワークは、パブリックインターネット接続からプライベートネットワークを作成して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 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
/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
ファイルを保存して閉じ、次のコマンドを使用して新しい設定を再読み込みします。
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を保護し、オンラインアクティビティを保護できます。