【问题标题】:Linux authentication to AD causing lockout on single failure [closed]Linux对AD的身份验证导致单个故障锁定[关闭]
【发布时间】:2013-12-20 16:13:11
【问题描述】:

我正在尝试设置一个 Linux 机器(特别是 Centos 6)来通过我们的 Windows AD 对用户进行身份验证。身份验证工作正常。问题:我们的密码锁定政策是 3 次打击,而您已被锁定。如果登录 Linux 主机的用户只输入了一次错误的密码,他们的帐户就会被锁定。

这是我的 /etc/pam.d/system-auth 文件:

%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
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 [default=ignore success=1] pam_succeed_if.so uid < 16777216 quiet
# only allow login if user is in group serveradmins
account [default=bad success=ignore] pam_succeed_if.so user ingroup serveradmins quiet
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 type=
password    sufficient    pam_unix.so sha512 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     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_oddjob_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

以下是用户尝试登录并在第一次尝试时输入错误密码时在 /var/log/secure 中捕获的日志条目。为简洁起见,我从日志条目的开头删除了日期时间和主机名:

sshd[1589]: Connection from 22.33.44.55 port 49532
sshd[1589]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=host0001.foo.bar  user=gumby
sshd[1589]: pam_krb5[1589]: authentication fails for 'gumby' (gumby@FOO.BAR): Authentication failure (Preauthentication failed)
sshd[1589]: pam_winbind(sshd:auth): getting password (0x00000010)
sshd[1589]: pam_winbind(sshd:auth): pam_get_item returned a password
sshd[1589]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_AUTH_ERR (7), NTSTATUS: NT_STATUS_WRONG_PASSWORD, Error message was: Wrong Password
sshd[1589]: pam_winbind(sshd:auth): user 'gumby' denied access (incorrect password or invalid membership)
sshd[1589]: pam_krb5[1589]: authentication fails for 'gumby' (gumby@FOO.BAR): Authentication failure (Preauthentication failed)
sshd[1589]: pam_winbind(sshd:auth): getting password (0x00000010)
sshd[1589]: pam_winbind(sshd:auth): pam_get_item returned a password
sshd[1589]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_AUTH_ERR (7), NTSTATUS: NT_STATUS_WRONG_PASSWORD, Error message was: Wrong Password
sshd[1589]: pam_winbind(sshd:auth): user 'gumby' denied access (incorrect password or invalid membership)
sshd[1589]: Failed password for gumby from 22.33.44.55 port 49532 ssh2
sshd[1589]: pam_krb5[1589]: authentication fails for 'gumby' (gumby@FOO.BAR): User not known to the underlying authentication module (Clients credentials have been revoked)
sshd[1589]: pam_winbind(sshd:auth): getting password (0x00000010)
sshd[1589]: pam_winbind(sshd:auth): pam_get_item returned a password
sshd[1589]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_MAXTRIES (11), NTSTATUS: NT_STATUS_ACCOUNT_LOCKED_OUT, Error message was: Account locked out
sshd[1589]: pam_winbind(sshd:auth): internal module error (retval = PAM_MAXTRIES(11), user = 'gumby')
sshd[1589]: pam_krb5[1589]: authentication fails for 'gumby' (gumby@FOO.BAR): User not known to the underlying authentication module (Clients credentials have been revoked)
sshd[1589]: pam_winbind(sshd:auth): getting password (0x00000010)
sshd[1589]: pam_winbind(sshd:auth): pam_get_item returned a password
sshd[1589]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_MAXTRIES (11), NTSTATUS: NT_STATUS_ACCOUNT_LOCKED_OUT, Error message was: Account locked out
sshd[1589]: pam_winbind(sshd:auth): internal module error (retval = PAM_MAXTRIES(11), user = 'gumby')
sshd[1589]: Failed password for gumby from 22.33.44.55 port 49532 ssh2

此配置中的什么导致身份验证模块尝试多次,我们如何更改它以使其不这样做?

谢谢。

【问题讨论】:

    标签: linux authentication active-directory samba pam


    【解决方案1】:

    所以这是一篇旧帖子,但可能会为一些人节省几天的故障排除时间。

    虽然有时最简单的答案通常是正确的答案,但在迁移的情况下,您应该始终检查路由、防火墙和 DNS 条目是否相同并且 ntp 同步。

    短背景: 当决定将旧 DC 迁移到新版本(Windows Server 2008 -> Windows Server 2016)时,问题就开始了。 我们的 Linux 环境由通过 Samba、Winbind 加入 AD 的 Rhel 5、6 和 7 系统组成。

    默认情况下,Windows Server 2016 已禁用 SMBv1,这意味着所有 Rhel 5 和 6 系统都无法与新 DC 通信,供参考:https://access.redhat.com/articles/3164551

    这可以通过在 DC 上启用此角色来解决(并且您了解启用 30 年旧协议的后果):

    SMBv1

    如果图片不再可用(DC 上的操作):添加角色和功能 -> 功能 -> SMB 1.0/CIFS 文件共享支持 -> 检查。

    注意:启用后需要重启。

    在那次改变之后一切都运行得很顺利,或者看起来是这样。

    我还从服务器 (Rhel 5) 日志中偶然发现了这个特定错误:

    Oct 27 09:06:58 dummy sshd[22520]: Failed password for some_user from x.x.x.x port 53207 ssh2
    Oct 27 09:07:07 dummy sshd[22520]: pam_winbind(sshd:auth): getting password (0x00000050)
    Oct 27 09:07:07 dummy sshd[22520]: pam_winbind(sshd:auth): pam_get_item returned a password
    Oct 27 09:07:07 dummy sshd[22520]: pam_winbind(sshd:auth): request failed: Wrong Password, PAM error was Authentication failure (7), NT error was NT_STATUS_WRONG_PASSWORD
    Oct 27 09:07:07 dummy sshd[22520]: pam_winbind(sshd:auth): user 'some_user' denied access (incorrect password or invalid membership)
    Oct 27 09:07:09 dummy sshd[22520]: Failed password for some_user from x.x.x.x port 53207 ssh2
    

    而且我也无法使用自己的帐户进行身份验证,所以我迁移到 samba3x,参考(我没有完成所有步骤):https://access.redhat.com/solutions/42635

    对于那些可能没有帐户的人,我采取了以下步骤:

    备份原始配置文件(您将需要您的 smb.conf):

    tar cf /root/backup_samba_migration.tar /etc/samba /var/cache/samba /var/lib/samba
    

    停止服务:

    service smb stop; service winbind stop
    

    删除 samba 并安装 samba3x:

    yum remove samba samba-common -y
    yum install samba3x* -y
    

    这是您放置旧 smb.conf 的位置:

    vim /etc/samba/smb.conf
    

    您还应该复制 pam_winbind.conf(例如,我们使用 required_membership 参数):

    \cp /etc/security/pam_winbind.conf.rpmsave /etc/security/pam_winbind.conf
    

    在我的情况下,我需要重新加入域(您可能不需要使用 createcomputer):

    net ads join -U youradminaccount createcomputer="Linux system"
    

    重启服务:

    service smb restart; service winbind restart
    

    测试(在此验证之前会直接给出失败的密码):

    wbinfo -t
    wbinfo -a youradminaccount
    

    希望对你有帮助,祝你好运!

    【讨论】:

      【解决方案2】:

      要确定到底发生了什么,您应该在此处放置“调试”标志。
      从日志中删除时间戳以了解性能问题也无济于事。

      我认为你先做 pam_krb5 身份验证,然后是 pam_winbind 身份验证,然后是 pam_krb5 帐户,然后你就被锁定了。

      尝试只对任务使用 krb5 或 winbind。两者都不是。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 2017-12-15
        相关资源
        最近更新 更多