| Author | David Hawes |
| Date | 2005/05/13 |
(draft)
The Virginia Tech Authentication System, known as ED-Auth, currently has no means to expose statistics and information about authentication attempts. Useful information includes such things as last successful login, last login failure, number of failures, host authenticated from, etc. Most modern authentication systems have the ability to present this information in some form, and some systems are capable of taking actions on this information, such as account locking on consecutive password failure attempts.
As ED-Auth is an OpenLDAP instance and is thus simply an LDAPv3 server, it does not inherently take care of the things typical authentication systems would take care of, as listed above. This document outlines the problems with ED-Auth presenting information and statistics about operations performed against it and various ways these problems can be solved.
Since OpenLDAP is intended to be used as an LDAPv3 server, it does not by default support the types of things typical authentication systems would support. A now expired Internet-Draft, draft-behera-ldap-password-policy-xx.txt, included in the OpenLDAP distribution, has been implemented as an overlay for OpenLDAP called ppolicy. The ppolicy overlay transforms an OpenLDAP instance into an authentication server, supporting such things as password locking. Though untested by Middleware, the ppolicy overlay cannot be used for ED-Auth for one major reason: the load balanced nature of ED-Auth.
The ppolicy overlay is a per-instance overlay that works only on a single OpenLDAP server. If our environment consisted of a single server, and that server was the authoritative repository for that data, the ppolicy overlay would probably give us quite a bit of functionality with ED-Auth that would be desirable. Unfortunately, neither of these are true. ED-Auth is comprised of multiple servers (4) in a clustered, load-balanced environment and data in ED-Auth is merely an end-user reflection of data owned by the VT Registry. In other words, there is no means for the ppolicy to share data between the multiple OpenLDAP instances that comprise ED-Auth, and there is no way to push this data back to the Registry, which should (by definition) be the source of all data in the ED-*s.
So, a means to present authentication information and statistics about ED-Auth should include at least the following:
In the previous section it was stated that we need at least two things to take place in order to present authentication information reliably. In reality, if we persist this information in the Registry, we take care of reflecting the information in all ED-Auth instances since the typical replication paths will push the necessary data to all instances. It should be noted that pushing data back to ED-Auth instances is only needed if we want to display the data in ED-Auth or want to take some action on this data at the time of authentication. For the time being, we may simply want to show statistics in a tool such as the DAT, so pushing these stats back is not really necessary.
There are two things we need in order to store data in the Registry:
Any of the the solutions will need tablespace in the Registry for storing authentication information. The schema for new tables doesn't need to be included in this document, but the table could contain such columns as the following:
There are several ways we can push authentication data to the Registry:
Cons:
Cons:
Cons:
Some of the ways we can determine when an authentication has taken place:
Cons:
Cons:
Cons:
Since we need to update the Registry in some way and already extensively use Session Beans with great success, a Session Bean is the best choice for updating the Registry with authentication information. By using a Session Bean, we gain the advantage of placing all the business logic we need for updating the Registry in the bean, plus the ability to optionally use a Web Service interface built on top of the bean. This solution for updating the Registry most closely conforms to Middleware practices and the infrastructure we already have in place.
Authentication awareness is the real problem with logging authentication information, as the solution must be lightweight and unobtrusive so it does not degrade performance of ED-Auth. If this is the sole concern, a log watcher is the least obtrusive option available, and will not degrade performance at all. On the other hand, an overlay solution most likely provides more reliability, as an action is guaranteed to be seen by the overlay (the log watcher relies on syslog, which can glitch), but there is almost certainly a performance hit (testing will be necessary to see if this performance hit is negligible or not).