Apache VirtualHost mit Define-Variablen effektiv nutzen
Apache Define-Variablen sind eine elegante Möglichkeit, wiederverwendbare Konfigurationen zu erstellen. Sie ermöglichen es, Werte bereits zur Konfigurations-Ladezeit zu setzen und innerhalb von VirtualHost-Blöcken sowie in Include-Dateien zu verwenden.
Vorteile der Nutzung von Define-Variablen
Define-Werte werden frühzeitig ersetzt, bevor Apache die Konfigurationsdateien verarbeitet.- Include-Dateien erben automatisch die definierten Werte, wenn sie innerhalb eines 
<VirtualHost>-Blocks geladen werden. - Keine zusätzlichen Module wie 
mod_macroerforderlich. - Erhöhte Lesbarkeit und Wartbarkeit der Konfigurationsdateien.
 
Beispielkonfiguration
VirtualHost-Konfiguration (sites-available/www.example.com.conf)
Define ServerName www.example.com
Define LogDirectory /var/log/apache2
Define ModSecMode DetectionOnly
<VirtualHost *:80>
    ServerName   ${ServerName}
    Include      conf-available/redirect_https.conf
</VirtualHost>
<VirtualHost *:443>
    ServerName   ${ServerName}
    # SSL-Konfiguration
    Include      custom.d/ssl_example.com.conf
    # ModSecurity-Konfiguration laden
    Include      custom.d/waf-config.conf
    # Logging
    ErrorLog  ${LogDirectory}/${ServerName}_err.log
    LogLevel  warn
</VirtualHost>
ModSecurity Include-Datei (custom.d/waf-config.conf)
# File: custom.d/waf-config.conf
# Created: 2025-03-05 15:20:15
# Description: ModSecurity configuration for each virtualhost
<IfModule security2_module>
    SecRuleEngine ${ModSecMode}
    SecAuditLog ${LogDirectory}/${ServerName}_modsec.log
    SecWebAppId "${ServerName}"
    # OWASP Core Rule Set in der richtigen Reihenfolge laden
    IncludeOptional /etc/modsecurity/custom/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
    IncludeOptional /etc/modsecurity/custom/vhostrules.d/${ServerName}_modsec.conf
    IncludeOptional /etc/modsecurity/custom/global_rules.conf
    IncludeOptional /etc/modsecurity/crs/rules/*.conf
    IncludeOptional /etc/modsecurity/custom/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Funktionsweise
- 
Define-Werte setzen- Die 
Define-Werte werden außerhalb des<VirtualHost>-Blocks definiert. - Diese Werte sind ab dem Zeitpunkt der Verarbeitung für Apache verfügbar.
 
 - Die 
 - 
Variablen in
VirtualHostverwendenServerName ${ServerName}setzt die Werte korrekt.Include-Dateien können innerhalb desVirtualHost-Blocks auf die Variablen zugreifen.
 - Variablen in Include-Dateien nutzen
custom.d/waf-config.confkann auf die definierten Werte zugreifen.SecRuleEngine ${ModSecMode}wird direkt durch den WertDetectionOnlyoderOnersetzt.- Das Logging nutzt den definierten 
LogDirectory-Pfad korrekt. 
 
Fazit
Die Nutzung von Define-Variablen in Apache-Konfigurationen bietet eine effiziente und ressourcenschonende Methode, um vHost-Konfigurationen modular und wiederverwendbar zu gestalten. Besonders in Kombination mit Include-Dateien bleibt die Konfiguration übersichtlich, flexibel und einfach zu verwalten.