8 Security Tips

This chapter provides tips for securing the EDQ environment.

The chapter includes the following sections:

8.1 Limit Concurrent Logins

A limit can be specified in login.properties for the number of concurrent logins by an individual user. This can be configured either globally or on a per realm basis.

To set this globally for all realms, use the following line:

sessionlimit = 1

To use different settings for different realms, specify the realm name before the parameter - for example:

internal.sessionlimit = 1

Note:

Using the line given above, you can also limit the concurrent logins in an `internal' realm, meaning the users set up and administered in EDQ itself.
<external realm name>.sessionlimit = 1

8.2 Disable FTP/SFTP Access if Not Needed

Where it is not needed, FTP/SFTP access to EDQ should be disabled for optimum security. Standard FTP can be disabled by adding the following line in director.properties within the configuration folder:

launch.ftpserver = 0

SFTP/SCP can be disabled using the following line within the same file:

launch.sshd = 0

8.3 Exclude Configuration Area from FTP/SFTP

If non-admin users are allowed access to FTP/SFTP, it is advisable to remove access to the configuration folder from the SFTP server, as follows:

  1. Create the folders extras/ftpserver/conf and extras/sshd/conf within oedq.local.home, if they do not already exist.

  2. Copy the files extras/ftpserver/conf/ftpserver.xml and extras/sshd/conf/sshd.xml from the oedq.home configuration directory to the corresponding subfolders of oedq.local.home.

  3. In each of the two files from the previous stage, comment out the following lines:

    <!-- Configuration area -->
    <ref bean="configspaces"/>
    <!-- Command areas -->
    <ref bean="commandspaces"/>
    

    The first reference is to the configuration directories; the second is to the command areas used for external tasks.

  4. Restart the application server. The only location visible to the FTP and SFTP servers is now the landing area.

8.4 Account with Minimal Permissions for Service Integration

When integrated with Siebel or other 3rd party components that call EDQ web services, an account with only the minimum permissions should be used. These are 'connect to messaging system' and permissions to the relevant project or projects containing the web services.

8.5 Protect JNDI Data Sources

Unless specific steps are taken, a user in EDQ can set up a data store with a reference to the JNDI name and then access data in these schemas, which can contain very sensitive information. To protect JNDI data sources in EDQ, specify the names (or regular expressions matching the names) in director.properties:

protected.jndi.datasources = <space separated list of JNDI names>

For example:

protected.jndi.datasources = jdbc/edqconfig jdbc/edqresults

The property is a space-separated list of regexes so you could also use:

protected.jndi.datasources = jdbc/edq.*

8.6 Kerberos Shared Libraries

The shared libraries (wingss.dll and libunuxgss.so) required for Kerberos integration are shipped inside the edq.war file. For most installations this is sufficient since EDQ can determine the location of the shared libraries and load the right version automatically.

However, this automatic loading does not work with all Java Runtime Environments (JREs), and notably it does not work with the IBM JRE. For these installations the libraries need to be extracted from the provided kerberos-gss.zip file and copied to a known location on disk. The location must then be added to the following environment variables such that the JRE can find it:

  • LD_LIBRARY_PATH (Linux, Solaris)

  • LIBPATH (AIX)

  • PATH (Windows)

Examine the native/Kerberos-gss.zip archived provided with the EDQ install and verify it contains the following files:

aix/ppc/libunixgss.a
aix/ppc64/libunixgss.a
linux/amd64/libunixgss.so
linux/i386/libunixgss.so
win32/amd64/wingss.dll
win32/x86/wingss.dll

Extract the relevant library for the OS the EDQ server runs on, and copy it to a location on a disk accessible by the user EDQ runs as. This can either be part of the existing JRE classpath, or can be added to the environment variables mentioned above, so the JRE can find it.