conn_cur: Anzahl der gleichzeitigen Verbindungen einer Quell IP
conn_rate(4s): Durchschnittliche Anzahl von Anfragen über 4 Sekunden
http_req_rate(10s): Anzahl von Anfragen durch eine IP über einen Zeitraum von 10 Sekunden
http_err_rate(10s): Anzahl von Fehlern, die durch eine IP erzeugt werden, über einen Zeitraum von 10 Sekunden
Die erzeugte Tabelle kann, wie oben definiert, maximal 200.000 Einträge des Typs IP enthalten, die nach 2 Minuten verfallen. Sollte die Tabelle voll sein, löscht HAProxy die Werte nach einer LRU Logik.
Erst die Zeile "tcp-request content track-sc0 src" sendet Daten an die definierte Tabelle und macht sie damit nutzbar.
Beispiele zur sinnvollen Nutzung im Rahmen eines rudimentären DDOS- Schutzes sind:
Bei mehr als 40 IP Verbindungen in 4 Sekunden wird die Verbindung verweigert:
tcp-request connection reject if { sc0_conn_rate ge 40 }
Wenn der Client bereits mehr als 20 IP Verbindungen offen hat werden neue Verbindungen verweigert:
tcp-request connection reject if { sc0_conn_cur ge 20 }
Client blockieren wenn er bereits 10 Verbindungen offen hat:
http-request tarpit if { src_conn_cur ge 10 }
Client blockieren wenn er mehr als 30 Verbindungen in den letzten 3 Sekunden geöffnet hat:
http-request tarpit if { src_conn_rate ge 30 }
Client blockieren wenn er mehr als 20 HTTP Fehler in den letzten 10 Sekunden erzeugt hat:
http-request tarpit if { sc0_http_err_rate() gt 20 }
Client blockieren wenn er in den letzten 10 Sekunden mehr als 100 HTTP Anfragen erzeugt hat:
http-request tarpit if { sc0_http_req_rate() gt 100 }
TARPIT ist hier die definierte Methode wie mit einem Überschreiten der definierten Limits umgegangen werden soll. Hierbei werden Anfragen vom jeweiligen Client für eine Dauer blockiert, die durch den Parameter "timeout tarpit", definiert wird.