FortiClient のインストールを終え、オフィスのSSL VPNに接続して、そもそも存在しない「パスワードを保存」の項目を探している。クライアントを再インストールしても戻らず、トンネルを削除して追加し直しても同じだ。SSL VPN プロファイルでは、クライアントが資格情報を保存できるかどうかをファイアウォールが決める。つまりチェックボックスが無いのは、インストーラーが失敗したのではなく、ゲートウェイからポリシーが届いているという意味が多い。

ファイルを編集する前に、この区別が重要だ。この二つの道のうち一方はファイアウォールの管理者との会話であり、もう一方は上書きされるラボ作業である。

エンドポイントに触る前にポータルを確認する

FortiGate を運用している人に、トンネルが向かう SSL VPN ポータルを開いてもらい、パスワード保存の設定を読んでもらう。このオプションが無効なら、FortiClient は項目を隠して資格情報の保存を拒否するのが期待される動作だ。エンドポイントは故障しているのではなく、規則に従っている。

簡単なテスト一つで、ポリシーと壊れたプロファイルを切り分けられる。保存をまだ許可しているポータルにサインインし、その後で自分のポータルに戻る。許可側で項目が現れ、制限側で消えるなら、ここで止めてゲートウェイ側の変更を依頼する。以下の作業はすべてラボのテナントやテスト用プロファイル向けの現場作業であり、サーバーの判断に勝るものはない。プロファイルの更新やクライアントのアップグレードは、ローカルの編集を書き換えてしまう。

Windows ではフラグがトンネルのキーの中にある

保存されたトンネルは現在のユーザーの下に接続ごとに一つのキーとして存在し、表示のフラグは接続の詳細の隣にある。

HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels<tunnel name>
show_remember_password = 1

値を 1 に設定し、ウィンドウを閉じるのではなくトレイからクライアントを終了して、もう一度開く。5.x のビルドでは同じフラグが HKEY_LOCAL_MACHINE の Wow6432Node 配下に置かれることがあったので、ユーザーごとのキーが無い場合はそこを見る。一部の 6.x ビルドは接続に成功した後に値を書き換えるため、一度のログインでは残り次で消えるチェックボックスの説明がつく。キーにそうした値がまったく無い場合は、他の名前を推測せず文字列として作成する。

レジストリはデバッグの手順として扱う。生きたレジストリの状態は次の管理者には見えず、棚卸しの更新でも保存されない。

macOS ではクライアントを追跡してファイルを特定する

macOS のクライアントは接続ごとの設定を /Library/Application Support/Fortinet/FortiClient/conf の下に、トンネルごとの辞書として持つ。設定すべきキーは AllowSavePassword で、同じ辞書内の自動接続のキーを壊さずに 1 と読める必要がある。終わったらクライアントを再起動する。

正確なファイルを当て推量するのは、慣れないビルドでは時間の無駄だ。トンネルを追加する間に opensnoop を実行し、クライアントが触れたパスを読む。書き込まれたファイルこそがフラグを持つファイルである。クライアントを閉じた状態でそのファイルを編集すれば作業は終わる。五分の追跡は、毎回ファイルシステム全体の検索に勝る。

エクスポート、編集、復元のサイクルを選ぶ

新しいクライアントは設定全体をファイル経由で往復できる。生きたレジストリの手術より繰り返しやすく、別のマシンへ渡しやすい。

  • クライアントの設定からエクスポートし、ユーザー設定を含め、エクスポート用のパスワードを設定する。
  • ファイルを開き、show_remember_password を 1 に設定する。
  • クライアントの錠を外す。ロック中は復元しても何も起きない。
  • 編集したファイルを復元し、エクスポート用のパスワードを入力する。

次のサインインで項目が現れるはずだ。エクスポートしたファイルは共有フォルダやチケットの添付から遠ざけておく。トンネルを記述しており、暗号化された秘密を含む可能性がある。

復元が効いても接続後にボックスが再び隠れるなら、ゲートウェイがログインのたびにポリシーを再適用しており、ローカルのファイルでは設定を長く保てない。

秘密がアカウントのロックに変わる前に消す

Linux のコマンドラインクライアントにはチェックボックスが一切ないため、stdin にパスワードを流すラッパーが定番の答えであり、何も保存しない。どのプラットフォームでも確実な除去は、接続をログイン時の入力に戻すか、トンネルを完全に削除することだ。

保存された資格情報は、それを無効にするパスワード変更よりも長く残り、その結果の失敗は VPN の障害のように見える。拒否、再試行、そしてアカウントのロックだ。パスワードを変える前に保存値を消し、トンネル一覧に残る古い項目を確認する。秘密はクライアントの保管庫に暗号化されて置かれるので、手で編集しても無意味だ。トンネルを削除するほうが速く、何も残らない。

順番に進める。ファイアウォールの管理者とポータルの設定を確認し、許可するプロファイルで出所を証明し、レジストリや plist の編集はラボ内にとどめ、どのファイルが秘密を持つかを把握して削除できるようにする。保存を許可するポータルでチェックボックスが無いのはエンドポイントの問題であり、次に見るべきはクライアントのログだ。

関連記事