1. Technical Field of the Invention
This invention relates to protecting a server against multiple login denial of service attacks.
2. Background Art
If a hosted web application allows multiple simultaneous logins under the same user's credentials, and the user session created upon login consumes considerable system resources, such as memory, a denial of service attack might be possible by running a simple script performing multiple user logins. The application can be brought to a non-responsive state for the duration of the session inactivity timeout, which is usually in the range from several minutes to several tens of minutes.
Managers of information systems for public and private enterprises are required to provide ever increasing network access to their information systems. As business requirements for connection to the Internet grow, system security concerns increase in lock step.
The current art for network and system security, which uses TCP/IP socket protocol and firewall technology does not provide complete protection for an organization's systems. Internet connected systems have an exposure to jamming by anyone with an Internet-connected computer. Some computer systems are designed for public access, and must be available to members of the public desiring and authorized to access them. This leaves the systems of Internet-connected organizations open for attacks, including jamming attacks known as denial of service (DOS) attacks or distributed denial of service (DDOS) attacks, in which streams of traffic are directed at an organization's Internet-connected systems.
Initially, DOS attacks came from individual machines from which individual hackers streamed data (e.g., ping echo packets) to web-attached servers in an effort to flood the network and burden the server with the overhead of handling the stream of data.
Today, hackers have learned how to take control of or “borrow” multiple web-attached computers in different organizations (“masters”), use these master machines to infiltrate many more computers in different organizations (“zombies”), embed DOS attack code scripts (or, “trojan-horses”) in the zombies through the masters, and then issue commands from the masters to the zombies to run the scripts directed at the server(s) of a targeted organization.
The hackers, twice removed from the attacking zombie machines, are difficult to trace. The attacks coming from many different zombies in many different networks comprise DDOS attacks that are hard to detect and control. The scripts run by the zombies are a nasty assemblage of echo packet floods, status requests, incomplete logins, deliberate causes of connection error conditions, false reports of errors, and transmissions of packets requiring special handling. Many of these zombies may occur at and are received at the application level. These vicious scripts, run from hundreds or thousands of zombies, are designed to flood the network, tie up system control blocks, and siphon web server computing power to the point that the attacked webserver network and system can no longer provide service to legitimate users. All the while, the zombie computers causing the damage are owned by legitimate organizations which have no idea that their systems are being used in attacks on other organizations.
A system, method and program storage device are provided for protecting a server against a multiple-login denial of service attack by providing a proxy authentication server having an authentication request history table; maintaining in the table recent authentication requests to a second server, including user ID and time of each of the recent authentication requests; receiving a subsequent authentication request at the proxy authentication server; and determining whether to forward the subsequent authentication request to the second server based on a pre-defined filtering rule(s) and the user ID and time of authentication request in the authentication request history table.
In accordance with an aspect of the invention, there is provided a computer program product configured to be operable to protect a server against a multiple-login denial of service attack by providing a proxy authentication server having a authentication request history table; maintaining in the table recent authentication requests to a second server, including user ID and time of each of the recent authentication requests; receiving a subsequent authentication request at the proxy authentication server; and determining whether to forward the subsequent authentication request to the second server based on a pre-defined filtering rule and the user ID and time of authentication request in the authentication request history table.
Other features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiment of the invention, taken in conjunction with the accompanying drawings.
A system, method and program storage device are provided for protecting a server against a multiple-login denial of service attack by providing a proxy authentication server having an authentication request history table; maintaining in the table recent authentication requests to a second server, including user ID and time of each of the recent authentication requests; receiving a subsequent authentication request at the proxy authentication server; and determining whether to forward or redirect the subsequent authentication request to the second server based on a pre-defined filtering rule and the user ID and time of authentication request in the authentication request history table.
The present invention is implemented in application layer. That is, the present invention limits the number of login attempts to a hosted application using legitimate user credentials, thus providing protection from application level denial of service attacks using a typical HTML browser and application level authentication and authorization.
Referring to
Referring to
Proxy authentication server 104 is a software module that intercepts communication between a application code 101 (or client module) and a server module 108, and while being transparent to both client module 101 and server module 108, is capable of either passing requests and response through, or performing additional processing and/or modifications of requests and/or responses.
Referring to
A user credential is a <username, password> pair that is unique across a given domain, where domain can be a single application 101, a group of applications, an organization, or a service provider.
In an exemplary embodiment, authentication server 108 is an LDAP server, used by application server 100 to authenticate users. In this exemplary embodiment, server 108 functions in accordance with Lightweight Directory Access Protocol (v3): Technical Specification. Request for Comments: 3377. The Internet Society. 2002. This RFC describes a directory access protocol that provides both read and update access. The LDAP model is one of clients performing protocol operations against servers. A client transmits a protocol request describing an operation to be performed to a server. The server is then responsible for performing the necessary operation(s) in a directory. Upon completion of the operation(s), the server returns a response containing any results or errors to the requesting client via protocol exchanges.
In accordance with an exemplary embodiment of the invention based on LDAP technology, bind request, bind response, bind redirect responses are examples of LDAPMessages 111, 112, 113, 114, 121, 122, 123, 124 which are encapsulated in protocol data unit (PDU) exchanges or operations, as set forth in Table 1.
Table 2 shows the format of LDAPResult 123, which is the response of LDAP server 108 to an LDAP client 104. One of the possible responses is “referral” (code 10) which is a synonym for “redirect”. See RFC2251.
Referring to
Referring to
Referring to
References to “bind” are for an LDAP exemplary embodiment. “Authentication” is a generic term encompassing “bind”.
The function of LDAPMessage envelopes 300, 320, 340 is to provide an envelope containing common fields required in all protocol exchanges.
All LDAPMessage envelopes 320 encapsulating responses 114, 123, 124, 112 contain the messageID value of the corresponding request LDAPMessage 113, 122, 121, 111, respectively.
A client application server 100 must not send a second request with the same message ID 302 as an earlier request on the same connection if the client has not received the final response from the earlier request. Otherwise the behavior is undefined. Typical clients increment a counter for each request.
Distinguished Name (LDAPDN) and Relative Distinguished Name (RelativeLDAPDN) are respectively defined to be the representation of a Distinguished Name and a Relative Distinguished Name after encoding such that
Proxy authentication server 104 maintains history table 106 to track recent Authentication requests 121 submitted to server 108 by application server 100, which has been triggered by a login request 115 from client machine 110. Table 106 includes for each authentication request 121 user ID 131 and time of authentication request 133. Upon intercepting an authentication request 121, (such as an LDAP BIND request, or equivalent), proxy authentication server 104 determines whether to forward authentication request 121 as an authentication request 122 to server 108 based on a pre-defined filter rule or set of filtering rules 135 and the contents of authentication requests history table 106.
The function of the authentication operation is to allow authentication information to be exchanged between a client and a server.
Authentication Request 121, 122, for example in an LDAP embodiment, is defined as follows:
Parameters of the Bind Request are:
version 308: A version number indicating the version of the protocol to be used in this protocol session, such as version 3 of the LDAP protocol.
name 302: The name of the directory object that the client wishes to authenticate (bind) as. This field may take on a null value (a zero length string) for the purposes of anonymous authentications, when authentication has been performed at a lower layer, or when using SASL credentials with a mechanism that includes the LDAPDN in the credentials.
authentication 312, 314: information used to authenticate the name, if any, provided in the authentication request.
In accordance with the first exemplary embodiment, upon receipt of an authentication request 113, authentication (aka protocol) server 102 will authenticate the requesting client 110, if necessary. The server 102 will then return an authentication response 114 to client 100 indicating the status of the authentication.
Authorization is the use of this authentication information when performing operations. Authorization MAY be affected by factors outside of the authentication (such as LDAP Bind) request 111/121, such as lower layer security services. (See Lightweight Directory Access Protocol (v3). Request for Comments: 2251. The Internet Society (2002). At page 20.)
A filtering rule 135 may instruct proxy 104 to limit the number of authentication requests 111 and, consequently, login attempts 115 from client machine 110 for any given user ID 131 within a time frame specified in filter rules 135 by a given number as, for example “any user may not be allowed to login more than 10 times within any given 10-minute period.”
Referring to
Referring to
Referring to
Referring further to
If a new Authentication request 121 which satisfies filter rules 135 is received by proxy authentication server 104, it is forwarded to authentication server 108 as authentication request 122. Upon receiving authentication response 123 from authentication server 108, proxy authentication server 104 returns authentication response 123 to server 100 as authentication response 124.
Proxy authentication server 104 does not change the content of requests 111/121 and responses 112/124, and makes routing decisions only. Four situations are possible:
Referring to
An authentication response 123, 124 (such as a BindResponse) comprises an indication from the server of the status of the client's request for authentication. If authentication was successful, the resultcode will be success, otherwise it will be one of:
If the server does not support the client's requested protocol version, it sends the resultcode to protocolError.
If client 100 receives an authentication response, for example, an LDAP BindResponse response, where the resultCode was protocolError, it will close the connection as the server will be unwilling to accept further operations.
The serverSaslCreds are used as part of a SASL-defined bind mechanism to allow the client to authenticate the server to which it is communicating, or to perform “challenge-response” authentication. If the client bound with the password choice, or the SASL mechanism does not require the server to return information to the client, then this field is not included in the result.
(See Lightweight Directory Access protocol (v3). Request for Comments: 2251. The Internet Society (2002), at pages 20, 23.)
Referring to
Referring to
If, in step 164 it is determined that an entry for this client 100 exists in table 106, in step 166 proxy authentication server 104 determines if this request passes all relevant filter rules and rule sets. If so, processing continues to step 172 as above. If not, in step 168 if relevant filter rules and rule sets allow time out or expiration, processing cycles through step 166 until time out, and thereupon executes steps 172 and 174 as above. If relevant filter rules and rule sets 135 do not allow time out, in step 170 the authentication request table is updated for this request, authentication unsuccessful 124/112 is returned to client 110/application 100, and proxy authentication server 104 returns to step 162 to await the next authentication request 111.
When a rule 135 is not satisfied, proxy authentication server 104 can hold on to the response 124 and return response after time expires. Secondly, proxy authentication server 104 could return a rejection message 124 (in both cases
It is an advantage of the invention that there is provided a system, method, or program storage device for protecting a server from denial of service attacks.
It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. Referring to
Further, each step of the method may be executed on any general purpose computer, such as IBM Systems designated as zSeries, iSeries, xSeries, and pSeries, or the like and pursuant to one or more, or a part of one or more, program elements, modules or objects generated from any programming language, such as C++, Java, Pl/1, Fortran or the like. And still further, each said step, or a file or object or the like implementing each said step, may be executed by special purpose hardware or a circuit module designed for that purpose.
Accordingly, the scope of protection of this invention is limited only by the following claims and their equivalents.