Toni Mueller wrote:
Hi,
Tue, 20.02.2007 at 12:33:17 -0500, Daniel <daniel (AT) presscom (DOT) netwrote:
* Use a non-forking server.
>?
I've been hit by guys who simply exhausted the maximum number of
processes I configured with Apache. What limits do you usually have?
I am still very conservative and could increase it more, but choose not to.
# sysctl kern.maxproc
kern.maxproc=1024
Never needed to increase more then that after all protections are in
place. I use 768 limit for apache, need to change the default and
recompile, but real easy to do.
This was effectively a DoS against all other users. Whether
intentionally or by accident, I can't say right now, but all
non-forking servers I'm aware of have a much slower memory consumption
rate.
Memory consumption is not really max process, nor forking limits, unless
you run very limited memory servers.
Also, one situation describe before as well is that DDoS send lots of
connections to your server, but they do not process the content of the
reply, meaning they don't call all the images, etc that a regular
requests would do. Example one request from IE on a site can results in
20 stream back from the server as one attack still get one stream in
reply. So, with proper limits on connection and blocking in place, you
are good to go.
May be your KeepAliveTimeout in httpd.conf is to high. I reduce mine
from the default one. This free more forking process sooner.
You can also change the value of:
MinSpareServers
MaxSpareServers
To fit your server needs and reduce the time spend in start/stop new
one. All depend on your traffic.
>PF can handle rate limit pretty well, just increase your table size if
>you reach the limit of them and be aggressive optimization:
Yes. I was already using it with good success.
May be looking and spending some time to optimize your PF rules under
heavy load might be well spend time.
Daniel put a very good guideline on this:
Also for interest, may be these two might be interesting to read as well
for informations:
>You can deny request based on IE versions if need be from the stock
>apache. All my previously describe time limiting and redirect is only
>affecting the IE version and anything NT IE pass without delay or redirect.
I don't want to generally deny, or slow down, IE users of the site (I
can't), but only want to deny them range requests. I didn't find a knob
in Apache to do this. If anyone else does, I'm still interested.
May be I am thick here, I still don't understand what you are after
here. You can block access with:
Allow,Deny
Allow from all
Deny from w.x.y.z/xx
And with something like:
BrowserMatchNoCase "\MSIE 5.5" browser=MSIE_5.5
and SetEnvIf, you can do clever things.
I didn't put a lots of thoughts in the last piece here as I use that for
blocking some specific traffic and the like, but I don't see why it
woudln't be possible.
Then I use something like:
RewriteRule <Your rule herehttp://%{REMTE_ADDR}/ [L,E=nolog:1]
But that needs to be specific for each setup you want to use.
I would need to spend time thinking about it, but I would think it's
possible to do. Not easy, but possible. Some reading is needed.
Best,
Daniel