成功配置 Kerberos 后,这是我在/etc/pam.d/common-auth文件中找到的内容:
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
Run Code Online (Sandbox Code Playgroud)
success=2控制值是否意味着如果pam_unix.so 失败,身份验证会跳到该auth requisite pam_deny.so行还是最后一行?
我正在尝试为 ubuntu 机器上的所有用户提高打开文件描述符的最大值。
我已将以下几行添加到/etc/security/limits.conf:
* soft nofile 100000
* hard nofile 100000
Run Code Online (Sandbox Code Playgroud)
而且,基于这个问题,我检查了以下/etc/pam.conf设置pam_limits:
$ grep "pam_limits" /etc/pam.d/*
/etc/pam.d/atd:session required pam_limits.so
/etc/pam.d/common-session:session required pam_limits.so
/etc/pam.d/cron:session required pam_limits.so
/etc/pam.d/login:session required pam_limits.so
/etc/pam.d/sshd:session required pam_limits.so
/etc/pam.d/su:session required pam_limits.so
/etc/pam.d/sudo:session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)
我的 file-max 似乎没问题:
$ cat /proc/sys/fs/file-max
762659
Run Code Online (Sandbox Code Playgroud)
然而,当我检查时,我仍然有默认的 1024 ulimit -a:
$ ulimit -a | grep files
open files (-n) 1024
Run Code Online (Sandbox Code Playgroud)
我还能检查什么?
服务器:RHEL 5.9 / smbd 3.0.33 - 客户端:各种,但都使用当前的 mount.cifs (5.2)
我已经解决了这个问题,但是追查这些错误代码真是一场噩梦,我觉得它需要通用文档。
症状:从一个特定的 cifs 客户端到 linux samba 服务器的不可预测的间歇性安装失败。我所有的 linux 客户端 pam_mount 用户都在登录时回家。随机地,偶尔地,家庭目录安装开始在一台机器上失败。登录和挂载继续在所有其他客户端上完美运行。最初我认为损坏的客户端上异常数量的活动导致 smbd 异常,但即使在使用停止后间歇性故障仍然存在。
尝试手动挂载失败并报告:
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Run Code Online (Sandbox Code Playgroud)
<debug enable="1"/>在 /etc/security/pam_mount.conf.xml 中设置以从 pam_mount 获取更多信息:
command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0)
pam_mount(mount.c:64): Errors from underlying mount program:
pam_mount(mount.c:68): mount error(12): Cannot allocate memory …Run Code Online (Sandbox Code Playgroud) 许多教程告诉您像这样配置 ssh 服务器:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Run Code Online (Sandbox Code Playgroud)
但是使用此设置,您无法使用 PAM,因为我计划将 2 Factor Auth 与 Google Authenticator(OTP 一次性密码)一起使用,我需要 PAM。
那么如何配置一个新的 debian jessie ssh 守护进程,如果我想阻止使用普通密码登录但仍然允许使用 PAM。
也许确切的问题是如何配置 pam 以禁止密码?
PAM 身份验证的详细信息
禁用基于 PAM 的密码身份验证相当不直观。几乎所有 GNU/Linux 发行版(Slackware 除外)以及 FreeBSD 都需要它。如果您不小心,您可以将 PasswordAuthentication 设置为“no”,并且仍然通过 PAM 身份验证仅使用密码登录。事实证明,您需要将“ChallengeResponseAuthentication”设置为“no”才能真正禁用 PAM 身份验证。FreeBSD 手册页有这样的说法,这可能有助于澄清情况:
请注意,如果 ChallengeResponseAuthentication 为“yes”,并且 sshd 的 PAM 身份验证策略包括 pam_unix(8),则无论 PasswordAuthentication 的值如何,都将允许通过质询-响应机制进行密码身份验证。
http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html
当我遇到权限问题时,我尝试以非 root 用户“coins”的身份访问我的 crontab,如以下提到 pam 配置的错误消息所示:
[coins@COINS-TEST ~]$ crontab -l
Authentication service cannot retrieve authentication info You (coins) are not allowed to access to (crontab) because of pam configuration.
Run Code Online (Sandbox Code Playgroud)
此 crontab 访问问题最常见的修复方法是什么?
我希望一些 PAM/LDAP 专家可以在这里帮助我。我最近在 Ubuntu Server 上设置了一个 LDAP 目录来保存我的客户(用于基于 Web 的系统)和员工(需要通过 SSH 登录)的帐户。
LDAP 身份验证工作正常。但是,我无法使帐户限制起作用:员工帐户将在2001和之间具有 ID ,2999并且将成为ssh-users组的成员以允许他们登录到服务器。
有问题的限制在/etc/ldap.conf、 和pam_min_uid、pam_max_uid和pam_groupdn。
pam_groupdn包含我ssh-users组的完整 DN 。 pam_min_uid=2000和pam_max_uid= 2999。
现在,我通过添加以下内容设法让它们工作:
account [success=1 default=ignore] pam_ldap.so
Run Code Online (Sandbox Code Playgroud)
中的pam_unix.so线以上/etc/pam.d/common-account。但是,本地 Unix 帐户无法登录:SSH 服务器在尝试后立即终止连接。
我已经在上面的文件中设置了pam_ldap.so模块sufficient,但是无效的用户收到一条消息,说他们无法登录,但无论如何它都会登录。
那么,如何为 LDAP 用户设置这些帐户限制,同时仍然允许 UNIX 用户登录?
你可能猜到我是 PAM 的新手,尽管我已经设法让“自动创建主目录”模块正常工作:-)
非常感谢,安迪
我想配置securetty来限制root直接访问。现在我很清楚我是否添加:
auth required pam_securetty.so
Run Code Online (Sandbox Code Playgroud)
进入/etc/pam.d/system-auth,在/etc/securetty中只保留“console”,ssh登录也会被禁止。如果我添加:
auth required pam_securetty.so
Run Code Online (Sandbox Code Playgroud)
进入/etc/pam.d/login,在/etc/securetty中只保留“console”,ssh登录不会被禁止。
现在我不是很清楚/etc/pam.d/login 和/etc/pam.d/system-auth 之间的区别。谁能给我一些参考或一些指导?非常感谢!
PS /etc/pam.d/login vs. /etc/pam.d/system-auth 也给出了一些关于它的信息,但我想获得更多信息以使我更清楚。
我正在我的个人 VPS 上设置 LDAP 身份验证,Ubuntu 有两个用于相同目的的软件包:libpam-ldap和libpam-ldapd. 我应该使用哪个?
一直在为 RedHat 盒研究一些安全强化程序,我想知道是否有可能阻止用户在密码过期后更改他的密码。
对于我们的一个客户,要求他们只能通过临时帐户访问服务器,这意味着一旦创建了用户凭据,密码必须在 4 小时内过期,一旦密码过期,只有 root 可以更改它.
对于第一个要求(密码在 4 小时后到期),我想可以通过设置passwordMaxAge = 144000来实现。但是我仍然找不到一种方法来防止用户更改过期密码,而无需关闭密码过期功能。
任何人都可以帮忙吗?
我正在配置一个系统,其中所有 IT 资源都可以通过单个用户密码对获得,无论是访问服务器上的 shell、登录到 Samba 域、WiFi、OpenVPN、Mantis 等(访问受管理的特定服务)按组成员身份或用户对象字段)。因为我们的网络中有个人数据,所以我们需要根据欧盟数据保护指令(或者更确切地说是波兰语版本)实施密码老化。
问题是 LDAP 中的 Samba 和 POSIX 帐户使用不同的密码散列和老化信息。虽然同步密码本身很容易(ldap password sync = Yesin smb.conf),但将密码老化添加到混合中会破坏事情:Samba 不更新 shadowLastChange。与obey pam restrictions = Yes创建一个系统,其中 Windows 用户不能更改旧密码,但如果我不使用它,则不会自动创建主目录。另一种方法是使用 LDAP 扩展操作来更改密码,但smbk5pwd模块也不对其进行设置。更糟糕的是,OpenLDAP 维护者不会更新它/接受补丁,因为该字段被认为已弃用。
所以,我的问题是,最好的解决方案是什么?它们的优缺点是什么?
使用 LDAPppolicy和内部 LDAP 密码老化?
ppolicy启用的 LDAP 一起使用?编写一个更新 LDAP 字段的更改密码脚本。(留下用户自己在不更改密码的情况下更新字段的可能性)