Difference between revisions of "Troubleshoooting LDAP"

From IVS Wiki
Jump to: navigation, search
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
Often times, configuring the VALT appliance for LDAP authentication can prove challenging. Most often these issues are caused by communications problems, incorrect credentials or using the wrong distinguished name. In order to troubleshoot the issue, it's recommended you take the VALT application out of the equation.
+
{{Aside | content =
 +
Note that this page pertains to troubleshooting LDAP for VALT 5.x versions.}}
 +
__TOC__
 +
{{Article | content =
 +
<div class="floating_card">Often times, configuring the VALT appliance for LDAP authentication can prove challenging. Most often these issues are caused by communications problems, incorrect credentials or using the wrong distinguished name. In order to troubleshoot the issue, it's recommended you take the VALT application out of the equation.</div>
 
    
 
    
 
=Validate Connection=
 
=Validate Connection=
<div class="section">
 
 
# Connect to the VALT server via SSH or access the terminal.
 
# Connect to the VALT server via SSH or access the terminal.
 
#: ''If accessing via the terminal, you will need to exit to Shell.''
 
#: ''If accessing via the terminal, you will need to exit to Shell.''
Line 14: Line 17:
 
#* This command should return: '''Connection to ''ldapserver'' 636 port [tcp/ldaps] succeeded!'''.
 
#* This command should return: '''Connection to ''ldapserver'' 636 port [tcp/ldaps] succeeded!'''.
 
#* If the appropriate command returns a failure message, the VALT server is unable to communicate with the LDAP server on the appropriate port. This could be caused by a firewall or other security appliance between the two servers, or you may have the incorrect LDAP server. You should contact the customer's IT department, and notify them that the VALT server is unable to connect to the provided LDAP server on the appropriate port.
 
#* If the appropriate command returns a failure message, the VALT server is unable to communicate with the LDAP server on the appropriate port. This could be caused by a firewall or other security appliance between the two servers, or you may have the incorrect LDAP server. You should contact the customer's IT department, and notify them that the VALT server is unable to connect to the provided LDAP server on the appropriate port.
</div>
+
 
 +
<hr>
  
 
=Validate LDAP Query/Credentials=
 
=Validate LDAP Query/Credentials=
<div class="section">
 
 
After verifying communication between the VALT server and the LDAP server, you can validate the credentials you were provided by attempting to connect to the LDAP server from the command line.
 
After verifying communication between the VALT server and the LDAP server, you can validate the credentials you were provided by attempting to connect to the LDAP server from the command line.
 
# Connect to the VALT server via SSH or access the terminal.
 
# Connect to the VALT server via SSH or access the terminal.
Line 37: Line 40:
 
#* If you received a message stating '''Invalid credentials''', the username or password you entered is incorrect. You will need to contact the customer's IT department.
 
#* If you received a message stating '''Invalid credentials''', the username or password you entered is incorrect. You will need to contact the customer's IT department.
 
#*: {{img | file = LDAPT2.png}}
 
#*: {{img | file = LDAPT2.png}}
</div>
+
 
 +
<hr>
  
 
=Validate LDAP Server Database Entry=
 
=Validate LDAP Server Database Entry=
<div class="section">
 
 
If the Server and Credentials are correct, make sure that the database entry has the correct information
 
If the Server and Credentials are correct, make sure that the database entry has the correct information
 
# Go to the phpmyadmin interface for the server <code>http://<b><server_ip></b>/phpmyadmin</code>
 
# Go to the phpmyadmin interface for the server <code>http://<b><server_ip></b>/phpmyadmin</code>
 
# In the V3 database, find the table called ldap_server and copy the contents of the field "base_dn" into the field "dn" if not already present
 
# In the V3 database, find the table called ldap_server and copy the contents of the field "base_dn" into the field "dn" if not already present
 
# Test the ldap import again and see if it is working now
 
# Test the ldap import again and see if it is working now
</div>
+
 
 +
<hr>
  
 
=Verify Distinguished Name of Groups=
 
=Verify Distinguished Name of Groups=
<div class="section">
 
 
If you believe the distinguished name of the group is incorrect, you can verify it by accessing the customer's directory using [http://www.ldapadmin.org/ LDAP Admin] and the credentials they have provided you.
 
If you believe the distinguished name of the group is incorrect, you can verify it by accessing the customer's directory using [http://www.ldapadmin.org/ LDAP Admin] and the credentials they have provided you.
 
# Download and run LDAP Admin.
 
# Download and run LDAP Admin.
Line 68: Line 71:
 
#* If you are able to locate the group, click on the group, and the DN will be displayed on the right hand side of the window.
 
#* If you are able to locate the group, click on the group, and the DN will be displayed on the right hand side of the window.
 
#* If you are unable to locate the group, contact the customer's IT department.
 
#* If you are unable to locate the group, contact the customer's IT department.
</div>
+
 
 +
<hr>
  
 
=LDAPS Security Certificate=
 
=LDAPS Security Certificate=
<div class="section">
 
 
If you are connecting over LDAPS, you may experience an issue with security certificate presented by the LDAP server being untrusted by the VALT appliance.
 
If you are connecting over LDAPS, you may experience an issue with security certificate presented by the LDAP server being untrusted by the VALT appliance.
 
===Verify the Issue===
 
===Verify the Issue===
Line 94: Line 97:
 
# Answer '''Y''' to save.
 
# Answer '''Y''' to save.
 
# Press '''Enter''' to keep the file name the same.
 
# Press '''Enter''' to keep the file name the same.
</div>
+
 
 +
<hr>
  
 
=TLS 1.2 Issues=
 
=TLS 1.2 Issues=
<div class="section">
 
 
There is a known compatibility issue between OpenLDAP and certain versions of Windows Server. This issue was resolved in hotfixes, however you if you are able to verify all the information is correct and you are still unable to submit an LDAP query via LDAPS, this may be the cause. The issue stems from a compatibility problem related to TLS 1.2. By disabling TLS version 1.2, you can force LDAPS to use TLS version 1.1.  
 
There is a known compatibility issue between OpenLDAP and certain versions of Windows Server. This issue was resolved in hotfixes, however you if you are able to verify all the information is correct and you are still unable to submit an LDAP query via LDAPS, this may be the cause. The issue stems from a compatibility problem related to TLS 1.2. By disabling TLS version 1.2, you can force LDAPS to use TLS version 1.1.  
  
Line 119: Line 122:
  
 
''This list of files was from old notes and may not be 100% accurate''
 
''This list of files was from old notes and may not be 100% accurate''
</div>
+
 
 +
<hr>
  
 
=Unable to Connect to MYSQL Database=
 
=Unable to Connect to MYSQL Database=
<div class="section">
 
 
This issue can occur after updating VALT to version 5.2 if the MySql config has been changed to listen on an interface other than the loopback address. This is not a common config, however this has been done in the past on several VALT implementations in order to allow customers to access the database directly to run queries or reports.
 
This issue can occur after updating VALT to version 5.2 if the MySql config has been changed to listen on an interface other than the loopback address. This is not a common config, however this has been done in the past on several VALT implementations in order to allow customers to access the database directly to run queries or reports.
  
Line 133: Line 136:
 
# Enter '''Y''' to save.
 
# Enter '''Y''' to save.
 
# Do not change the file name, and press Enter
 
# Do not change the file name, and press Enter
</div>
+
 
 +
<hr>
  
 
=LDAP Jar Debug=
 
=LDAP Jar Debug=
<div class="section">
 
 
The below commands are used to help troubleshoot LDAP issues. You will need to substitute the correct information into the string in order for the command to function properly.
 
The below commands are used to help troubleshoot LDAP issues. You will need to substitute the correct information into the string in order for the command to function properly.
  
Line 148: Line 151:
  
 
Using another special character check out [https://www.urlencoder.org/ this website] to get the correct format
 
Using another special character check out [https://www.urlencoder.org/ this website] to get the correct format
</div>
+
 
{{img | file = LdapJarDebug.png | width=1500px}}
+
{{Aside | content = To see an example, [{{filepath:LdapJarDebug.png}} click here].}}
 +
<hr>
  
 
=Disable LDAPS SSL Check=
 
=Disable LDAPS SSL Check=
<div class="section">
 
 
#Enter the below string at the bottom of <pre>/var/www/v3/app/config/parameters.yml</pre>
 
#Enter the below string at the bottom of <pre>/var/www/v3/app/config/parameters.yml</pre>
 
  disable_ldaps_ssl_check: true
 
  disable_ldaps_ssl_check: true
</div>
+
}}

Latest revision as of 07:34, 1 November 2024

Note that this page pertains to troubleshooting LDAP for VALT 5.x versions.

Often times, configuring the VALT appliance for LDAP authentication can prove challenging. Most often these issues are caused by communications problems, incorrect credentials or using the wrong distinguished name. In order to troubleshoot the issue, it's recommended you take the VALT application out of the equation.

Validate Connection

  1. Connect to the VALT server via SSH or access the terminal.
    If accessing via the terminal, you will need to exit to Shell.
  2. Ping the LDAP server:
    EX: Ping ldap.ipivs.com
    • If the server responds, you are able communicate with that server.
    • If the server does not respond, you may have a networking issue, or ICMP may be blocked. You may need to contact the customer's IT department to investigate. If ICMP is just blocked, you do not need ICMP in order to perform LDAP queries.
  3. Verify you have the correct server address, and check if the server is set to accept queries via LDAP or LDAPS.
  4. Check to see if the VALT server can communicate with the LDAP server on the appropriate port:
    For LDAP: nc -zv ldapserver 389
    • This command should return: Connection to ldapserver 389 port [tcp/ldap] succeeded!.
  5. For LDAPS:
    nc -zv ldapserver 636
    • This command should return: Connection to ldapserver 636 port [tcp/ldaps] succeeded!.
    • If the appropriate command returns a failure message, the VALT server is unable to communicate with the LDAP server on the appropriate port. This could be caused by a firewall or other security appliance between the two servers, or you may have the incorrect LDAP server. You should contact the customer's IT department, and notify them that the VALT server is unable to connect to the provided LDAP server on the appropriate port.

Validate LDAP Query/Credentials

After verifying communication between the VALT server and the LDAP server, you can validate the credentials you were provided by attempting to connect to the LDAP server from the command line.

  1. Connect to the VALT server via SSH or access the terminal.
    If accessing via the terminal, you will need to exit to shell.
  2. Enter the following:
    ldapsearch -H ldap://ldapserver -x -b "distinguishedname" -D username -W
    Be sure to replace the ldapserver, distinguishedname, and username with the appropriate information.
    Example:
    LDAP Server: ivs2012r2dc.internal.ipivs.com
    Protocol: LDAPS
    Distinguished Name of Group: CN=IVS Users,CN=Users,DC=internal,DC=ipivs,DC=com
    Username: ivs@internal.ipivs.com
    ldapsearch -H ldaps://ivs2012r2dc.internal.ipivs.com -x -b "CN=IVS Users,CN=Users,DC=internal,DC=ipivs,DC=com" -D ivs@internal.ipivs.com -W
  3. Enter the password when prompted.
  4. The query should return a list of group members.
    • If a list of group members was returned successfully, then LDAP authentication should be working. If you are still experiencing issues, it is most likely a configuration problem with the application.
      LDAPT1.png
    • If you received a message stating No Such Object, the distinguished name of the group you entered is incorrect. The next section contains information on verifying the distinguished name or the group, or you can contact the customer's IT department.
      LDAPT3.png
    • If you received a message stating Invalid credentials, the username or password you entered is incorrect. You will need to contact the customer's IT department.
      LDAPT2.png

Validate LDAP Server Database Entry

If the Server and Credentials are correct, make sure that the database entry has the correct information

  1. Go to the phpmyadmin interface for the server http://<server_ip>/phpmyadmin
  2. In the V3 database, find the table called ldap_server and copy the contents of the field "base_dn" into the field "dn" if not already present
  3. Test the ldap import again and see if it is working now

Verify Distinguished Name of Groups

If you believe the distinguished name of the group is incorrect, you can verify it by accessing the customer's directory using LDAP Admin and the credentials they have provided you.

  1. Download and run LDAP Admin.
    LDAPT6.png
  2. Click Connect.
    LDAPT7.png
  3. Double click on New Connection.
    LDAPT5.png
  4. Enter the host.
  5. Uncheck Anonymous Connection.
  6. Enter the username and password.
  7. Click Fetch DNs.
  8. Select the Base DN for the domain.
    EX: DC=internal,DC=ipivs,DC=com
    LDAPT8.png
  9. Click OK.
  10. You can now browse the customer's directory. Using the distinguished name you were provided, try to locate the group.
    LDAPT10.png
    • If you are able to locate the group, click on the group, and the DN will be displayed on the right hand side of the window.
    • If you are unable to locate the group, contact the customer's IT department.

LDAPS Security Certificate

If you are connecting over LDAPS, you may experience an issue with security certificate presented by the LDAP server being untrusted by the VALT appliance.

Verify the Issue

  1. Run an ldapsearch query against the LDAP directory server using LDAPS, and append -d1 to the end of the command.
    See the section above regarding Validate LDAP Query/Credentials for information on running an ldapsearch
  2. The query will fail, but the results should contain diagnostic details about why.
  3. Review the results of the query. If there is an issue with the certificate, you will see a message stating Certificate Untrusted, or something similar in the results.
  4. Enter the following:
    sudo nano /etc/ldap/ldap.conf
  5. Append the following to the end of the file:
  6. TLS_REQCERT never
  7. Rerun the ldapsearch command. It should be successful this time.

Resolution

  1. Download the security certificate from your LDAP directory server.
  2. Upload the certificate to the VALT appliance.
  3. Copy the certificate file to:
    /etc/ssl/certs/
    EX: sudo cp ./cert.crt /etc/ssl/certs/
  4. Enter the following:
    sudo nano /etc/ldap/ldap.conf
  5. Append the following to the end of the file, replacing the italicized text with the name of your certificate:
    TLS_CACERT /etc/ssl/certs/cert.crt
  6. Press CTRL-X.
  7. Answer Y to save.
  8. Press Enter to keep the file name the same.

TLS 1.2 Issues

There is a known compatibility issue between OpenLDAP and certain versions of Windows Server. This issue was resolved in hotfixes, however you if you are able to verify all the information is correct and you are still unable to submit an LDAP query via LDAPS, this may be the cause. The issue stems from a compatibility problem related to TLS 1.2. By disabling TLS version 1.2, you can force LDAPS to use TLS version 1.1.

To test if this is the case, run the following:

export LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2
  • Run another LDAPSearch.
  • If the search is successful, the compatibility issue is causing your problem.
You will need to modify the LDAP PHP files to include the line:
putenv("LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2");

The following files will need to be modified:

/var/www/v3/src/FS/UserBundle/Util/LdapSynchronizer.php
/var/www/v3/src/FS/UserBundle/Controller/LDAPController.php
/var/www/v3/src/FS/CamBundle/Command/LdapSyncCommand.php
/var/www/v3/src/FS/UserBundle/Entity/LdapServer.php
/var/www/v3/src/FS/UserBundle/Entity/LdapSynchronize.php
/var/www/v3/src/FS/UserBundle/Entity/User.php
/var/www/v3/app/console

This list of files was from old notes and may not be 100% accurate


Unable to Connect to MYSQL Database

This issue can occur after updating VALT to version 5.2 if the MySql config has been changed to listen on an interface other than the loopback address. This is not a common config, however this has been done in the past on several VALT implementations in order to allow customers to access the database directly to run queries or reports.

  1. Connect to the server via SSH or log in to the teminal
  2. Type the following and press enter:
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  3. Scroll down through the file until you see the entry for bind-address (it should be around line 43). This entry will most likely be set to the IP address of the server. If the entry is currently set to 127.0.0.1, this is NOT the issue.
  4. Comment out the line by adding a # at the start of the line.
  5. Add a new line below it:
    bind-address            = 0.0.0.0
  6. Press CTRL-X
  7. Enter Y to save.
  8. Do not change the file name, and press Enter

LDAP Jar Debug

The below commands are used to help troubleshoot LDAP issues. You will need to substitute the correct information into the string in order for the command to function properly.

java -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true -jar /var/www/v3/app/../services/ldap_import.jar "localhost%3A3306%2Fv3" "<DB UserName>" "<DB Password>" "ldaps%3A%2F%2Fad.ipivs.com%3A636" "dc%3Dad%2Cdc%3Dipivs%2Cdc%3Dcom" "<LDAP Service Account" "<Service Account Password>" "cn%3DTestGroup1%2Cou%3DGroups%2Cou%3DTest" 17 "-" "-" 8 "-" "activedirectory" 0 [] [] -debug
%3A = :
%2F = /
%40 = @
%2C = ,
%3D = =

Using another special character check out this website to get the correct format

To see an example, click here.


Disable LDAPS SSL Check

  1. Enter the below string at the bottom of
    /var/www/v3/app/config/parameters.yml
disable_ldaps_ssl_check: true