web-dev-qa-db-ja.com

Linux PAM pam_succeed_if.so

PAMでADセキュリティグループを指定して、ログインできるドメインユーザーを制限しました。また、ADユーザーのセッションをこのグループに制限しました。これにより、ログインしたユーザーがグループ外のADユーザーに対して「su-」を実行できなくなります。

Winbind uidマッピングは、ADユーザーがUID> = 10000000になるように構成されています。

これらは、以下のPAM構成で期待どおりに機能します。

/ etc/pam.d/system-auth

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so user ingroup AD_group debug
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_krb5.so use_first_pass
auth        sufficient    pam_winbind.so use_first_pass
auth        required      pam_deny.so

account     required      pam_access.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_krb5.so
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_krb5.so use_authtok
password    sufficient    pam_winbind.so use_authtok
password    required      pam_deny.so

session     [default=1 success=ignore] pam_succeed_if.so quiet uid >= 10000000
session     requisite     pam_succeed_if.so user ingroup AD_group debug
session     optional      pam_mkhomedir.so umask=0077 skel=/etc/skel
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so

ここで、AD_group外の特定のADユーザーがログインできるようにルールを追加したいと思います。ファイルの3行目の後に次の行を追加してみました。

auth        requisite     pam_succeed_if.so user=AD_user_1 debug

ただし、これにより、すべてのADユーザーがログインできるようになりました。

任意の洞察をいただければ幸いです。

1
kernelpanic

認証に成功したすべてのユーザーは興味深いものです。これは、グループメンバーシップテストも無視されていることを意味します。 (上記の私のコメントによると、スキップしているようには見えません)それは私にはsufficientよりもrequisiteのように聞こえます。

sufficient pam_unix.so条件に合格するユーザーに対してテストしていないことを再確認しましたか?シャドウテーブルをチェックして、探していないときに誰かがテストプール内のユーザーのローカルパスワードを追加していないことを確認します。

authモジュールがスキップされている可能性もあります(SSHキー認証が頭に浮かびます)。その場合、アクセスチェックがauthではなくaccountにあると問題が発生します。 。これが原因であるかどうかにかかわらず、アクセスポリシーに穴がないように、それらをaccountに移動することをお勧めします。

auth =認証に関連するもの

account =承認に関連するもの(アクセスチェック)

1
Andrew B