HAProxy Rate Limiting und Security Header
Zur Navigation springen
Zur Suche springen
Was ist das?
Beide Funktionen sind nativ in HAProxy verfügbar – kein Zusatztool erforderlich.
Rate Limiting mit Stick Tables
HAProxy kann Requests pro IP begrenzen und bei Überschreitung mit HTTP 429 antworten.
Die folgende Konfiguration ergänzt den bestehenden frontend ft_https und backend backend_www:
- nano /etc/haproxy/haproxy.cfg
# Stick Table im Backend definieren
backend backend_www
stick-table type ip size 100k expire 30s store http_req_rate(10s)
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }
server www 10.88.2XX.11:443 ssl verify none check
- Erklärung
stick-table– speichert Request-Raten pro IP im RAMhttp_req_rate(10s)– zählt Requests innerhalb von 10 Sekundengt 50– blockiert ab mehr als 50 Requests in 10 Sekundendeny_status 429– antwortet mit 429 Too Many Requests
Security Headers
Im frontend ft_https ergänzen:
frontend ft_https
# ... bestehende Konfiguration ...
http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains"
http-response set-header X-Frame-Options "SAMEORIGIN"
http-response set-header X-Content-Type-Options "nosniff"
http-response set-header Referrer-Policy "strict-origin-when-cross-origin"
Test
- curl -vk https://revproxy.it2XX.int
In der Ausgabe sollten die gesetzten Header sichtbar sein:
< strict-transport-security: max-age=31536000; includeSubDomains < x-frame-options: SAMEORIGIN < x-content-type-options: nosniff
Rate Limiting testen (z.B. mit ab oder einer Schleife):
- for i in $(seq 1 60); do curl -sk -o /dev/null -w "%{http_code}\n" https://revproxy.it2XX.int; done
Ab Request 51 sollte 429 erscheinen.