设置 Apache 鳄梨酱 OpenLDAP 身份验证

[ad_1]

在本教程中,您将学习如何设置 Apache 鳄梨酱 OpenLDAP 身份验证。 Apache Guacamole 是一个无客户端的 HTML5 基于 Web 的远程桌面网关,它通过 Web 浏览器提供对服务器和桌面的远程访问。 默认情况下,Guacamole 使用基本身份验证模块,该模块基本上涉及从 XML 文件读取用户名和密码。

除了使用简单的 XML 文件进行身份验证外, Apache Guacamole 还支持其他身份验证模块。 它提供了数据库支持的身份验证模块,能够从 Web 界面管理连接和用户,并且可以使用与 Guacamole Web 应用程序 guacamole-ext 一起提供的扩展 API 创建其他身份验证模块。

设置 Apache 鳄梨酱 OpenLDAP 身份验证

在您可以继续设置之前 Apache Guacamole OpenLDAP 身份验证,确保您拥有 Apache Guacamole 以及 LDAP 服务器启动并运行。

安装和设置鳄梨酱服务器

按照以下链接安装和设置 Guacamole;

安装 Apache Debian 10 上的鳄梨酱

安装 Apache Ubuntu 20.04 上的鳄梨酱

安装和设置 OpenLDAP 服务器

使用这些简单的指南来安装和设置 OpenLDAP 服务器

在 Ubuntu 20.04 上安装和设置 OpenLDAP 服务器

在 CentOS 8 上安装和设置 OpenLDAP

安装 Guacamole LDAP 扩展

导航到 Guacamole 版本页面和您正在运行的 Guacamole 版本的 LDAP 扩展。 例如,如果您正在运行 Guacamole 1.3.0,那么您可以在 Guacamole 1.30 页面上获取 LDAP 扩展。

因此,请下载适当版本的 LDAP 扩展。

wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-auth-ldap-1.3.0.tar.gz

LDAP 身份验证扩展打包为 .tar.gz 文件包含:

  • guacamole-auth-ldap-1.3.0.jar:Guacamole LDAP 支持扩展本身,必须放在 GUACAMOLE_HOME/extensions.schema/
  • LDAP schema files. 一个 .ldif 提供与 OpenLDAP 兼容的文件,以及 .schema 文件符合 RFC-2252。 这 .schema 文件可以转换成 .ldif 自动存档。

提取存档并复制 guacamole-auth-ldap-1.3.0.jar Guacamole 扩展目录中的文件, /etc/guacamole/extensions. 如果该目录尚不存在,请创建一个。

tar xzf guacamole-auth-ldap-1.3.0.tar.gz
cp guacamole-auth-ldap-1.3.0/guacamole-auth-ldap-1.3.0.jar /etc/guacamole/extensions/guacamole-auth-ldap.jar

配置 OpenLDAP 服务器以提供 Guacamole 身份验证

创建鳄梨酱 OpenLDAP 架构

接下来,为了仅允许具有特定属性或属于特定(例如 Guacamole)组的特定用户能够使用 OpenLDAP 进行身份验证,您需要更新 OpenLDAP 数据库。

Guacamole LDAP 档案提供了一些模式文件,它们“定义了一个额外的对象类, guacConfigGroup,其中包含特定连接的所有配置信息,并且可以与任意多个用户和组关联。 由一个定义的每个连接 guacConfigGroup 将只能由该组的成员(使用 member 属性指定)或关联组的成员的用户访问“。

Guacamole LDAP 模式提供了一个对象类类型,称为 guacConfigGroup, 如上所述。

然后,此对象类类型将提供诸如以下属性:

  • guacConfigProtocol:定义连接协议,例如RDP、SSH、VNC
  • guacConfigGroup:定义与指定协议关联的连接参数,如远程主机名、连接端口。

请参阅下面的示例,下面的连接详细信息进一步说明了上述内容。

        <connection name="CentOS-Server">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.56.156</param>
            <param name="port">22</param>
        </connection>

因此,将 Guacamole LDAP 扩展架构文件复制到您的 OpenLDAP 服务器。 更换 usernameldap-serverusernameaddress 在下面的命令中打开您的 OpenLDAP 服务器。

scp -r guacamole-auth-ldap-1.3.0/schema [email protected]:

例如,将这些文件复制到我的 LDAP 服务器上的 root 用户帐户;

scp -r guacamole-auth-ldap-1.3.0/schema [email protected]:

通过运行以下命令将 Guacamole LDAP 架构详细信息加载到 OpenLDAP 数据库中;

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f schema/guacConfigGroup.ldif

如果命令运行成功,您应该会看到这样的输出;

adding new entry "cn=guacConfigGroup,cn=schema,cn=config"

为 Guacamole 身份验证创建 OpenLDAP 组

现在可以尽可能多地将属性添加到单个 OpenLDAP 用户配置文件中,以定义如何允许他们对 Guacamole 进行身份验证,管理这个组更容易,以便将单个成员添加到特定的 Guacamole 组。

首先,这些是我目前在 OpenLDAP 数据库中的用户;

ldapsearch -Y EXTERNAL -H ldapi:/// -s one -b "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com" -LLL -Q uid
dn: uid=janedoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
uid: janedoe

dn: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
uid: johndoe

dn: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
uid: koromicha
ldapsearch -Y EXTERNAL -H ldapi:/// -s one -b "ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com" -LLL -Q dn
dn: cn=janedoe,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

dn: cn=johndoe,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

dn: cn=koromicha,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

所以我要创建两个组,分别用于 SSH 和 RDP 连接。

SSH 组配置;

vim guacamole-ssh-connection.ldif
dn: cn=guacSSH,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com
objectClass: guacConfigGroup
objectClass: groupOfNames
cn: guacSSH
guacConfigProtocol: ssh
guacConfigParameter: hostname=192.168.56.180
guacConfigParameter: port=22
member: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
member: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com

RDP组配置;

vim guacamole-rdp-connection.ldif
dn: cn=guacRDP,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com
objectClass: guacConfigGroup
objectClass: groupOfNames
cn: guacRDP
guacConfigProtocol: rdp
guacConfigParameter: hostname=192.168.56.122
guacConfigParameter: port=3389
guacConfigParameter: ignore-cert=true
member: uid=janedoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com

在使用上述详细信息更新数据库之前,请确保加载了 membeof 模块。 有关更多详细信息,您可以查看我们关于如何在 OpenLDAP 中创建组的指南。

使用上面的 Guacamole 组配置更新数据库;

ldapadd -Y EXTERNAL -H ldapi:/// -f guacamole-ssh-connection.ldif -Q

输出;

adding new entry "cn=guacSSH,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
ldapadd -Y EXTERNAL -H ldapi:/// -f guacamole-rdp-connection.ldif -Q

输出;

adding new entry "cn=guacRDP,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"

检查组的成员资格;

ldapsearch -H ldapi:/// -Y EXTERNAL -LLL -b "dc=ldapmaster,dc=kifarunix-demo,dc=com" uid=* memberOf -Q
dn: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
memberOf: cn=guacSSH,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

dn: uid=janedoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
memberOf: cn=guacRDP,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

dn: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
memberOf: cn=guacSSH,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com

为 OpenLDAP 身份验证配置 Guacamole

接下来,继续为 LDAP 身份验证配置 Guacamole。

编辑 /etc/guacamole/guacamole.properties 并添加以下配置选项来定义如何连接到 LDAP 服务器进行身份验证。

如果您查看我们之前关于设置鳄梨酱的指南,以下是我们在此文件中设置的选项;

guacd-hostname: localhost
guacd-port:     4822
user-mapping:   /etc/guacamole/user-mapping.xml
auth-provider:  net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

因此,为了启用 LDAP 身份验证,我们将添加以下行;

ldap-hostname: ldapmaster.kifarunix-demo.com
ldap-encryption-method: starttls
ldap-search-bind-dn: cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap-search-bind-password: [email protected]
ldap-user-base-dn: dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap-username-attribute: uid
ldap-member-attribute: member
ldap-member-attribute-type: dn
ldap-config-base-dn: ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com
ldap-user-search-filter: (|(memberOf=cn=guacSSH,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com)(memberOf=cn=guacRDP,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com))

Save 并退出文件。

如果您使用主机名而不是 IP 地址,请确保 LDAP 服务器主机名是可解析的。

另请注意,ldap 选项基于我们的 LDAP 服务器配置。

从您的 LDAP 服务器下载 TLS 证书;

openssl s_client -connect ldapmaster.kifarunix-demo.com:389 -starttls ldap -showcerts < /dev/null | openssl x509 -text | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

从命令输出中,复制证书 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 并将其放入文件中;

/etc/ssl/certs/ldapcert.pem
-----BEGIN CERTIFICATE-----
MIIDvzCCAqegAwIBAgIUc8imlOVhEej453dXtvacn7krg1MwDQYJKoZIhvcNAQEL
...
...
Igf9K1e9M0Q+j2XEsTeCYVU/v0Jt0kER0+V/NM0IrDOX+6kRz6DNsZrwcMEf5Yvp
ARWZ
-----END CERTIFICATE-----

将证书添加到 Java 的信任库中;

keytool -importcert -alias ldapmaster.kifarunix-demo.com -file /etc/ssl/certs/ldapcert.pem -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -storepass changeit -noprompt

重新开始 Apache 雄猫;

systemctl restart tomcat9.service

请注意,相对于任何其他身份验证扩展,使用从 XML 文件读取用户的默认身份验证方法始终处于最后优先级.

验证鳄梨酱 OpenLDAP 身份验证

现在,我们有三个用户;

  • koromicha 和 johndoe 被允许通过 SSH 连接到服务器 192.168.57.3
  • janedoe 被允许 RDP 到 192.168.56.122

作为 SSH 的用户之一登录 https://server-IP:8080/guacamole.

认证成功后,您应该登陆远程系统的SSH登录提示;

同样,以 RDP 用户身份登录,并在成功验证 Guacamole 后直接进入远程桌面系统登录屏幕。

我们关于如何设置的指南到此结束 Apache 鳄梨酱 OpenLDAP 身份验证。

参考和进一步阅读

鳄梨酱 LDAP 身份验证

在 pfSense 上配置 Squid 代理 OpenLDAP 身份验证

如何配置 DokuWiki OpenLDAP 身份验证

配置 ownCloud OpenLDAP 身份验证

在 MacOS X 上通过 OpenLDAP 配置离线身份验证

[ad_2]

Related Posts