Forum Discussion
Greg_Wood_33904
Nimbostratus
Mar 30, 2010How to limit the SSL TPS per VIP
We would like to assign a quota for the amount of SSL TPS each site can use so that one site does not take down all the others once the TPS limit has been reached (Client SSL only).
Of course our Sales Rep told us this could be accomplished in v10, so we upgraded just for this purpose.
This would be for the LTM 6900 platform running v10.1.0 and we are open to any suggestions.
- hoolio
Cirrostratus
Hi Greg, - Hamish
Cirrocumulus
Mmmm.... - Greg_Wood_33904
Nimbostratus
Correct.....We were advised that it would require an iRule. - ask_me_anytime_
Nimbostratus
hey , - hoolio
Cirrostratus
It could be you :). You could use the table command to track successful SSL handshakes in the CLIENTSSL_HANDSHAKE event: - Hamish
Cirrocumulus
I'd suggest as a starting point, the iRule http://devcentral.f5.com/wiki/default.aspx/iRules/HTTP_Session_Limit.html it should be relatively easy (He says without taking the time to think it though himself :) to modify it to track SSL negotiations instead. - Hamish
Cirrocumulus
Oh... The reason I suggest using that iRule as a base is the perennial problem of not just counting SSl TPS... but also making sure that existign users don't get locked out by a random attack... You want to have 2 lmits... One for ALL negotiations (Including unknown/new users). And one slightly higher reserved for existing sessions. So ensuring that a ruch of new clients won't blow out existing users half way. - Hamish
Cirrocumulus
Just as an aside... I'm also interested in this, but no time at the moment (Firewalls calling :) for the next few weeks... If anyone would like to collaborate, I probably can spare a few cycles to work with someone. - Colin_Walker_12Historic F5 AccountThere's an iRule that's most of the way there posted out on DevCentral already in David Holmes' blog about SSL Renegotiation (http://devcentral.f5.com/weblogs/david/archive/2011/05/16/ssl-renegotiation-dos-irule-updates.aspx üòû
when RULE_INIT { set static::maxquery 5 set static::mseconds 60000 } when CLIENT_ACCEPTED { set ssl_hs_reqs 0 } when CLIENTSSL_HANDSHAKE { incr ssl_hs_reqs after $static::mseconds { if {$ssl_hs_reqs > 0} {incr ssl_hs_reqs -1} } if { $ssl_hs_reqs > $static::maxquery } { after 5000 log "Handshake attack detected, dropping [IP::client_addr]:[TCP::client_port]" drop } }
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects