pam_google_authenticatorを有効にすると、libPAMライブラリ認証が失敗します。

pam_google_authenticatorを有効にすると、libPAMライブラリ認証が失敗します。

次の行を有効にしました/etc/pam.d/common-auth

auth required pam_google_authenticator.so nullok

設定されていない場合(たとえば、.google_authenticatorファイルがホームフォルダにない場合)、OTPを要求しないnullokオプションを使用してください。

一部のユーザーがいますが、ホームフォルダがない人は誰ですか?(私はこのユーザーのパスワードを確認するためにPAMシステムを使用しています。それはすべてです。)

次のライブラリでテストされました。https://github.com/FirefighterBlu3/python-pam

python3 pam.py 
Username: ...
Password: ...
Auth result: Authentication failure (7)

無効にすると、auth required pam_google_authenticator.so nullok認証が正常に機能します。

python3 pam.py 
Username: ...
Password: ...
Auth result: Success (0)

google_authenticatorを有効にした後、ホームフォルダなしでユーザーのパスワードをどのように確認できますか?

ベストアンサー1

コードはあちこちにあります。設定されている場合、フラグをopen_secret_file設定すると、ホームディレクトリを持たないユーザーのように失敗します。より良いトレースを設定すると、ログメッセージが何であるかを正確に表示するのに役立ちます。SECRETNOTFOUNDnullokopendebug

また、isはopen_secret_filenon-でない場合にのみ呼び出されます。もしそうなら、isが何であるか(別の場所で使用され、時には割り当てられ、時にはとんでもない)知る必要があります。secret_filenameNULLbufbuf[1000]stopped_by_rate_limit

とにかく、get_secret_filename秘密ファイルのデフォルトの場所がホームディレクトリ以外の場所に変更される可能性があることを示しています。 「ホームフォルダを持たない人」とはどういう意味ですか?フィールドが空の場合は、次のいずれかになります。

if (!pw->pw_dir) {
  log_message(LOG_ERR, pamh, "user(\"%s\") has no home dir", username);
  goto errout;
}

if (*pw->pw_dir != '/') {
  log_message(LOG_ERR, pamh, "User \"%s\" home dir not absolute", username);
  goto errout;
} 

一致します(debugここでPAMフラグを追加すると役立ちます)。これはget_secret_filenamereturnを意味しNULL、これはif (secret_filename) {失敗を意味し、SECRETNOTFOUNDフラグがopen_secret_file呼び出されなかったため設定できないことを意味します。そうであれば、コードはたくさんありますが、観察したように失敗するようです(debugここでより多くの情報を得ることができます)。

この状況を解決するための他のいくつかのオプションは説明を必要としません。

パッチコード

したがって、回避策はパッチをget_secret_filename設定することです。

params->nullok = SECRETNOTFOUND;

これは、ホームディレクトリが存在しないか(複数の場所に)デフォルトで設定されていますが、存在しないものを返すparams->nullok = SECRETNOTFOUNDときにオフになっている場合です。これには、セキュリティホールが発生しないようにする論理的な監査も含まれます。get_secret_filenameNULL

ユーザーに書き込めない空のホームディレクトリを提供します。

/var/emptyより簡単なオプションは、またはこれらのユーザーのホームディレクトリとして何かを使用することです。この場合、SECRETNOTFOUNDフラグが正しく設定される可能性があります。 (何も追加されていないことを監査できます。/var/emptyもちろん、これらのユーザーにはそのディレクトリを変更する権限がありません。)

PAMの合併症

Linux PAMを使用すると、後続のルールをスキップできるため、ホームディレクトリが空であるか類似している場合は、後続のルールをスキップpam_google_authenticator.soするPAMモジュールがある可能性があります。

(ユーザーに使用できないホームディレクトリを提供することもできます。)

おすすめ記事