open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Sicherheitskonfigurationen für Apache-Webserver

Autor
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

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.