我是 Azure 的 Active Directory 服务的新手,目前它的抽象对我来说有点困惑。我想做的是让我的所有 AWS EC2 服务器 (Linux) 通过 LDAP (用于 SSH 连接) 进行身份验证。
我已经成功设置了 SLDAP,公共 IP 地址已生成,并且我已将其绑定到 FQDN (dc.mydomain.com)。在我的 AWS EC2 Linux 服务器上,我安装了 sssd 和 realmd 以便能够完成 SSH AD 身份验证。
这是我使用的 ldap 字符串,用于确认 sldap 正常工作:
ldapsearch -H ldaps://directory.mydomain.com:636 -Z -d 5 -x -b "dc=mydomain,dc=com" -D "[email protected]" -W
上述命令提供了有关 Azure AD 上列出的 DN、CN、OU、DC 的所有信息。
当我尝试在 CENTOS7 上使用 PAM 时,似乎无法binddn
解析任何问题results()
——我使用的肯定dn
存在,因为它是 ldapsearch 结果中显示的那个。
MS Azure 对此有限制吗?
答案1
没有文档指出具有安全 LDAP 的 Azure AD DS 存在限制。
从文档中可以看出,它只说您可以通过 Internet 使用安全 LDAP 访问托管域。此外,它没有说明应用程序可以使用它来针对 Azure AD 进行身份验证。
作为替代方案,你可以从下面的链接中了解使用 Azure AD 进行 Linux 登录,而不是使用带有 LDAPS 的 Azure AD DS。你甚至可以从中找到示例代码这里。
https://channel9.msdn.com/Blogs/Open/Using-Azure-AD-for-Linux-logins
更新
它通过在我的 RHEL 7.3 上使用 Azure AD 进行 SSH 登录来实现。以下是使 Azure AD 适用于 Linux 登录的分步指南。
先决条件
- 已创建 Azure AD 目录,并且存在一些用户
- Node.js 和 npm 安装在 Linux VM 中
- 已创建目录应用程序(本机客户端类型),并且您拥有客户端 ID
- 您的 PAM 发行版有 pam_exec.so
用户配置
您需要使用以下命令来添加 Azure AD 帐户,以确保您将要登录的用户对 NSS 可见。
sudo useradd -m <user>
安装
您可以从以下位置下载 tarfilehttps://github.com/bureado/aad-login和:
sudo tar xzf aad-login_0.1.tar.gz -C /
cd /opt/aad-login
sudo npm install
配置
- 打开/opt/aad-login/aad-login.js,并更改以下项目
var 目录 = '********.onmicrosoft.com'; // 目录的域名
var 客户端 ID = '****-****-****-*****-***********'; //在 Azure AD 中注册的应用程序的客户端 ID
authorityHostUrl : 'https://login.microsoftonline.com‘ //端点的最新URL
- 打开 /etc/pam.d/sshd 并添加以下规则
身份验证充分 pam_exec.so reveal_authtok /usr/local/bin/aad-login
笔记:对于 Utuntu,您需要在 /etc/pam.d/common-auth 中添加规则
在 CentOS 7.x(和其他启用 SELinux 的发行版)中,您需要通过运行以下命令来禁用该策略:
sudo setenforce 0