<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=HAProxy_Rate_Limiting_und_Security_Header</id>
	<title>HAProxy Rate Limiting und Security Header - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=HAProxy_Rate_Limiting_und_Security_Header"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=HAProxy_Rate_Limiting_und_Security_Header&amp;action=history"/>
	<updated>2026-06-17T13:29:00Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=HAProxy_Rate_Limiting_und_Security_Header&amp;diff=70368&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „=== Was ist das?=== Beide Funktionen sind nativ in HAProxy verfügbar – kein Zusatztool erforderlich.  ===Rate Limiting mit Stick Tables===  HAProxy kann Req…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=HAProxy_Rate_Limiting_und_Security_Header&amp;diff=70368&amp;oldid=prev"/>
		<updated>2026-05-23T13:33:48Z</updated>

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