设置Apache Guacamole OpenLDAP身份验证

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

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

设置Apache Guacamole OpenLDAP身份验证

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

安装和设置鳄梨酱服务器

请按照下面的链接安装和设置鳄梨调味酱;

在Debian 10上安装Apache Guacamole

在Ubuntu 20.04上安装Apache Guacamole

安装和设置OpenLDAP服务器

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

在Ubuntu 20.04上安装和设置OpenLDAP Server

在CentOS 8上安装和设置OpenLDAP

安装Guacamole LDAP扩展

导航到 鳄梨酱发布页面 以及您正在运行的Guacamole版本的LDAP扩展名。例如,如果您正在运行Guacamole 1.3.0,则可以在 鳄梨酱1.30页

因此,下载适当版本的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/extensionsschema/
  • 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服务器以提供鳄梨酱身份验证

创建鳄梨酱OpenLDAP架构

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

鳄梨酱LDAP归档文件提供了一些架构文件,这些文件“定义了其他对像类, guacConfigGroup,其中包含特定连接的所有配置信息,并且可以与任意多个用户和组关联。每个连接由一个 guacConfigGroup 只有属于该组的成员(由mem​​​​ber属性指定)或关联组的成员的用户才能访问”。

鳄梨酱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"

创建用于鳄梨酱身份验证的OpenLDAP组

现在,尽可能多地将属性添加到单个OpenLDAP用户配置文件中,以定义如何允许它们对鳄梨酱进行身份验证,管理该组会更容易,从而可以将个人成员添加到特定的鳄梨酱组中。

首先,这些是我当前在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身份验证

接下来,继续为LDAP身份验证配置鳄梨酱。

编辑 /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))

保存并退出文件。

如果您使用主机名而不是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 Tomcat;

systemctl restart tomcat9.service

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

验证鳄梨酱OpenLDAP身份验证

现在,我们有三个用户;

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

作为SSH的用户之一登录 http://服务器IP:8080 /鳄梨酱

身份验证成功后,您将进入远程系统的SSH登录提示符。

设置Apache Guacamole OpenLDAP身份验证

同样,以RDP用户身份登录,在成功验证了鳄梨酱之后,您将直接进入远程桌面系统登录屏幕。

设置Apache Guacamole OpenLDAP身份验证
设置Apache Guacamole OpenLDAP身份验证

到此为止,我们的指南结束了如何设置Apache Guacamole OpenLDAP身份验证。

参考和进一步阅读

鳄梨酱LDAP身份验证

其他教程

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

如何配置DokuWiki OpenLDAP身份验证

配置ownCloud OpenLDAP身份验证

在MacOS X上通过OpenLDAP配置脱机身份验证

Sidebar