OpenConnect VPNサーバーのセットアップ方法

テクノロジーの時代には、仮想プライベートネットワーク(VPN)を持つことが必須です。VPNは個人用途だけでなく、特にビジネスや企業にとってますます重要になっています。そして、まだどのVPNソリューションを選ぶか迷っているのであれば、OpenConnect VPNを考慮してみてはいかがでしょうか?

OpenConnect VPNは、エンタープライズグレードのパフォーマンスと機能を備えた無料のVPNソリューションです。このチュートリアルでは、OpenConnect VPNサーバー(ocserv)の設定と接続方法を学びます。

続けて読んで、邪悪な存在をネットワークから遠ざけましょう!

前提条件

このチュートリアルでは、ハンズオンデモンストレーションが含まれています。進行するためには、以下の準備が必要です:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • 管理ユーザーまたはsudo/root権限を持つノンルートユーザー。
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

OpenConnect VPNサーバーのインストール

OpenConnect VPNサーバーは、Linux向けのオープンソースのSSLベースのVPNサーバーで、Debian、Ubuntu、RHEL/CentOS、FedoraなどのほとんどのLinuxディストリビューションで利用できます。

OpenConnect VPNサーバーは、デスクトップ/コンピュータからモバイル(AndroidおよびiOS)まで、ほとんどのクライアントをサポートしています。同様に、OpenConnect VPNサーバーは、Radius、OpenID、Kerberos、スマートカードなど、複数の認証バックエンドもサポートしています。

しかし、これらの機能を活用する前に、まずOpenConnect VPNサーバーをインストールする必要があります。

1. サーバーにSSHして、次のapt updateコマンドを実行して、パッケージインデックスを更新してリフレッシュします。このコマンドにより、最新のパッケージ情報が取得されます。

sudo apt update
Updating the package repository

2. 次に、次のapt installコマンドを実行してocservパッケージをインストールします。

sudo apt install ocserv -y

インストールが完了すると、新しいsystemdサービスであるocservが起動し、

Installing the OpenConnect VPN Server

3. 今、ocservサービスが実行されていることを確認するために、次のsystemctlコマンドを実行します。

# ocservサービスが有効になっていることを確認
sudo systemctl is-enabled ocserv
# ocservサービスが実行されていることを確認
sudo systemctl status ocserv

出力からわかるように、ocservサービスの状態が有効で実行されています。

Verifying the ocserv service is enabled and running

SSL/TLS証明書の生成

OpenConnect VPNサーバーがインストールされたら、次のステップは、OpenConnect VPNサーバーに安全に接続できるようにすることです。方法は?最初のステップは、CertbotLetsEncryptを使用してSSL/TLS証明書を生成することです。

しかし、証明書を生成する前に、Let’s Encrypt に登録するためのメールアドレスがあること、およびドメイン名がDebianサーバーのIPアドレスに向けられていることを確認してください。

SSL/TLS証明書を生成するには:

1. 以下のコマンドを実行して、Linuxサーバーにcertbotをインストールします。

sudo apt install certbot -y
Installing Certbot

2. 次に、以下のcertbotコマンドを実行して、SSL/TLS証明書を生成します。メールアドレス([email protected])とドメイン名(vpn.atadomain.io)を適切に変更してください。

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. 最後に、次のコマンドを実行して、生成されたSSL/TLS証明書がドメインディレクトリに存在することを確認します。

ls /etc/letsencrypt/live/vpn.atadomain.io

成功した場合、以下に示すように公開(fullchain.pem)とプライベート(privkey.pem)キーが表示されます。

Verifying the SSL/TLS certificates exist

OpenConnect VPNサーバーの構成

SSL/TSL証明書があっても、OpenConnect VPNサーバーの構成を変更しない限り、そこに置かれたままです。デフォルトのOpenConnect VPNサーバーの構成(/etc/ocserv/ocserv.conf)を次のように変更します:

  • デフォルトの認証方法を変更します。
  • OpenConnect VPNサーバーでUDPを無効にします。
  • デフォルトのSSL/TLS証明書を変更します。
  • クライアントのためのドメイン名と内部ネットワークまたはIPアドレスを設定します。

OpenConnect VPNサーバーを構成するには、以下の手順に従ってください:

1. まず、以下のcpコマンドを実行して、デフォルトのOpenConnect VPNサーバー設定(ocserv.conf)を/etc/ocservディレクトリにocserv.conf.origとしてバックアップします。

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. 次に、お好みのエディタを使用してOpenConnect VPNサーバー設定(/etc/ocserv/ocserv.conf)を開きます。

3. authパラメータの値を以下に示すようにplain[passwd=/etc/ocserv/ocpasswd]に変更します。これにより、デフォルトのPluggable Authentication Modules(PAM)認証がパスワードファイルに置き換えられます。

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. 今、udp-portパラメータの前に#を置いて、デフォルトのUDP接続を無効にします。

OpenConnect VPNをTCPのみのモードで使用するため、カーネルパラメータを介して速度を向上させることができます。

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. server-certパラメータの証明書ファイルのパスを公開鍵に、server-keyパラメータのプライベートキーに置き換えます。

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. try-mtu-discoveryパラメータの値をtrueに変更してMTU探索を有効にします。これにより、OpenConnect VPNサーバーのスピードとパフォーマンスが向上します。

try-mtu-discovery = true
Enabling MTU discovery

7. 次に、OpenConnect VPNサーバーのドメイン名をdefault-domainパラメータに入力し、ipv4-networkパラメータでデフォルトの内部IPアドレスを変更します。

この例では、VPNクライアントは内部ネットワーク10.11.0.0/24を使用します。

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. デフォルトのrouteパラメータをコメントアウトし、各行の先頭に#文字を追加してデフォルトのルートゲートウェイを無効にします。編集が完了したら、ファイルを保存してエディターを終了します。

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. 以下のコマンドを実行して、ocservサービスを再起動し、変更を適用し、システム上のすべての開いているポート(ss)をリストします。

# ocservサービスを再起動して変更を適用する
sudo systemctl restart ocserv
# 開いているポートをすべてリストする
ss -tulpn | grep ocserv

OpenConnect VPNサーバーが実行されている場合、以下のようにポート443LISTEN状態であり、ocservサービスによって使用されていることが表示されます。

Checking the ocserv port

OpenConnect VPNサーバーにユーザーを追加する

OpenConnect VPNサーバーが設定されているので、それに接続する方法が必要です。どのようにして?OpenConnect VPNサーバーにVPNユーザーを作成して追加することで。

OpenConnect VPNサーバーにユーザーを追加するには、次の手順でVPNユーザーを作成し、パスワードファイルを生成します:

次のocpasswdユーティリティを使用して、新しいユーザーを作成します。プロンプトが表示されたら、ユーザーのための新しいパスワードを入力し、繰り返します。このチュートリアルでは、ユーザー名にatauserを選択しましたが、独自のものを指定することもできます。

ユーザーが作成されると、パスワードファイル(/etc/ocserv/ocpasswd)も作成されます。

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

次に、次のcatコマンドを実行して、パスワードファイルの詳細を確認します/etc/ocserv/ocpasswd)。

cat /etc/ocserv/ocpasswd
Checking the password file’s details

重要なポートを開くためのUFWファイアウォールルールを追加します

Debianシステムでは、デフォルトのファイアウォールはIPTablesですが、これを設定するにはネットワーキングの理解が必要です。なぜプロセスを簡素化しないのでしょうか? このチュートリアルでは、デフォルトのファイアウォールとしてUFWをインストールして設定します。

1. 以下のコマンドを実行して、UFWをインストールし、すべてのプロンプトを自動的に受け入れます-y

sudo apt install ufw -y
Installing UFW

2. UFWがインストールされたら、次のufwコマンドを実行して、OpenConnect VPNサーバーが正しく動作するために必要な重要なポートを開きます。

# ポート22で実行されるOpenSSHサービスを追加します。
sudo ufw allow OpenSSH
# LetsEncrypt証明書を更新するためにポート80を追加し、
# OpenConnect VPNサーバーで使用するポート443を追加します。
sudo ufw allow 80,443/tcp
# UFWを起動して有効にします。
sudo ufw enable

プロンプトが表示されたら、操作を続行するにはYを入力してEnterキーを押してください。以下に示すように。

Adding firewall rules to open ports

3. 最後に、次のコマンドを実行してUFWのステータスを確認し、UFWが実行されていることを確認します。

sudo ufw status

以下の出力には、アクティブなUFWステータスと追加されたすべてのファイアウォールルールが表示されます。

Checking the UFW status and listing all firewall rules

ポートフォワーディングの有効化

VPNサーバーが実行されている場合、外部からのトラフィックをサーバーに向ける必要があります。これは、カーネルパラメータを介してDebianサーバーでポートフォワーディングを許可することによって行います。

ポートフォワーディングを有効にするには、次の手順に従ってください。

ターミナルに出力を生成しないが、/etc/sysctl.d/60-ocserv.confという新しいファイルを作成する次のコマンドを実行します。このファイルには、システムでポートフォワーディングを有効にするためのカーネルパラメータが含まれています。

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

次に、以下のsysctlコマンドを実行して新しいカーネルパラメータを適用し、ポートフォワーディングを有効にします。

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

UFWを使用したNATの設定

ポートフォワーディングを有効にすることは、最初の数ステップのうちの1つに過ぎません。今回は、OpenConnect VPNサーバーを介してVPNクライアントがインターネットまたは特定のネットワークに接続できるようにする必要があります。その方法は?UFWを介したNATの設定によって行います。

To set up NAT with UFW for the OpenConnect VPN Server:

1. システム上のインターフェースのリストを確認するには、次のコマンドを実行します。

ip a

この例では、eth1 インターフェースがVPNクライアント用のNATゲートウェイになります。

Checking available interfaces

2. 次に、好みのエディタを使用してUFW構成(/etc/ufw/before.rules)を開き、*filter オプションの前に次の行を追加します。これらの構成はVPNユーザー(出力インターフェースを指定)または内部ネットワークを eth1 インターフェースにNATします。

サブネット(10.11.0.0/24)とインターフェース(eth1)をVPNクライアントのネットワークに合わせて変更してください。

# OpenConnect VPNサーバーのためのNAT
# クライアントネットワーク 10.11.0.0/24
# インターフェース eth1 へ
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. ufw-before-forward オプションのok icmp code for FORWARD セクションの下に次の行を追加し、ファイルを保存してエディタを終了します。

これらの構成はVPNクライアントネットワークの転送(ソースおよび宛先)を有効にします。

# VPNクライアントネットワークの転送を許可
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. 保存したら、次のコマンドを実行してUFWルールを再読み込みし、UFWサービスを再起動します。これにより、NAT構成がシステムに適用されます。

sudo ufw reload
sudo systemctl restart ufw

5. 最後に、次の iptables コマンドを実行してUFW上のNATの状態を確認します。

sudo iptables -t nat -L POSTROUTING

成功すると、以下のような出力が得られます。

OpenConnect VPNサーバーにOpenConnect-GUI経由で接続

指示に従うと、完全に機能するOpenConnect VPNサーバーが実行されているはずです。しかし、すべての苦労の後、真実の瞬間が来ました。

OpenConnect VPNサーバーは実行されているかもしれませんが、確認するための唯一の最良の方法があります—OpenConnect VPNサーバーに接続します。

OpenConnect VPNサーバーに接続するには、OpenConnect-GUIアプリケーションをインストールする必要があります:

1. 好きなWebブラウザーを開いて、OpenConnect-GUI GitHubページにアクセスします。

2. 次に、Windows用のOpenConnect VPNアプリケーションをダウンロードしてインストールします。

Downloading the OpenConnect VPN application for Windows

3. OpenConnect-GUI VPNクライアントを開き、ファイルメニュー → プロファイル新しいプロファイル(高度な設定)(またはCtrl+Shift+Nを押します)。小さなウィンドウが表示され、新しいプロファイルの詳細を入力できます(ステップ4)。

Creating a new VPN profile

4. これで、以下のVPNプロファイル情報を入力します:

  • 名前 – 接続名を指定します(例:testvpn)。
  • ゲートウェイ – OpenConnect VPNサーバーのドメイン名を指定します(例:https://vpn.atadomain.io)。
  • ユーザー名 – OpenConnect VPNサーバーに追加されたユーザー(atauser)。

入力が完了したら、情報を保存してVPNプロファイルを作成します。

Configuring the new VPN profile

5. 次に、新しく作成したVPNプロファイル(testvpn)をサーバーとして設定し、接続をクリックしてOpenConnect VPNサーバーに接続します。

Connecting to the OpenConnect VPN Server

6. プロンプトが表示されたら、VPNユーザーのパスワードを入力し、OKをクリックします。

Authenticating the connection to the OpenConnect VPN Server

7. 接続が確立されると、南京錠の色が下のように緑に変わります。

Confirming successful connection to the OpenConnect VPN Server

8. 最後に、VPN情報タブをクリックして詳細な接続状態を確認します。VPNサーバーから取得した内部IPアドレス、DNSサーバー、および使用しているTLSバージョンが表示されるはずです。

Checking the VPN connection details

結論

このチュートリアルを通じて、OpenConnect VPNサーバーを設定する方法を学びました。同時に、SSL/TSL証明書を使用し、ファイアウォールルールを追加してOpenConnect VPNサーバーへの安全な接続を確立する方法も学びました。

この新しい知識を活かして、OpenConnect VPNサーバーをRadiusOpenIDなど、複数の認証バックエンドと統合してみるのはいかがでしょうか?または、クライアント認証のセキュリティレイヤーとして二要素認証を追加することも考えてみてください。

Source:
https://adamtheautomator.com/openconnect-vpn/