SoftEther VPN Serverの管理者パスワードを変更する

AWSのEC2(OSはAmazon Linux 2)上で稼働しているSoftEther VPN Serverに設定していた管理者パスワードを忘れたという事案が生じ、管理者パスワードの再設定を行ったので、その手順を残しておく。

作業の流れとしては以下の通り。

  1. EC2に接続
  2. SoftEther VPN Serverのサービスを停止
  3. 既存の管理者パスワードを削除
  4. SoftEther VPN Serverのサービスを開始
  5. 新しい管理者パスワードを設定

作業手順

まずは、SofrEther VPN Serverの稼働しているEC2に、SSHなりSession Managerなりで接続する。

接続出来たら以下のコマンドでSoftEther VPN Serverのサービスを停止。

$ sudo su -
$ systemctl stop vpnserver

次に、既存の管理者パスワードを削除するのだが、パスワード自体はSoftEther VPN Serverの設定ファイルであるvpn_server.configにハッシュ化された形で定義されているので、それを直接編集して削除する必要がある。

件のサーバーでは/usr/local/ディレクトリにインストールされていたので、設定ファイルは/usr/local/vpnserver/vpn_server.configにあった。

中身を確認すると、以下の様にrootServerConfigurationHashedPasswordとして管理者パスワードが定義されている。

declare root
{
〜〜〜 中略 〜〜〜
        declare ServerConfiguration
        {
〜〜〜 中略 〜〜〜
                byte HashedPassword D2Ak3pm0cNSlPrtyCWYig1vDcFE=

このHashedPasswordを削除してやる。

$ cp -vip /usr/local/vpnserver/vpn_server.config /tmp ←バックアップ
$ vi /usr/local/vpnserver/vpn_server.config ←ServerConfiguration内のHashedPassword行を削除して保存

なお、ServerConfiguration以外にVirtualHUBにもHashedPassword(こちらは仮想ハブのパスワード)が定義されているので、HashedPasswordだけで検索して誤ってVirtualHUBの方を削除してしまわない様に注意。

vpn_server.configの編集を終えたら、SoftEther VPN Serverのサービスを再開。

$ systemctl start vpnserver

サービスの起動を確認したら、SofrEther VPN Serverの管理コマンドとなるvpncmdを使って、新しい管理者パスワードを設定する。

$ /usr/local/vpnserver/vpncmd

実行すると対話式のプロンプトに切り替わり、このコマンドで何をするのか選択肢が表示されるので、「1」(サーバー管理)を入力してエンターを押す。

vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.34 Build 9745   (Japanese)
Compiled 2020/04/05 23:39:56 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1

すると、作業対象とするサーバーの接続先を問われるのだが、何も入力せずにエンターを押すとlocalhostが指定される。

接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続します。
接続先のホスト名または IP アドレス:

次に、仮想ハブ名の入力を求められるので、今回はサーバー管理モードで接続する為、ここでも何も入力せずにエンターを押す。

サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力:

管理者パスワードが設定されている状態だと、このタイミングでパスワードの入力を求められるのだが、vpn_server.configから正常に削除出来ていれば、このまま管理者モードでSoftEther VPN Serverに接続され、以下の様なプロンプトが表示される。

VPN Server "localhost" (ポート 443) に接続しました。

VPN Server 全体の管理権限があります。

VPN Server>

プロンプトが切り替わったら管理者パスワードの設定コマンドServerPasswordSetを実行し、新しいパスワードを2回入力すると設定が完了。

VPN Server>ServerPasswordSet
ServerPasswordSet コマンド - VPN Server の管理者パスワードの設定
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ************************
確認入力  : ************************


コマンドは正常に終了しました。

VPN Server>exit

一度、プロンプトを抜けてから、再度vpncmdを実行してlocalhostに接続しようとすると、先程とは異なり管理者パスワードの入力を求められる様になっている。

$ /usr/local/vpnserver/vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.34 Build 9745   (Japanese)
Compiled 2020/04/05 23:39:56 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1

接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続します。
接続先のホスト名または IP アドレス:

サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力:
パスワード: ************************

VPN Server "localhost" (ポート 443) に接続しました。

VPN Server 全体の管理権限があります。

VPN Server>exit

ここで新しいパスワードを入力してlocalhostに接続される事を確認し、問題が無ければ管理者パスワードの変更作業は完了となる。