https://sourceforge.net/p/guacamole/discussion/1110834/thread/666f7a9f/
From: Stewart Alexander [mailto:[email protected]] Sent: 03 March 2020 12:47 To: [email protected] Subject: How many users can use Guacamole simultaneously? Hi all, Does anyone know how many users can login through Guacamole simultaneously? What are the bottlenecks? Thank you, Stewart Alexander ------ Original Message ------ From: "Fabio Corsi" <[email protected]<mailto:[email protected]>> To: [email protected]<mailto:[email protected]> Sent: 3/2/2020 5:01:07 PM Subject: Re: ldap-user-search-filter problem CAUTION: This email originated from outside your organization. Exercise caution when opening attachments or clicking links, especially from unknown senders. Hi, I was wondering if anyone could provide some insight on this issue. To recap my previous message I have a ldap-user-search-filter set to (&(objectClass=person)(memberof=cn=guacusers,ou=groups,dc=asrc,dc=crossroads)) however any valid LDAP user is allowed to login on the Guacamole web page. My configuration: Guacamole 1.1.0, Ubuntu 18.04, openLDAP (libldap-2.4-2:amd64) on a separate Ubuntu 18.04 VM. since my first message I’ve done some additional investigation into the problem. By looking at the logs on my LDAP server I can see that the filters are passed on to the LDAP server and they do return the correct number of entries. There are a couple of things that seem strange to me: * Not sure why the "(|(uid=*)) clause is added to the main group filter defined in my configuration * For the user in the guacusers group the SeeAlso seems to expand to all the object of class groupOfNames in my directory Here are the log entries for the user that is in the guacusers group: slapd[904]: conn=9470 fd=48 ACCEPT from IP=10.16.33.12:52422 (IP=0.0.0.0:389) slapd[904]: conn=9470 op=0 BIND dn="uid=user_in_guacusers,ou=users,dc=my,dc=domain" method=128 slapd[904]: conn=9470 op=0 BIND dn="uid=user_in_guacusers,ou=users,dc=my,dc=domain" mech=SIMPLE ssf=0 slapd[904]: conn=9470 op=0 RESULT tag=97 err=0 text= slapd[904]: conn=9470 op=1 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(member=uid=user_in_guacusers,ou=users,dc=my,dc=domain)))" slapd[904]: conn=9470 op=1 SEARCH RESULT tag=101 err=0 nentries=5 text= slapd[904]: conn=9470 fd=48 closed (connection lost) slapd[904]: conn=9471 fd=48 ACCEPT from IP=10.16.33.12:52424 (IP=0.0.0.0:389) slapd[904]: conn=9471 op=0 BIND dn="uid=user_in_guacusers,ou=users,dc=my,dc=domain" method=128 slapd[904]: conn=9471 op=0 BIND dn="uid=user_in_guacusers,ou=users,dc=my,dc=domain" mech=SIMPLE ssf=0 slapd[904]: conn=9471 op=0 RESULT tag=97 err=0 text= slapd[904]: conn=9471 op=1 SRCH base="ou=users,dc=my,dc=domain" scope=2 deref=0 filter="(&(&(objectClass=person)(memberOf=cn=guacusers,ou=groups,dc=my,dc=domain))(|(uid=*)))" slapd[904]: conn=9471 op=1 SEARCH RESULT tag=101 err=0 nentries=6 text= slapd[904]: conn=9471 op=2 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(cn=*)))" slapd[904]: conn=9471 op=2 SEARCH RESULT tag=101 err=0 nentries=46 text= slapd[904]: conn=9471 op=3 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(member=uid=user_in_guacusers,ou=users,dc=my,dc=domain)))" slapd[904]: conn=9471 op=3 SEARCH RESULT tag=101 err=0 nentries=5 text= slapd[904]: conn=9471 op=4 SRCH base="ou=guac_config,dc=my,dc=domain" scope=2 deref=0 filter="(&(objectClass=guacConfigGroup)(|(member=uid=user_in_guacusers,ou=users,dc=my,dc=domain)(seeAlso=cn=group1,ou=groups,dc=my,dc=domain)(seeAlso=cn=group2,ou=groups,dc=my,dc=domain)(seeAlso=cn=group3,ou=groups,dc=my,dc=domain)(seeAlso=cn=group4,ou=groups,dc=my,dc=domain)(seeAlso=cn=guacusers,ou=groups,dc=my,dc=domain)))" slapd[904]: conn=9471 op=4 SEARCH RESULT tag=101 err=0 nentries=1 text= And for the user that is not in the guacusers group: slapd[904]: conn=9478 fd=88 ACCEPT from IP=10.16.33.12:52430 (IP=0.0.0.0:389) slapd[904]: conn=9478 op=0 BIND dn="uid=user_not_in_guacusers,ou=users,dc=my,dc=domain" method=128 slapd[904]: conn=9478 op=0 BIND dn="uid=user_not_in_guacusers,ou=users,dc=my,dc=domain" mech=SIMPLE ssf=0 slapd[904]: conn=9478 op=0 RESULT tag=97 err=0 text= slapd[904]: conn=9478 op=1 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(member=uid=user_not_in_guacusers,ou=users,dc=my,dc=domain)))" slapd[904]: conn=9478 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text= slapd[904]: conn=9478 fd=88 closed (connection lost) slapd[904]: conn=9479 fd=88 ACCEPT from IP=10.16.33.12:52432 (IP=0.0.0.0:389) slapd[904]: conn=9479 op=0 BIND dn="uid=user_not_in_guacusers,ou=users,dc=my,dc=domain" method=128 slapd[904]: conn=9479 op=0 BIND dn="uid=user_not_in_guacusers,ou=users,dc=my,dc=domain" mech=SIMPLE ssf=0 slapd[904]: conn=9479 op=0 RESULT tag=97 err=0 text= slapd[904]: conn=9479 op=1 SRCH base="ou=users,dc=my,dc=domain" scope=2 deref=0 filter="(&(&(objectClass=person)(memberOf=cn=guacusers,ou=groups,dc=my,dc=domain))(|(uid=*)))" slapd[904]: conn=9479 op=1 SEARCH RESULT tag=101 err=0 nentries=6 text= slapd[904]: conn=9479 op=2 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(cn=*)))" slapd[904]: conn=9479 op=2 SEARCH RESULT tag=101 err=0 nentries=46 text= slapd[904]: conn=9479 op=3 SRCH base="ou=groups,dc=my,dc=domain" scope=2 deref=0 filter="(&(!(objectClass=guacConfigGroup))(|(member=uid=user_not_in_guacusers,ou=users,dc=my,dc=domain)))" slapd[904]: conn=9479 op=3 SEARCH RESULT tag=101 err=0 nentries=0 text= slapd[904]: conn=9479 op=4 SRCH base="ou=guac_config,dc=my,dc=domain" scope=2 deref=0 filter="(&(objectClass=guacConfigGroup)(|(member=uid=user_not_in_guacusers,ou=users,dc=my,dc=domain)))" slapd[904]: conn=9479 op=4 SEARCH RESULT tag=101 err=0 nentries=0 text= And this is my full configuration file: # Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 #skip-if-unavailable: mysql, ldap api-session-timeout: 15 # LDAP properties ldap-hostname: configserver.my.domain ldap-port: 389 ldap-user-base-dn: ou=users,dc=my,dc=domain ldap-username-attribute: uid ldap-user-search-filter: (&(objectClass=person)(memberof=cn=guacusers,ou=groups,dc=my,dc=domain)) ldap-config-base-dn: ou=guac_config,dc=my,dc=domain ldap-group-base-dn: ou=groups,dc=my,dc=domain # MySQL properties mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole_db mysql-username: guacamole_user mysql-password: MySecret Thanks, Fabio On Feb 25, 2020, at 10:46, Fabio Corsi <[email protected]<mailto:[email protected]>> wrote: We're using openLDAP (libldap-2.4-2:amd64) on a separate Ubuntu 18.04 installation. Many thanks, Fabio On Feb 24, 2020, at 22:57, Mike Jumper <[email protected]<mailto:[email protected]>> wrote: On Mon, Feb 24, 2020, 19:52 Fabio Corsi <[email protected]<mailto:[email protected]>> wrote: Hi, I’ve a fresh install of Guacamole 1.1.0 on Ubuntu 18.0.4 Server. I have the LDAP extension installed (along with the MySQL one) and I’ve defined connections directly into LDAP. Everything works just fine, users are authenticated and are allowed the proper connections, however I would like to allow only users MemberOf a one LDAP group (e.g. guacusers) to login to my Guacamole site. I’m using ldap-user-search-filter, but it does not seem to work. As of now any active users in my LDAP directory can login into the Guacamole site. No connections are displayed for the users that I would like to disallow, but nevertheless they can still login... This is the LDAP configuration in my guacamole.properties<https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fguacamole.properties&c=E,1,E8cBBI4_vdYlMnL8xX-O_ehFfvRAlR9c2oz1h0iY4s3lZ_2UFsjyvQ1hDs_Pk46WxCb8Ahl2ZPjzLWyNQTjO8Ct18O1NBHKGKM6iMBOV8ksJlE5VdPND&typo=1> # LDAP properties ldap-hostname: configserver.my.domain ldap-port: 389 ldap-user-base-dn: ou=users,dc=my,dc=domain ldap-username-attribute: uid ldap-user-search-filter: (&(objectClass=person)(memberof=cn=guacusers,ou=groups,dc=asrc,dc=crossroads)) ldap-config-base-dn: ou=guac_config,dc=my,dc=domain ldap-group-base-dn: ou=groups,dc=my,dc=domain And I have previously used this same configuration some time back when I was testing version 0.9.14 and it seemed to be working... Note that if I run the same filter on my LDAP server, e.g.: ldapsearch -x -LLL -H ldap:/// -b "ou=users,dc=my,dc=domain" -s sub "(memberof=cn=guacusers,ou=groups,dc=my,dc=domain)” I get the expected result…. I’ve also tried adding other specifiers to the filter, like (memberof=cn=guacusers,ou=groups,dc=my,dc=domain) they all work when I query the LDAP server with ldapsearch, but don’t seem to have any effect when I use them in Guacamole. What LDAP server is being used? - Mike
