環境:
OS: FreeBSD 12.1-Release-p10
Sudo: 1.9.5p2
Samba: 4.13.1_1
我々は最近、DNS、DHCP、および内部SSOのサポートを提供するためにActive Directoryバックエンドに移行しました。 PAMを使用してSamba / Winbindd設定で認証しながら、SSHログインは正常に機能します。 ADグループのメンバーシップを通じて、誰がsudoを使用できるかを制御したい(現在のルートと同じ)。
そのために、ADに「Unix Admins」という新しいグループを作成し、ローカルユーザーやWheelグループと同様に、sudoにそのメンバーシップを確認させたいと思います。これを行うには、既存のホイール項目をコピーし、次のように2セットのチェックラインを設定しました。
%wheel ALL=(ALL) ALL
%Unix\ Admins ALL=(ALL) ALL
Wheelまたは新しいグループに属していないADユーザーがログインしてsudoを使用しようとすると、予想どおりsudoersファイルにないという一般的なエラーが表示されます。彼らはいつはいホイールの代わりにADグループはパスワードの入力を求められ、パスワードを正しく入力するとコマンドが期待どおりに実行されます。
しかし、彼らが入るとき間違ったパスワードを入力すると、状況を考慮すると少し秘密のエラーメッセージが表示され、正しいパスワードを入力したかのようにコマンドが実行されます。
エラーは次のように発生します。
% sudo ls
Password:
When trying to update a password, this return status indicates that the value provided as the current password is not correct.
<<ls output here>>
編集:明確にするために編集されました。
編集2:/etc/pam.d&/usr/local/etc/pam.d関連コンテンツ
/usr/local/etc/pam.d/sudo
#
# $FreeBSD: branches/2021Q1/security/sudo/files/pam.conf 340872 2014-01-24 00:14:07Z mat $
#
# PAM configuration for the "sudo" service
#
# auth
auth include system
# account
account include system
# session
# XXX: pam_lastlog (used in system) causes users to appear as though
# they are no longer logged in in system logs.
session required pam_permit.so
# password
password include system
/etc/pam.d/system
#
# $FreeBSD: releng/12.1/lib/libpam/pam.d/system 197769 2009-10-05 09:28:54Z des $
#
# System-wide defaults
#
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth sufficient pam_unix.so no_warn try_first_pass nullok
auth sufficient pam_winbind.so try_first_pass
# account
#account required pam_krb5.so
account required pam_login_access.so
account required pam_unix.so
# session
#session optional pam_ssh.so want_agent
session required pam_lastlog.so no_fail
# password
#password sufficient pam_krb5.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
答え1
これはあなたの問題です」システムファイルが含まれるように変更され、pam_winbind
モジュールpam_unix
はrequired
次のように変更されました。sufficient
」。
時間をかけて読む価値が十分です4.1章~のLinux PAM管理者ガイド(はい、私はあなたがFreeBSDを使用していることを知っています。)ここで説明する詳細を理解できるようにしてください。
pam_unix
に設定するとrequired
すぐに返されます。成功または失敗するパスワードの有効性によって異なります。変えるとsufficient
ただ戻ってくる成功しかし、それ以外は続けてください。これで失敗モードはありません。
これでスタックauth
が戻ることができます成功またはデフォルト値は次のとおりです。成功。この問題を解決するには、deny
最後のスタック項目としてaを追加してください。auth
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient pam_unix.so no_warn try_first_pass nullok
auth sufficient pam_winbind.so try_first_pass
auth required pam_warn.so
auth required pam_deny.so
pam_warn
PAMが認証失敗を記録しないようにするには、このエントリにコメントを追加します。
PAMスタックに役立つキーワード
required
- 失敗すると、最終的にスタックが返されます。失敗するしかし、残りのモジュールを実行した後にのみ可能requisite
-失敗するすぐに返されますsufficient
-成功そうでない限りすぐに返されます。失敗するrequired
保留中
答え2
FreeBSD の PAM モジュールは Linux の想像通りには動作しませんが、実際にはドキュメントに記載されているとおり動作します。
問題は、前述のOPIEシステムに関連する認証セクションのモジュールにあります。これらのモジュールはデフォルトで有効になっており、アカウントでOPIEを初期化していないユーザー(正直なところ、デフォルトではすべての人)に常に成功します。これにより、すべての「一般」認証モジュールが失敗を返しても(これらのモジュールが「十分」または「選択」に設定されている場合)、認証サブセクションが渡されます。
回避策は、2つのOPIEモジュールを参照する行を削除することです。