Headers, CSP, Zugriffsbeschränkungen, Verzeichnisschutz und Rate Limiting – praxisnah erklärt
Der Apache HTTP Server ist leistungsstark, flexibel und in Millionen von Websites weltweit im Einsatz. Doch mit großer Verbreitung steigt auch das Risiko: Fehlkonfigurationen können Angreifern Tür und Tor öffnen.
Mit den richtigen Sicherheitskonfigurationen schützt du deinen Apache effektiv vor typischen Angriffen wie Cross-Site-Scripting, Directory Traversal, Brute-Force oder Datenlecks. In diesem Beitrag zeigen wir dir praxisnah, wie du deinen Webserver mit wenigen, aber gezielten Einstellungen sicherer machst.
Grundprinzip: „Security by Configuration“
Sicherheit entsteht nicht allein durch Firewalls oder Updates – sie beginnt bei der richtigen Serverkonfiguration. Apache bietet dazu viele Module und Direktiven, mit denen du:
- HTTP-Header manipulieren,
- Zugriffe kontrollieren,
- Verzeichnisse absichern,
- Anfragen limitieren,
- und Datenlecks verhindern kannst.
Alle Beispiele gelten für Apache 2.4+ (Linux-Systeme wie Debian, Ubuntu, CentOS).
1. Sicherheitsrelevante Header aktivieren
Modul laden
``bash sudo a2enmod headers sudo systemctl restart apache2 ``
Empfohlene Header-Konfiguration
Füge folgende Direktiven in deine Apache- oder VirtualHost-Konfiguration ein:
```apache
# Verhindert Clickjacking Header always set X-Frame-Options "DENY"
# Aktiviert XSS-Schutz im Browser Header always set X-XSS-Protection "1; mode=block"
# Erzwingt HTTPS (HSTS) Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Versteckt Apache-Version ServerTokens Prod ServerSignature Off ```
Ergebnis: Der Server liefert bei jeder Antwort zusätzliche Sicherheitsheader aus, die Browser- und Angriffsschutz erhöhen.
2. Content Security Policy (CSP)
Eine Content Security Policy schützt vor Cross-Site-Scripting (XSS), indem sie definiert, von wo Skripte, Bilder oder Styles geladen werden dürfen.
Beispiel für eine strikte CSP:
``apache Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self'; img-src 'self' data:; font-src 'self'; frame-ancestors 'none';" ``
Tipp: Teste deine CSP mit https://csp-evaluator.withgoogle.com So erkennst du Schwachstellen und kannst schrittweise nachjustieren.
3. Zugriffsbeschränkungen und Verzeichnisschutz
Zugriff auf bestimmte IP-Adressen beschränken
``apache ``
Nur Clients aus dem internen Netzwerk dürfen /admin aufrufen.
Passwortschutz per .htpasswd
``apache ``
Passwortdatei erstellen:
``bash sudo htpasswd -c /etc/apache2/.htpasswd adminuser ``
4. Verzeichnisse und sensible Dateien schützen
Verhindere den Zugriff auf systemkritische oder Konfigurationsdateien:
```apache
Directory Listing verhindern
Options -Indexes ```
So kann niemand deine .env-, .git- oder .htaccess-Dateien abrufen.
5. Rate Limiting – Schutz vor Brute-Force und DDoS
Mit dem Modul mod_ratelimit und mod_evasive kannst du die Bandbreite und Anfragen pro Client begrenzen.
Modul aktivieren:
``bash sudo a2enmod ratelimit sudo apt install libapache2-mod-evasive -y ``
Beispielkonfiguration (in VirtualHost oder global):
``apache ``
Limitiert den Datentransfer auf 256 KB/s pro Verbindung.
mod_evasive Beispiel:
``bash ``
Erkennt und blockiert zu viele Requests von derselben IP innerhalb kurzer Zeit.
6. SSL/TLS-Härtung
Aktiviere HTTPS mit Let’s Encrypt:
``bash sudo apt install certbot python3-certbot-apache sudo certbot --apache ``
Harte Verschlüsselungseinstellungen:
``apache SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5:!3DES SSLHonorCipherOrder On ``
Entfernt unsichere Protokolle (z. B. TLS 1.0) und schwache Ciphers.
Teste deine SSL-Konfiguration mit: https://www.ssllabs.com/ssltest/
7. Logging & Monitoring
Überwache Zugriffe und potenzielle Angriffe:
``bash sudo tail -f /var/log/apache2/access.log /var/log/apache2/error.log ``
Oder nutze Tools wie:
- GoAccess (visuelles Log-Analyse-Tool)
- Fail2Ban (automatisches Blockieren auffälliger IPs)
- Netdata oder Grafana für Live-Monitoring
8. Bonus: Sichere Standardwerte
| Einstellung | Empfehlung | | --------------------- | ------------------------------------------------- | | ServerTokens Prod | Versteckt genaue Apache-Version | | ServerSignature Off | Entfernt Server-Infos von Fehlerseiten | | TraceEnable Off | Deaktiviert TRACE-Methode | | Timeout 30 | Kurze Timeouts verhindern DoS durch Hängenbleiben | | FileETag None | Verhindert Dateiinformationen im Header |
Sicherheit im Apache-Server besteht aus vielen kleinen Stellschrauben – aber jede einzelne trägt zum Gesamtbild bei. Wer Header, Zugriffskontrolle, Verschlüsselung und Limits konsequent einsetzt, verwandelt seinen Server in ein robustes Bollwerk.
Sichere Konfigurationen kosten wenige Minuten, ersparen dir aber tagelangen Ärger.