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