- 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 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
sudo a2enmod headers
sudo systemctl restart apache2
Empfohlene Header-Konfiguration
Füge folgende Direktiven in deine Apache- oder VirtualHost-Konfiguration ein:
<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 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
</IfModule>
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:
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
<Directory /var/www/admin>
Require ip 192.168.0.0/24
Require all denied
</Directory>
Nur Clients aus dem internen Netzwerk dürfen /admin aufrufen.
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 adminuser
4. Verzeichnisse und sensible Dateien schützen
Verhindere den Zugriff auf systemkritische oder Konfigurationsdateien:
<FilesMatch "\.(env|git|htaccess|config|json|lock|ini)$">
Require all denied
</FilesMatch>
# 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:
sudo a2enmod ratelimit
sudo apt install libapache2-mod-evasive -y
Beispielkonfiguration (in VirtualHost oder global):
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 256
</IfModule>
Limitiert den Datentransfer auf 256 KB/s pro Verbindung.
mod_evasive Beispiel:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 20
DOSBlockingPeriod 60
DOSEmailNotify admin@example.com
</IfModule>
Erkennt und blockiert zu viele Requests von derselben IP innerhalb kurzer Zeit.
6. SSL/TLS-Härtung
Aktiviere HTTPS mit Let’s Encrypt:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Harte Verschlüsselungseinstellungen:
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:
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.