控制台用户被锁定-pam 问题?

控制台用户被锁定-pam 问题?

我正在尝试为 Debian 稳定服务器启用 AD 身份验证,以使用户能够通过 ssh 身份验证登录 Windows AD。一切正常,我可以使用我的 Windows 凭据 ssh 到服务器,但我在以 root 身份登录时注意到远程 ssh 登录时出现此消息:

Your account has been locked. Please contact your System administrator
Your account has been locked. Please contact your System administrator
Your account has been locked. Please contact your System administrator
Last login: Sat Jun 13 14:15:14 2009 from workstation1
server1:~#

我检查过我是否可以通过本地控制台以 root 身份登录,哎呀,我不能。同样的错误弹出。这可能会让我在将来痛苦不堪。同时,我尝试了相同的 RedfHat 设置,但没有遇到此问题。我相信问题出在我的 pam 配置中,但不知道在哪里。用谷歌搜索错误也无济于事。

以下是 Debian 和 redhat 上相应 pam 文件的详细信息...


Debian 版本

普通账户

account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account required    pam_unix.so

通用认证

auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    required    pam_unix.so nullok_secure

公共会话

session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient      pam_winbind.so  require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX 
session sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
session sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXX
session required    pam_unix.so

RedHat 系统身份验证文件:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     sufficient    pam_winbind.so use_first_pass
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_winbind.so use_first_pass
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     required      pam_winbind.so    use_first_pass
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_mkhomedir.so skel=etc/skel/ umask=0027

sshd 配置文件

# PAM configuration for the Secure Shell service

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth       required     pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth       required     pam_env.so envfile=/etc/default/locale

# Standard Un*x authentication.
@include common-auth

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

# Uncomment and edit /etc/security/access.conf if you need to set complex
# access limits that are hard to express in sshd_config.
# account  required     pam_access.so

# Standard Un*x authorization.
@include common-account

# Standard Un*x session setup and teardown.
@include common-session

# Print the message of the day upon successful login.
session    optional     pam_motd.so # [1]

# Print the status of the user's mailbox upon successful login.
session    optional     pam_mail.so standard noenv # [1]

# Set up user limits from /etc/security/limits.conf.
session    required     pam_limits.so

# Set up SELinux capabilities (need modified pam)
# session  required     pam_selinux.so multiple

# Standard Un*x password updating.
@include common-password

答案1

出于对${Diety} 的热爱,common-*在尝试新的身份验证设置时请不要调整 PAM 堆栈的各个部分。 这是自己进行 Hole Hawg 的最快、最简单的方法. 你可能会把自己锁定在系统之外永久因为存在先有鸡还是先有蛋的情形:您被锁定在系统之外,但您需要登录系统进行必要的更改,以防止被锁定。

考虑在单个服务上进行实验,例如 SSH(假设您附近有控制台访问权限)。一旦您根据确切要求对服务进行原型设计/配置,请不要立即将其应用于文件common-*,而是考虑它将对其他系统服务产生什么影响。请记住,common-*对于大多数配置来说,它充当“万能药”,这里的一个错误意味着参观救援 CD以再次解锁。一旦您很好地掌握了配置如何与依赖于系统默认值的不同服务进行交互,就可以应用它。

需要考虑的另一点是,如果您进行此更改以common-*方便机箱上所有服务的 SSO,它将不是捕获每项服务,一些服务有自己的身份验证设置,您也需要检查这些设置。

就控制台消息而言,发生的事情是 winbind 正在联系您的 AD 控制器,该控制器正在查看过多的登录失败尝试。尝试 15 次后(我相信这是 MS 使用的出厂设置数字),帐户将被锁定一段时间,除非管理员解锁该帐户。这就是您在登录时收到“帐户锁定”消息的原因 - 堆栈的 winbind 部分无法通过身份验证尝试,并且该过程“失败”到堆栈中的下一步。

我会仔细查看您的 winbind 设置,以确定身份验证是否真正成功。如果您提交的凭据来自 AD 控制器不喜欢的域成员,那么密码是否正确并不重要 - 迟早,帐户将被锁定,因为请求来自被视为非域成员的请求。首先要检查的是 winbind 是否加入域,因为这会影响凭据是否被查看。我还会查看 winbind 如何处理您的管理帐户 - 我似乎记得有一两个额外的设置需要确保正确的行为(当我有它们时,我会把它们挖出来并重新编辑......)

我还建议在本地 Linux 机器上设置辅助密码,使用/etc/passwd,这样您就可以进行“失败”身份验证。如果 winbind 服务无法验证身份(在本例中确实无法验证身份),/etc/passwd它将弥补不足并允许您进入。您仍然能够进入这一事实似乎表明您已经通过将本地密码设置为与您使用的帐户的 AD 密码相同来做到这一点。

还可以考虑以 sudo 条目的形式安装另一个安全阀,这样单个特定帐户将允许您通过 切换到 root sudo su

相关内容