Directory ApacheDS
  1. Directory ApacheDS
  2. DIRSERVER-817

SimpleAuthenticator ehancements, including support for one-way hash for admin password in server.xml

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.0, 1.0.1, 1.0.2, 1.5.0, 1.5.1
    • Fix Version/s: 1.5.4
    • Component/s: core
    • Labels:
      None
    • Environment:
      N/A

      Description

      Currently persistent storage of passwords as one-way hashes is supported for partitions, but the admin password appears as cleartext in server.xml. I am submitting a patch that allows a one-way hash to be used in server.xml to protect the admin passord. Unfortunately if a user wants both of these features at the same time:
      a) one-way hashes used for password persistently stored in AD partition AND
      b) one-way hash used for admin password in server.xml
      then SimpleAuthenticator has to accept one-way hashes for both "userPassword" (persistently stored value) and "creds" (password provided in bind, which takes text from server.xml in the case where front-end of server authenticates to back-end in org.apache.directory.server.core.jndi.ServerContext) and compare them literally when both are one-way hashed. This effectively results in the password being in cleartext (or more exactly a cleartext alias) in server.xml again, but in a form that might put off potential hackers (a very big "might"). Hence end-users really end up choosing between option a) OR b) above.

      Also included in the patch is support I needed to get an inflexible legacy client to talk to AD. As AD doesn't support changing the DN of the admin users, and the client didn't support changing of the bind DN it used, I added a simple "java.naming.security.principal.alias" property which allowed specification of an alias for AD's admin user's DN.

      Not sure how much interest any of this to anyone else, but thought I'd raise a JIRA about the cleartext password in server.xml and may the patch available in case. The root problem seems to be the fairly strange way the the AD front-end needs the admin password from server.xml to bind to the back-end.

        Activity

        Hide
        Alex Karasulu added a comment -

        The admin password is not longer in the server.xml file.

        Show
        Alex Karasulu added a comment - The admin password is not longer in the server.xml file.
        Hide
        Emmanuel Lecharny added a comment -

        We will have to address this issue in the next release ...

        Show
        Emmanuel Lecharny added a comment - We will have to address this issue in the next release ...
        Hide
        Emmanuel Lecharny added a comment -

        After having worked on the SimpleAuthenticator, and regarding the evolutions we will implement in the way the configuration will be handled, I think that storing the password in the server.xml file is really a security breach.

        We should simply store the password (encrypted) into the server when creating the packages, up to the user to change it when he first start the server. May be the installer should ask for another password, otherwize the installation will abort.

        Show
        Emmanuel Lecharny added a comment - After having worked on the SimpleAuthenticator, and regarding the evolutions we will implement in the way the configuration will be handled, I think that storing the password in the server.xml file is really a security breach. We should simply store the password (encrypted) into the server when creating the packages, up to the user to change it when he first start the server. May be the installer should ask for another password, otherwize the installation will abort.
        Hide
        Emmanuel Lecharny added a comment -

        The best solution would be to ask the admin for a password when installling ADS (either in the GUI installer or in CL). As the password is stored into the system partition, it's enough to provide an empty password in the packages.

        Show
        Emmanuel Lecharny added a comment - The best solution would be to ask the admin for a password when installling ADS (either in the GUI installer or in CL). As the password is stored into the system partition, it's enough to provide an empty password in the packages.
        Hide
        Norval Hope added a comment -

        Certainly see your point about the dangers of accepting one-way-encrypted passwords, as then the hash effectively becomes the clear text password.

        However, I think there must be some way to avoid both
        a) accepting one-way hashes in bind requests and
        b) having a clear text password in server.xml.

        I seem to remember someone on the list mentioning OpenLDAP uses a scheme (hope my memory and paraphrasing are right) where the configured password in server.xml becomes irrelevant as soon as a password is persisted in the system partition, which seems a reasonable approach to me (although I'm by no means an expert - just don't like clear-text passwords in config files .

        Show
        Norval Hope added a comment - Certainly see your point about the dangers of accepting one-way-encrypted passwords, as then the hash effectively becomes the clear text password. However, I think there must be some way to avoid both a) accepting one-way hashes in bind requests and b) having a clear text password in server.xml. I seem to remember someone on the list mentioning OpenLDAP uses a scheme (hope my memory and paraphrasing are right) where the configured password in server.xml becomes irrelevant as soon as a password is persisted in the system partition, which seems a reasonable approach to me (although I'm by no means an expert - just don't like clear-text passwords in config files .
        Hide
        Emmanuel Lecharny added a comment -

        I think we should just summarize all the Password issue discussions and define a kind of specification about what should be implemented in 1.5.1. The good point is that Enrique is going to commit all it's SASL code as soon as 1.5.0 will be out, and this is also one of the reason we want to release this 1.5.0 : to be able to inject more features like SASL in this tagged version.

        someone can add or update a page on confluence where all these passwords issues can ba discussed ?

        Show
        Emmanuel Lecharny added a comment - I think we should just summarize all the Password issue discussions and define a kind of specification about what should be implemented in 1.5.1. The good point is that Enrique is going to commit all it's SASL code as soon as 1.5.0 will be out, and this is also one of the reason we want to release this 1.5.0 : to be able to inject more features like SASL in this tagged version. someone can add or update a page on confluence where all these passwords issues can ba discussed ?
        Hide
        Norval Hope added a comment -

        Certainly no need to hold up 1.5.0 for it. This issue perhaps throws up some points for discussion more then providing a patch of interest for al AD users.

        Show
        Norval Hope added a comment - Certainly no need to hold up 1.5.0 for it. This issue perhaps throws up some points for discussion more then providing a patch of interest for al AD users.
        Hide
        Stefan Zoerner added a comment -

        From my point of view, accepting one-way-encrypted password values in a bind request is a security risk. If someone has the opportunity to fetch the encrypted passwords for user entries (from an LDIF export for instance), s/he van simply bind to the server without knowing the real password.

        This taken, the advantage of storing the passwords one-way encrypted would be much smaller.

        Show
        Stefan Zoerner added a comment - From my point of view, accepting one-way-encrypted password values in a bind request is a security risk. If someone has the opportunity to fetch the encrypted passwords for user entries (from an LDIF export for instance), s/he van simply bind to the server without knowing the real password. This taken, the advantage of storing the passwords one-way encrypted would be much smaller.
        Hide
        Emmanuel Lecharny added a comment -

        What about including this patch in the next version ?

        Show
        Emmanuel Lecharny added a comment - What about including this patch in the next version ?

          People

          • Assignee:
            Unassigned
            Reporter:
            Norval Hope
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development