Custom Mod_Security Rules

  • Hallo Zusammen,

    wie und wo realisiert ihr custom mod_security rules? SE und PD sind auf aktuellem Stand.

    - Ablegen in dem Verzeichnis "conf/coreruleset-current/rules/" funktioniert, aber ist nicht "Update resistent" bei updates von CRS. (oder irre ich mich hier). Edit: funktioniert nur, wenn auch die OWASP CRS aktiviert sind...

    - Einbinden via Include in der httpd24.conf-template funktioniert nicht, da die Direktive dann weit vorher in der httpd.conf generiert wird wie der Rest von mod_security (diese ganz unten). Somit wird die Regel nicht angewendet.

    - Die crs-setup.conf wird auch dynamisch via httpd_vhosts.pl generiert und kann nicht genutzt werden.

    Wie realisiert ihr dieses? Vor allem, dass dieses bei Updates weiterhin ohne manuellem Eingriff weiterhin funktioniert?

    Grüße

    Einmal editiert, zuletzt von tobiw (28. Oktober 2025 um 19:28)

  • Keiner eine Idee?

    Versuche ebenfalls das Debug-Log von ModSecurity zu aktivieren, leider ebenfalls keine Möglichkeit via httpd24-conf-template.

    Via "Anfügen" in der httpd.conf und nur ein "apache reload" ohne httpd_vhosts.pl funktioniert! (leider nur bis zur erneuten automatischen Generierung der httpd.conf).

    Gibt es hier wirklich keine Möglichkeit Direktiven ganz zum Schluss in der httpd.conf nachzuladen (via template etc. oder oder)?

  • Ich weiß jetzt nicht ob es hilft, weil ich von mod_security noch nicht so viel Ahnung habe. Aber ganz allgemein gesprochen, wird zur Generierung der httpd.conf die /usr/local/pd-admin2/httpd-2.4/conf/httpd24.conf-template herangezogen. Dort kannst Du durchaus eigene Konfigurationen einfügen.

    Schwierig wird es halt immer nur dann, wenn Du eigene Konfigurationen hinzufügen willst zu den automatischen generierten Einträgen.

    Beste Grüße,
    Michael

  • Allgemein funktioniert ja das "Anfügen" via httpd24-template! PD-Admin fügt seine WAF-Konfiguration am Ende der httpd.conf ein. Meine Modifikation via httpd24.conf-template wird jedoch weit vor dieser Konfiguration erstellt, welche somit nicht von mod_security beachtet wird!

  • Entschuldige, ich hatte in Deinem Eingangspost leider überlesen dass Dir das schon bekannt war mit der Template Datei. Leider hab ich hier dann auch keine weitere Idee derzeit. Vielleicht als Wunsch einmelden. Bei der Gelegenheit fände ich es auch fein, wenn man mod_security je Account aktivieren könnte und nicht nur je gesamten Server.

    Beste Grüße,
    Michael

  • Habs jetzt anders gelöst:

    Normalerweise lädt PD-Admin das security2-Apache-Modul, je nachdem, ob die WAF aktiviert oder deaktiviert ist!

    Lade dieses nun permanent via der httpd24.conf-template und setze direkt im Anschluss dort meine individuellen Einstellungen.

    Somit werden diese nun durch mod_security berücksichtigt. Die PD-Admin eigenen Regeln werden weiterhin am Ende eingefügt, je nach Einstellung der WAF.

    Wäre schön, wenn es in Zukunft hier mehr individuelle Einstellungsmöglichkeiten geben würde!

  • In meinen Fall wären es aktuell das Hinzufügen von individuellen Regeln, welche auch "updateresistent" sind (z.B. ein include von conf/rules.d/additional_rules.conf), so mache ich es aktuell (siehe vorherigen Post).

    Modifizieren von globalen Optionen, z.B. Logging-Optionen (SecDebugLogLevel, Log-Speicherort)

    Bezüglich mod-security wird fast alles automatisch (was auch generell OK ist) generiert, jedoch mit kaum individuellen Anpassungsmöglichkeiten bzw. individuellen Einstellungen.

    Wie seht ihr das?

  • Wie seht ihr das?

    Ich komm gar nicht so weit zu solchen Überlegungen, weil wie gesagt, mein Hauptproblem ist dass mod_security eine Serverweite Einstellung ist. Kommt auch nur ein Projekt auf dem Server, warum auch immer, nicht mit mod_security zurecht, ist es für den ganzen Server gestorben, weil ich es dann abdrehen muss. Das ist mir bisher relativ oft passiert. Daher würde ich mir eine Schaltung je Account wünschen.

    Beste Grüße,
    Michael

  • Was du hier theoretisch machen könntest ist die WAF global auszuschalten und das Modul inkrementell im jeweiligen vhost via "httpd_vhost_module" einzeln nachzuladen... Wäre aber eher aus meiner Sicht gebastelt, komplex bezüglich der ganzen Konfiguration und wird schnell unübersichtlich!

    Einzelne vhosts (beispielsweise durch Anpassung via "httpd_vhost_module) lassen sich hier ja leider nicht modifizieren (wenn WAF global aktiviert), da mod_security zum Schluss in der httpd.conf geladen wird.

    Vielleicht wäre das auch noch ein Verbesserungsvorschlag, mod_security vor den vhosts zu laden, um Ausnahmen im vhost setzen zu können.

  • Beschäftige mich nun seit einigen Tagen intensiver mit ModSecurity auf mehreren PD-Admin-Servern mit unterschiedlich installierten Anwendungen.

    Wie tbc233 bereits geschrieben wäre es klasse, Einstellungen auf vhost oder Kundenbasis setzen zu können. Musste hier viele Regelausnahmen setzen, da Applikationen nicht mehr vernünftig liefen! Leider geschieht dieses nur global für den gesamten Server, obwohl nur ein Kunde bzw. vhost betroffen ist.

    Auch individuelle Einstellungen von ModSecurity, beispielsweise das Hinzufügen von Mime-Types welche in meinem Fall geblockt wurden (tx.allowed_request_content_type oder auch andere Variablen) wären super.

  • Ich habe es noch nicht ausprobiert, aber sollte das nicht wie folgt gehen:
    1. Ergänzen der /opt/pdadmin/etc/pdadmin.conf Datei um folgenden Eintrag:
    $httpd_vhost_module = '/opt/pdadmin/bin/add_vhost_customizations.sh';

    2. In der add_vhost_customizations.sh folgendes eintragen:
    #!/bin/sh
    if [ -f /opt/pdadmin/vhost_customizations/$1 ]; then
    cat /opt/pdadmin/vhost_customizations/$1
    else
    exit
    fi

    3. Im Verzeichnis /opt/pdadmin/vhost_customizations/ jeweils für jede Domain eine Datei anlegen, die individuelle Einstellungen braucht und als erste Zeile dort jeweils folgendes eintragen:
    #httpd_vhost_module: incremental

    Dadurch werden die Einstellungen an die bestehenden vhost Einstellungen angehängt/beigefügt.


    Bei mir funktioniert das für so ziemlich alles ... allerdings habe ich es noch nicht mit mod_security Einstellungen ausprobiert.

    Mit freundlichen Grüßen,

    BrowsingMan

  • Mache es genauso, schreibe jedoch alles in das Shell-Skript:

    if [ "$1" = "DOMAIN" ]; then
    echo "#httpd_vhost_module: incremental"
    VALUE_XXX
    fi

    Deine Variante find ich da aber etwas übersichtlicher! Baue das mal so um!

    Mit ModSecurity funktioniert das leider nicht (zumindest nach meinen Tests), da die vhost-Sektionen vorher geladen werden.

  • Nach Update auf PD-Admin v4.137 mit der Verbesserung "mod_security vor VirtualHosts-Konfiguration laden" funktionieren nun individuelle Einstellungen bezüglich ModSecurity im vhost-Container, hier beispielsweise Secrule-Ausnahmen:

    #httpd_vhost_module: incremental
    <IfModule security2_module>
    SecRuleRemoveById <RuleID>
    </IfModule>

    VIelen Dank für das schnelle Update!