Jason,

Like Mike I'm struggling a little to understand your particular use-case, although I get the sudden interest in remote operation.

Is it that you want to reduce admin overhead by having users self-manage multiple connections, or is there some other reason for letting them do their own thing? Also, do you want them to connect just to a specific desktop or two (from which I would have thought they'd ordinarily connect to whatever further remote system was permitted), or directly to other random systems within your network?

While I suspect you're really wanting to be able to provide a specific reduced-privilege template to certain users (which isn't available that I'm aware of) I wonder if there are other ways to achieve your goal?

For instance Guacamole does offer an ad-hoc connection facility https://guacamole.apache.org/doc/gug/adhoc-connections.html which may go a way towards simple self-management. Although I've not used it myself I don't believe it would expose the recording options etc directly to the user (although a savvy user might figure out how to do that I guess). You could just provide a sample URI with requisite parameters to users and explain how to make straightforward changes to that such as target machine / user etc.

If you were further concerned about limiting connections (damage control!) I guess you could get creative with iptables, and maybe run several instances of Guacamole for different user classes, but perhaps I've missed your point?

BTW, ex-UoC '90's?




On 16/03/2020 12:54 p.m., Jason Haar wrote:
This is a good opportunity for me to bring up several gotchas I had

I'm running a new fully patched CentOS-7 system with standard repo installs of apache-2.4.6, tomcat-7, guacd and with the WAR file from guacamole-1.1.0, along with the jdbc-mysql, header and quickconnect extensions.

Apache is configured with mod_auth_mellon (SAML) and uses a header to pass the username to guacamole-auth-header, and the reverse-proxy part is configured as

 <Location /guacamole/>
ProxyPass http://127.0.0.1:8080/guacamole/ flushpackets=on
ProxyPass http://127.0.0.1:8080/guacamole/
ProxyPassReverseCookiePath /guacamole/ /
</Location>

<Location /guacamole/websocket-tunnel>
Header set Connection Upgrade
Header set Upgrade %{HTTP_UPGRADE}e
ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel <http://127.0.0.1:8080/guacamole/websocket-tunnel> ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel <http://127.0.0.1:8080/guacamole/websocket-tunnel>
ProxyPassReverseCookiePath /guacamole/ /
</Location>

You will notice the WebSocket headers - I had real difficulties getting websocket to work - even though mod_proxy_wstunnel is loaded - so I hard-wired those two headers in and that seemed to fix things.

As far as your "only admins should edit connections" comment goes, yeah I know that is how guacamole intends to do things, but "CoronaVirus". I am doing this as a POC with the intention to allow arbitrary staff remote access from their personal/home computers to their workstations - so I'm testing giving all users "create new connections" privs (because they would also use it to access Cloud systems that can only be accessed from work IPs, etc). Frankly it's not looking like a workable option, it's one thing to expect "guacamole admins" to have good working knowledge of the product, but not hundreds of engineers and other "normal" staff.

Also, I think there'd need to be more global control over what is available in the "Connection" options. eg remove references to recording to disk or sharing drives, globally ignoring cert validation would be needed for quickconnect, etc. Great product - but I think I'm pushing beyond its target market

On Sat, Mar 14, 2020 at 12:04 PM Mike Jumper <[email protected] <mailto:[email protected]>> wrote:

    On Fri, Mar 13, 2020 at 3:26 PM Jason Haar <[email protected]
    <mailto:[email protected]>> wrote:

        This is a CentOS7 system running the downloaded install of
        guacamole-1.1.0 - but using the yum install guacd
        (guacd-1.1.0-1.el7.x86_64). Even if I have an older version,
        the error msg you see (Log in failed. Please reconnect and try
        again) is also misleading. No amount of reconnecting is going
        to fix this :-)


    In your specific case, perhaps not. In general, the expectation
    would be that entering invalid credentials could be resolved by
    reconnecting and entering the correct credentials, or by the
    administrator resolving whatever transient configuration issue is
    preventing credentials from being accepted. Guacamole has an error
    code for invalid credentials which produces that message, however
    there is no distinct error code for "your credentials are invalid,
    but also the server will never accept any of that type of
    credentials and reconnecting is pointless".

    There is an error code for when the remote desktop server is
    refusing the connection. That might be more appropriate for the
    case that the server is refusing to accept the credentials
    provided, but it does still advise the user to try again.

        Shouldn't that error literally be what guacd was reporting in
        the logs? Way more useful to the end-user


    No, that level of specific internal details shouldn't normally be
    exposed to the end-user. It needs to be exposed to the
    administrator, hence being logged, but the full nature of internal
    failures should not be exposed to users that wouldn't normally be
    aware of those failures.

        Oh yeah, it is behind an apache reverse proxy - so maybe that
        changes the error message?


    Not changing it per se, but it might be causing it. Can you share
    your Apache configuration? Also, what browser and version is being
    used when this occurs?

    In general, connection-specific error messages are passed through
    Guacamole-specific status codes via the Guacamole protocol,
    independent of the HTTP or WebSocket transport. The connection
    stability warning is distinct from those messages in that it's
    produced on the client side, based on whether the HTTP or
    WebSocket tunnels detect possible connection instability.

    - Mike



--
Cheers

Jason Haar
Information Security Manager, Trimble Navigation Ltd.
Phone: +1 408 481 8171
PGP Fingerprint: 7A2E 0407 C9A6 CAF6 2B9F 8422 C063 5EBB FE1D 66D1

Reply via email to