Hmm, it is little not what I thought... We have DDoS due to our links are put on high load site. I wanted to check referrers dynamical and then block them (with the highest rate). Maybe is it possible to limit the session based on host?
On Tue, Mar 16, 2010 at 6:08 AM, Willy Tarreau <[email protected]> wrote: > Hi, > > On Mon, Mar 15, 2010 at 07:54:19PM +0100, Miko?aj Radzewicz wrote: >> Dear Sir, >> I have been using haproxy for a couple of weeks in some basic >> configuration. Since 2 weeks we have been suffering from some DoS >> attacks to our web servers which made them causes 500 due to extreamly >> high number of connections. All of them are caused through the >> referers - links(urls) to our web servers are put on very load pages >> causing run out of pool of connection on our web servers. Is it some >> way to protect our infrastructur using haproxy? Are you planning to >> add sth like that in the future? > > The first thing you must do is to set a "maxconn" value on each "server" > line in haproxy's config to limit the number of concurrent connections > per server to a level the server can sustain. This will ensure that your > servers are not saturated anymore. The second thing is to correctly > configure your various timeouts so that you don't needlessly keep a > lot of connections on haproxy or your servers when you suppose that > the client might already have gone. For instance, a client will not > wait more than 30-40 seconds for something that does not seem to come, > so let's have your server timeout and queue timeout at these levels. > You must also set "option abortonclose" so that each connection aborted > while the request is still in the queue will not be sent to a server. > > Then if you know what to identify in the requests, you can eliminate > them or "tarpit" them, which consists in keeping the connection open > for some predefined time to slow down the attacker. But since what you > describe looks more like normal browsers, maybe a drop will be enough. > If you can identify a set of referrers, you can block on that. You can > even redirect the request to the site holding the referrer. Probably > that they'll check their page and fix it quickly after detecting the > higher load ! For instance : > > acl from_site1 hdr_beg(referer) http://site1.dom/ > redirect location http://site1.dom/ if from_site1 > ... > > Regards, > Willy > > -- Regards, MR

