How2-Tipps

Sicherheitskonfigurationen für Apache-Webserver

Apache absichern leicht gemacht: Sicherheitskonfigurationen mit Headers, CSP, Zugriffsbeschränkungen, Verzeichnisschutz und Rate Limiting – praxisnah erklärt.

1 min Lesezeit
Sicherheitskonfigurationen für Apache-Webserver

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 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 ```

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 Require ip 192.168.0.0/24 Require all denied ``

Nur Clients aus dem internen Netzwerk dürfen /admin aufrufen.

Passwortschutz per .htpasswd

``apache AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user ``

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 Require all denied

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 SetOutputFilter RATE_LIMIT SetEnv rate-limit 256 ``

Limitiert den Datentransfer auf 256 KB/s pro Verbindung.

mod_evasive Beispiel:

``bash DOSHashTableSize 3097 DOSPageCount 5 DOSSiteCount 20 DOSBlockingPeriod 60 DOSEmailNotify admin@example.com ``

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.