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.