認証情報ファイルと auth-nocache:役立つのか、害になるのか
auth-nocache は要求された認証情報をメモリから破棄します。パスワードがファイルにある場合、警告の意味は薄れ、このオプションは再ネゴシエーションを壊しかねません。
OpenVPN は起動時に auth-nocache を勧める警告を表示します。そして誘惑に負けてオプションを追加し、その行が消えるのを見守りたくなります。この助言は対話的なログインを前提にしています。ユーザー名とパスワードがファイルに置かれた時点で比較は変わります。オプションは永続的なコピーを守らなくなり、権限を落とすクライアントでは後になって再ネゴシエーションを壊すことがあります。プロファイルを編集する前に、二つの保存モデルを切り離して考える価値があります。
認証情報の要求に応える二つの方法
一つのモデルは、人が端末に認証情報を入力する場合、または管理用の画面がセッションの間それを保持する場合です。OpenVPN はそのコピーを保持し、次の再ネゴシエーションに再質問なしで答えられるようにします。警告が問題にしているのはまさにこれです。ディスク上のものは関与しないため、守るべきは値を持つプロセスだけです。クライアントを閉じればコピーも一緒に消えます。
もう一つのモデルは、ファイルを指す auth-user-pass です。ファイルが保存先であり、値が必要になったときにクライアントがそれを読みます。ここで重要な露出はプロセスのメモリではなく、そのファイルの権限と所有者です。起動時の警告は設定内のディレクティブから出るもので、パスワードの渡し方を調べた結果ではないため、どちらのモデルでも表示され、どちらも指していません。
この比較の残りはその分岐から導かれます。一方のモデルはメモリの扱い、もう一方はファイルの扱いとプロセスの同一性です。
auth-nocache が実際に捨てるもの
対話的なログインでは、 --auth-nocache は使用後に保存されたコピーをメモリから削除します。 その代償は、再ネゴシエーションの間隔ごとに新しい要求が出ることです。捨てられたものを次の回で再利用できないからです。
ファイルを使うログインではクライアントがファイルを再び読めるため、破棄はほとんど見えません。それが見えるのは、人が予想しない一箇所だけです。デーモンが権限を落とした後、認証情報ファイルがその時点の実行アカウントから読めない場合です。
警告が出たからではなく、その取引を理解しているからオプションを加えてください。ログを静かにするために加えたオプションは、効果を誰も測っていないオプションです。
ファイルを使う経路が壊れる場所
トンネルデバイスを開くために root として起動し、その後 user と group に切り替えるクライアントは、認証情報ファイルを二度読みます。切り替え前に一度、その後の再ネゴシエーションでもう一度です。ファイルがモード 600 で root 所有なら二度目の読み取りが失敗し、その失敗は一時間後にサーバーの問題に見える認証エラーとして現れます。再ネゴシエーションの間隔の前後でクライアントのログを確認し、次にアカウントとファイルを併せて確認してください。
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headどちらの行も重要です。一行目は誰がファイルを読めるかを、二行目は動いているデーモンが実際に誰かを示し、両者の食い違いが、パスワードを何度打ち直しても直らない失敗を説明します。
実際の修正は地味です。ファイルをデーモンのアカウントが読めるディレクトリと所有者へ移すか、特権読み取りを保ったままクライアントが一度しか読まないことを確かめてください。ファイルを誰でも読めるようにして解決してはいけません。
オプションを本当に必要とする場合
ワンタイムコードを伴うログインは、別の理由で auth-nocache を必要とします。ワンタイムコードは最初の認証で消費されるため、キャッシュされたコピーは次の再ネゴシエーションでは役に立たず、古い値が再送される恐れさえあります。
これは認証情報の種類についての問いであり、どこに保存するかではありません。保護されたファイル内の固定パスワードは逆の性格を持ちます。再ネゴシエーションのたびに読める必要があり、必要な保護はファイル側にあります。
この二つの理由をプロファイルのコメントで分けて書いてください。そうしないと次の管理者は、自分が選ぶ理由でオプションがあると思い込みます。
一つの決定としての比較
人が立ち会い鮮度が重要なときは対話モデルを選び、繰り返しの要求をその代償として受け入れます。クライアントが無人で動くときはファイルモデルを選び、労力は所有者、モード、権限の切り下げに使ってください。
どちらのモデルも保存されたパスワードを単独で安全にはせず、どちらも起動時の警告を意味あるものにはしません。
警告だけがプロファイルを開いた理由なら、説明のないオプションではなく決定を記録してください。認証情報はデーモンのアカウントが読めるファイルから来ており、再ネゴシエーションが成功するのを確認済みで、間隔を変える前に OpenVPN 2.6 のマニュアルの再ネゴシエーションの節 を読んだ、と。そのメモはどんな単一のフラグよりも長く残ります。