- Veröffentlicht am
- • How2-Tipps
Sicherheitskonfigurationen für Apache-Webserver
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Headers, CSP, Zugriffsbeschränkungen, Verzeichnisschutz und Rate Limiting – praxisnah erklärt
Der Apache HTTP Server zählt zu den meistgenutzten Webservern weltweit. Er ist flexibel, stabil und hoch konfigurierbar – aber auch anfällig, wenn Sicherheitsaspekte vernachlässigt werden. Zum Glück lässt sich der Apache mit wenigen, gezielten Einstellungen deutlich absichern.
In diesem Artikel erfährst du praxisnah, wie du deinen Apache-Webserver mit modernen Sicherheitskonfigurationen – von HTTP-Headern über Content Security Policy (CSP) bis hin zu Rate Limiting – härtest und vor Angriffen schützt.
Grundprinzip: Sicherheit durch Konfiguration
Sicherheit bedeutet beim Apache in erster Linie, unerwünschte Informationen und Zugriffe zu verhindern. Jede Einstellung, jeder Header und jede Restriktion trägt dazu bei, deine Serverumgebung robuster zu machen.
Wichtige Ziele:
- Minimale Angriffsfläche
- Zugriff nur für autorisierte Nutzer
- Sichere Datenübertragung (HTTPS)
- Schutz sensibler Dateien und Verzeichnisse
- Schutz vor Brute-Force und DDoS
1. Sicherheitsrelevante Header aktivieren
Modul laden
sudo a2enmod headers
sudo systemctl restart apache2
Empfohlene Header-Konfiguration
Diese Direktiven gehören in deine Apache- oder VirtualHost-Konfiguration:
<IfModule mod_headers.c>
# Verhindert MIME-Type Sniffing
Header always set X-Content-Type-Options "nosniff"
# Verhindert Clickjacking
Header always set X-Frame-Options "DENY"
# Aktiviert XSS-Schutz
Header always set X-XSS-Protection "1; mode=block"
# HTTPS-Zwang über HSTS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Entfernt Server-Signatur
ServerTokens Prod
ServerSignature Off
</IfModule>
Tipp: Teste die Header mit securityheaders.com oder observatory.mozilla.org.
2. Content Security Policy (CSP)
Eine Content Security Policy schützt vor Cross-Site-Scripting (XSS) und Datenmanipulation. Sie definiert, welche Quellen Browser für Skripte, Styles und Medien akzeptieren dürfen.
Beispiel:
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';"
Diese Regel:
- erlaubt Inhalte nur von der eigenen Domain,
- blockiert Frames,
- erlaubt eingebettete Bilder (z. B. Logos) über
data:-URIs.
Test-Tipp: Mit dem CSP Evaluator von Google kannst du deine Policy analysieren.
3. Zugriffsbeschränkungen
IP-basierter Zugriffsschutz
Nur bestimmte IPs dürfen ein Admin-Verzeichnis öffnen:
<Directory /var/www/admin>
Require ip 192.168.0.0/24
Require all denied
</Directory>
So bleiben interne Admin-Bereiche wirklich intern.
Passwortschutz per .htpasswd
<Directory /var/www/secure>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
Passwortdatei erstellen:
sudo htpasswd -c /etc/apache2/.htpasswd admin
Tipp: Kombiniere IP- und Passwortschutz für maximale Sicherheit.
4. Verzeichnisschutz und sensible Dateien
Zugriff auf kritische Dateien blockieren
<FilesMatch "\.(env|git|htaccess|config|json|lock|ini)$">
Require all denied
</FilesMatch>
Directory Listing deaktivieren
Options -Indexes
Damit niemand durch deine Verzeichnisse stöbern kann, wenn keine index.html existiert.
5. Rate Limiting – Schutz vor DDoS & Brute-Force
Apache kann über Module wie mod_ratelimit und mod_evasive Datenströme kontrollieren.
Modul aktivieren:
sudo a2enmod ratelimit
sudo apt install libapache2-mod-evasive -y
Beispiel: Bandbreitenlimitierung
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 512
</IfModule>
Beschränkt die Übertragungsgeschwindigkeit auf 512 KB/s pro Verbindung.
Beispiel: mod_evasive gegen Angriffe
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 30
DOSBlockingPeriod 60
DOSEmailNotify admin@example.com
</IfModule>
Blockiert IPs, die zu viele Anfragen in kurzer Zeit senden.
6. SSL/TLS-Härtung
Aktiviere HTTPS mit Let’s Encrypt:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Sichere SSL-Einstellungen:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder On
Teste dein Setup mit SSL Labs Test.
7. Logging & Monitoring
Aktiviere detailliertes Logging, um Angriffe frühzeitig zu erkennen:
sudo tail -f /var/log/apache2/error.log
Tools wie:
- GoAccess (Live-Analyse von Logs)
- Fail2Ban (automatische IP-Sperrung)
- Netdata oder Grafana (Überwachung von Traffic und Ressourcen)
können dein Monitoring deutlich verbessern.
8. Weitere Best Practices
| Maßnahme | Beschreibung |
|---|---|
ServerTokens Prod |
Verhindert das Ausgeben der Apache-Version |
ServerSignature Off |
Entfernt Serverinformationen von Fehlerseiten |
TraceEnable Off |
Deaktiviert TRACE-Methoden |
Timeout 30 |
Verhindert überlange Requests |
FileETag None |
Reduziert unnötige Header-Infos |
KeepAlive On |
Optimiert Verbindungen, erhöht aber Transparenzkontrolle nötig |
Ein sicher konfigurierter Apache ist kein Zufall – sondern das Ergebnis sorgfältiger Einstellungen. Mit wenigen Direktiven lässt sich der Server erheblich härten, ohne auf Performance zu verzichten.
Headers, CSP, Zugriffsschutz und Rate Limiting bilden das Fundament einer soliden Webserver-Sicherheitsstrategie.
Investiere 30 Minuten in Konfiguration – und erspare dir tagelangen Stress durch Sicherheitsvorfälle.