免责声明:我是 ldap 的新手,所以希望我没有做任何重大错误!
目的:集中用户凭证并限制客户端登录到某些机器。
我在一台全新的 Ubuntu 14.04 服务器上使用以下命令设置了准系统 openLDAP 服务器。本质上,安装 LDAP 并进行架构更改以启用host
用户的属性:
# Install ldap
apt-get install -y slapd ldap-utils ldapscripts
# Modify the schema so we can use the host attribute for users
grep -P '^include.+?\.schema' /usr/share/slapd/slapd.conf > ./schema_convert.conf
echo -e "include\t\t/etc/ldap/schema/ldapns.schema" >> ./schema_convert.conf
# Convert the schema into LDIF
mkdir -p ./ldif_output
index=$(slapcat -f ./schema_convert.conf -F ./ldif_output -n 0 | grep ldapns,cn=schema | sed -re 's/^\S+\s+//')
slapcat -f schema_convert.conf -F ldif_output -n0 -H \
ldap:///${index} -l cn=ldapns.ldif
# Modify the file, ready for importing
sed -i -r \
-e 's/^dn:.+$/dn: '${index/\{*\}/}'/' \
-e 's/^cn:.+$/cn: ldapns/' \
-e '/^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp):/d' \
cn=ldapns.ldif
# Add the schema to the slapd-config
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=ldapns.ldif
我添加了几个组和用户。我的一个用户将host
属性值设置为我的其中一台机器 ( thor
)。
我已经thor
将venus
它们配置为通过我的 ldap 服务器进行身份验证 - 这样做有效。然后我修改了/etc/ldap.conf
,thor
因此venus
取消了注释:
pam_check_host_attr yes
我曾希望当我尝试登录时venus
不会允许我,因为用户仅在我的 ldap 服务器的属性thor
中设置了。host
您能否提供有关如何限制用户只能登录到 1 个特定主机的见解?
答案1
事实证明,我必须/etc/nsswitch
按照说明修改我的文件,/usr/share/doc/libpam-ldap/README.Debian
其中说明:
如果您想使用“pam_check_host_attr”功能,请确保“pam_unix.so”不会通过名称服务开关 (NSS) 提供有效的“帐户”,这会覆盖您的 LDAP 配置。不要在 /etc/nsswitch.conf 中使用“ldap”作为“shadow”,只需使用“shadow: files”。
因此,当我将/etc/nsswitch
文件从以下内容更改时:
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns mdns4_minimal [NOTFOUND=return]
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
到:
passwd: files ldap
group: files ldap
shadow: files
hosts: files dns mdns4_minimal [NOTFOUND=return]
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
并更新了 PAM:
pam-auth-update
基于主机的身份验证现在有效。