Hi friends,

"and now to something completely different: the larch"... ;-)

Some of you might know:
http://www.zdziarski.com/projects/mod_evasive/

I'm just interested in some theoretical thoughts, if there would be a 
ns_evasive module... how to set up the "storage":

Background (Remember: this is an Apache module):
"Detection is performed by creating an internal dynamic hash table of IP 
Addresses and URIs, and denying any single IP address from any of the 
following: 
* Requesting the same page more than a few times per second 
* Making more than 50 concurrent requests on the same child per second"
(It then answers with a HTTP status code of 403 for a specified time)

And (from the Apache-view):
"This module instantiates for each listener individually [...] Because of this 
per-child design, legitimate requests are never compromised (even from 
proxies and NAT addresses) but only scripted attacks. Even a user repeatedly 
clicking on 'reload' should not be affected unless they do it maliciously."

In our Naviserver-world, when storing requests of clients (IP) to objects on 
the server (whatever you consider a "page", say HTML/ADP; and all the other 
page elements on the other side), what could a possible plan look like:
* do the key/value lookup via NSV arrays?
* or thread-locally?
Or everything in the first/the latter?

If I want to guarantee, say, client X request a page Y only 2 times within 5 
seconds, this leads to NSV ("guarantee"). But when I think of e.g. the 70 
images referenced in Y... and some of them also referenced from page Y'2 with 
a browser not caching anything... hm. Is the " legitimate requests are never 
compromised" promise gained by a "server-wide-blindness" approach, a 
distribution of storage to the available processes?

And would turning on / off keepalive introduce some subtle differences?

cu
Bernd.

Reply via email to