<?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=Modsecurity_Erkl%C3%A4rung</id>
	<title>Modsecurity Erklärung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Modsecurity_Erkl%C3%A4rung"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Modsecurity_Erkl%C3%A4rung&amp;action=history"/>
	<updated>2026-05-14T20:31:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Modsecurity_Erkl%C3%A4rung&amp;diff=64417&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „ ==ModSecurity Core Rule Sets und Eigene Regeln==  ModSecurity ist eine plattformübergreifende Open-Source-WAF-Engine (Web Application Firewall) für Apache,…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Modsecurity_Erkl%C3%A4rung&amp;diff=64417&amp;oldid=prev"/>
		<updated>2025-08-23T17:33:20Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ ==ModSecurity Core Rule Sets und Eigene Regeln==  ModSecurity ist eine plattformübergreifende Open-Source-WAF-Engine (Web Application Firewall) für Apache,…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
==ModSecurity Core Rule Sets und Eigene Regeln==&lt;br /&gt;
&lt;br /&gt;
ModSecurity ist eine plattformübergreifende Open-Source-WAF-Engine (Web Application Firewall) für Apache, IIS und NGINX, entwickelt von SpiderLabs (Trustwave). Sie bietet eine ereignisbasierte Programmiersprache zum Schutz vor Webangriffen, HTTP-Überwachung, Protokollierung und Echtzeitanalyse.&lt;br /&gt;
&lt;br /&gt;
==Funktionsweise==&lt;br /&gt;
&lt;br /&gt;
ModSecurity ist nur die Engine. Um Angriffe zu erkennen und zu blockieren, benötigt sie '''Regeln'''. Diese beschreiben:&lt;br /&gt;
&lt;br /&gt;
* Was in Anfragen geprüft wird&lt;br /&gt;
* Welche Aktion bei einem Regelverstoß erfolgt&lt;br /&gt;
&lt;br /&gt;
Regeln werden in Gruppen – sogenannten '''Rulesets''' – organisiert. Ab Version 3 können Regeln auch andere Regeln beeinflussen.&lt;br /&gt;
&lt;br /&gt;
==Core Rule Set (CRS)==&lt;br /&gt;
&lt;br /&gt;
Das '''OWASP CRS''' enthält generische Regeln gegen gängige Angriffsformen – inklusive der OWASP Top Ten – mit möglichst wenigen Fehlalarmen. Es eignet sich als Basisschutz für die meisten Webanwendungen.&lt;br /&gt;
&lt;br /&gt;
==Benutzerdefinierte Regeln==&lt;br /&gt;
&lt;br /&gt;
* Änderungen am CRS vermeiden – erschwert spätere Updates.&lt;br /&gt;
* Eigene Regeln in separaten Dateien pflegen.&lt;br /&gt;
* Eigene Regeln dienen zur Erkennung spezifischer Angriffe oder zum Ausschluss von False Positives.&lt;br /&gt;
&lt;br /&gt;
==Regel-IDs==&lt;br /&gt;
&lt;br /&gt;
Jede Regel benötigt eine eindeutige ID. Eigene Regeln sollten ausschließlich im lokalen Bereich liegen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID-Bereich !! Verwendung&lt;br /&gt;
|-&lt;br /&gt;
| 1–99.999 || Reserviert für lokalen (internen) Gebrauch&lt;br /&gt;
|-&lt;br /&gt;
| 100.000–199.999 || Regeln von Oracle&lt;br /&gt;
|-&lt;br /&gt;
| 200.000–299.999 || Regeln von Comodo&lt;br /&gt;
|-&lt;br /&gt;
| 300.000–399.999 || Regeln von gotroot.com&lt;br /&gt;
|-&lt;br /&gt;
| 400.000–419.999 || Ungenutzt (zur Reservierung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| 420.000–429.999 || Regeln von ScallyWhack&lt;br /&gt;
|-&lt;br /&gt;
| 430.000–439.999 || Regeln von Flameeyes&lt;br /&gt;
|-&lt;br /&gt;
| 440.000–599.999 || Ungenutzt (zur Reservierung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| 600.000–699.999 || Regeln von Akamai&lt;br /&gt;
|-&lt;br /&gt;
| 700.000–799.999 || Regeln von Ivan Ristic&lt;br /&gt;
|-&lt;br /&gt;
| 900.000–999.999 || OWASP CRS&lt;br /&gt;
|-&lt;br /&gt;
| 1.000.000–1.009.999 || Redhat Security Team&lt;br /&gt;
|-&lt;br /&gt;
| 1.010.000–1.999.999 || Ungenutzt (zur Reservierung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| 2.000.000–2.999.999 || SpiderLabs Research Team (Trustwave)&lt;br /&gt;
|-&lt;br /&gt;
| 3.000.000–3.999.999 || Regeln von Akamai&lt;br /&gt;
|-&lt;br /&gt;
| 4.000.000–4.099.999 || Regeln von AviNetworks&lt;br /&gt;
|-&lt;br /&gt;
| 4.100.000–4.199.999 || Regeln von Fastly&lt;br /&gt;
|-&lt;br /&gt;
| 4.200.000 und mehr || Ungenutzt (zur Reservierung verfügbar)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Regel-Syntax==&lt;br /&gt;
&lt;br /&gt;
Jede Regel beginnt mit '''SecRule''' und besteht aus:&lt;br /&gt;
&lt;br /&gt;
* '''Variablen''' – zu prüfende Teile der Anfrage&lt;br /&gt;
* '''Operatoren''' – Prüfbedingungen&lt;br /&gt;
* '''Transformationen''' – Normalisierung der Daten&lt;br /&gt;
* '''Aktionen''' – Reaktion bei Regelmatch&lt;br /&gt;
&lt;br /&gt;
Darstellung:&lt;br /&gt;
&lt;br /&gt;
  SecRule VARIABLEN &amp;quot;OPERATOR&amp;quot; &amp;quot;TRANSFORMATIONEN,AKTIONEN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Wichtige Variablen===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Variable !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| ARGS || Alle Argumente inkl. POST-Nutzlast&lt;br /&gt;
|-&lt;br /&gt;
| ARGS_GET || Nur GET-Parameter&lt;br /&gt;
|-&lt;br /&gt;
| ARGS_POST || Nur POST-Body&lt;br /&gt;
|-&lt;br /&gt;
| FILES || Original-Dateinamen bei multipart/form-data&lt;br /&gt;
|-&lt;br /&gt;
| FULL_REQUEST || Gesamte HTTP-Anfrage (Zeile, Header, Body)&lt;br /&gt;
|-&lt;br /&gt;
| QUERY_STRING || Query-Anteil der URL (roh)&lt;br /&gt;
|-&lt;br /&gt;
| REQUEST_BODY || Rohdaten des Anfrage-Body&lt;br /&gt;
|-&lt;br /&gt;
| REQUEST_HEADERS || Alle oder bestimmte Header&lt;br /&gt;
|-&lt;br /&gt;
| REQUEST_METHOD || HTTP-Methode (GET, POST, ...)&lt;br /&gt;
|-&lt;br /&gt;
| REQUEST_URI || Pfad inkl. Query-String (z. B. /index.php?p=1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Operatoren===&lt;br /&gt;
&lt;br /&gt;
Operatoren beginnen mit '''@''' und geben das Vergleichsmuster an:&lt;br /&gt;
&lt;br /&gt;
* '''@rx''' – Regulärer Ausdruck&lt;br /&gt;
* '''@streq''' – Stringvergleich&lt;br /&gt;
* Weitere: @contains, @pm, ...&lt;br /&gt;
&lt;br /&gt;
===Transformationen===&lt;br /&gt;
&lt;br /&gt;
Transformationen normalisieren Daten vor dem Abgleich:&lt;br /&gt;
&lt;br /&gt;
* '''t:none'''&lt;br /&gt;
* '''t:urlDecode'''&lt;br /&gt;
* '''t:lowercase'''&lt;br /&gt;
* '''t:compressWhitespace'''&lt;br /&gt;
&lt;br /&gt;
===Aktionen===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kategorie !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Disruptive || Aktionen mit Einfluss auf Transaktion (z. B. deny, allow)&lt;br /&gt;
|-&lt;br /&gt;
| Non-disruptive || z. B. Variablen setzen (hat keinen Einfluss auf Ablauf)&lt;br /&gt;
|-&lt;br /&gt;
| Flow || Steuerung des Regelablaufs (z. B. skip)&lt;br /&gt;
|-&lt;br /&gt;
| Meta-data || Metadaten wie id, msg, severity&lt;br /&gt;
|-&lt;br /&gt;
| Data || Parameter für andere Aktionen (z. B. status)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beispiel: einfache Regel==&lt;br /&gt;
&lt;br /&gt;
  SecRule REQUEST_URI &amp;quot;@streq /index.php&amp;quot; &amp;quot;id:1,phase:1,t:lowercase,deny&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erläuterung:&lt;br /&gt;
&lt;br /&gt;
* '''REQUEST_URI''' – prüft Pfad der URL&lt;br /&gt;
* '''@streq /index.php''' – Stringvergleich auf Gleichheit&lt;br /&gt;
* '''t:lowercase''' – in Kleinbuchstaben konvertieren&lt;br /&gt;
* '''deny''' – blockiert die Anfrage&lt;br /&gt;
&lt;br /&gt;
==Beispiel: komplexe CRS-Regel==&lt;br /&gt;
&lt;br /&gt;
  SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* &amp;quot;@rx (?i)union.*?select.*?from&amp;quot; \&lt;br /&gt;
  &amp;quot;id:942270,\&lt;br /&gt;
  phase:2,\&lt;br /&gt;
  block,\&lt;br /&gt;
  capture,\&lt;br /&gt;
  t:none,t:urlDecodeUni,\&lt;br /&gt;
  msg:'Looking for basic sql injection. Common attack string for mysql, oracle and others',\&lt;br /&gt;
  logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\&lt;br /&gt;
  tag:'application-multi',\&lt;br /&gt;
  tag:'language-multi',\&lt;br /&gt;
  tag:'platform-multi',\&lt;br /&gt;
  tag:'attack-sqli',\&lt;br /&gt;
  tag:'paranoia-level/1',\&lt;br /&gt;
  tag:'OWASP_CRS',\&lt;br /&gt;
  tag:'capec/1000/152/248/66',\&lt;br /&gt;
  tag:'PCI/6.5.2',\&lt;br /&gt;
  ver:'OWASP_CRS/3.3.0',\&lt;br /&gt;
  severity:'CRITICAL',\&lt;br /&gt;
  setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}',\&lt;br /&gt;
  setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}'&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese Regel prüft mit einem regulären Ausdruck auf das Vorkommen typischer SQL-Injection-Bestandteile ('''union''', '''select''', '''from''').&lt;br /&gt;
&lt;br /&gt;
==Weitere Informationen==&lt;br /&gt;
&lt;br /&gt;
* '''Referenzhandbuch''': https://github.com/SpiderLabs/ModSecurity/wiki&lt;br /&gt;
* '''CRS-Projekt''': https://coreruleset.org&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>