Sperren von HTTP/1.1-Requests per .htaccess


Insbesondere bei DDoS-Attacken werden Anfragen häufig noch über das veraltete Protokoll HTTP/1.1 abgewickelt, während der Großteil legitimer, moderner Clients längst über HTTP/2 kommuniziert. In solchen Fällen kann es sinnvoll sein, HTTP/1.1-Requests pauschal zu sperren. Dies lässt sich mit mod_rewrite bei apache2 in der .htaccess umsetzen. Hierzu reichen wenige Zeilen:

Mithilfe von mod_rewrite in der .htaccess

Blockieren aller HTTP/1.1-Requests

RewriteEngine On

RewriteCond %{THE_REQUEST} HTTP/1\.1$
RewriteRule ^ - [F,L]

Blockieren von HTTP/1.1-Requests unter Ausnahme wichtiger Crawler

Da auch viele Suchmaschinen-Crawler (z.B. Googlebot) noch über HTTP/1.1 arbeiten, würde eine pauschale Sperre auch diese Bots aussperren. Um das zu vermeiden, kann man den User-Agent bekannter Crawler von der Sperre ausnehmen:

RewriteEngine On

RewriteCond %{THE_REQUEST} HTTP/1\.1$
RewriteCond %{HTTP_USER_AGENT} !(Googlebot|bingbot|Slurp|DuckDuckBot|YandexBot|facebookexternalhit) [NC]
RewriteRule ^ - [F,L]

Wichtig: Der User-Agent-Header wird vom Client mitgesendet und lässt sich beliebig fälschen. Ein Angreifer könnte sich also ebenfalls als einer der genannten Bots ausgeben, um die Sperre zu umgehen. Für eine zuverlässige Verifizierung (z.B. per Reverse-DNS-Lookup) reicht reines mod_rewrite nicht aus. Für eine grobe Absicherung während einer akuten DDoS-Welle ist die User-Agent-Prüfung in der Praxis aber meist ausreichend.