On Tue, May 5, 2020 at 7:12 AM Dan Naumov <dan.nau...@gmail.com> wrote:

> Hello folks.
>
> Regardless of whether you use MySQL, Postgres or MSSQL, your
> guacamole.properties configuration file still contains your database
> username and password in plain text so that Guacamole can connect to
> it. Considering the fact that to my understanding, the database itself
> contains connection details, including possible login info in plain
> text and the fact that guacamole.properties is world-readable by
> default, this seems like an extreme security risk. What's the
> appropriate way to hash or otherwise obscure the database password
> while still having Guacamole continue to work?
>
>
Short answer: you can't - it must be stored in plain-text.

TL;DR
The answer to this is to secure your database and you configuration files
in a way that insures that only Guacamole has access to this information.
The reality is that the password has to be stored in a format that it can
be used by the Java application in order to connect, which means that, at
best, you can, as you say, obscure the password.  Security by obscurity
doesn't add much real security - it's just making it slightly more
difficult to track down the information, and usually more for yourself than
any hacker.

If you're concerned about the contents of your database being secure (and
you should be):
- Secure root access to your systems.
- Limit who has access to the server running the database and the Guacamole
components
- Limit access to the DB itself using the built-in security for whatever DB
platform you're running
- Use dedicated system accounts for running the various Guacamole components
- Set ownership and permissions appropriately on the configuration files
(/etc/guacamole)
- Encrypt communications where possible (support for configuring encrypted
DB connections is in the works for Guacamole Client)

You mention that "guacamole.properties is world-readable by default" - this
is entirely up to you, and entirely within your control.  Saying it's
world-readable by default implies that we (the Guacamole project) ship a
guacamole.properties that is installed world-readable.  Since we (the
project) do not ship any default guacamole.properties, nor do we install a
default one as any part of our installation process, the ownership and
permissions of that file are left entirely up to you.  You should
absolutely change this - and i would argue permissions on the entire
/etc/guacamole directory - as part of the process of setting up the
software in a secure fashion.

-Nick

Reply via email to