Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt-offen:software:dokuwiki

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
projekt-offen:software:dokuwiki [11-11-2026 16:53] – Externe Bearbeitung 127.0.0.1projekt-offen:software:dokuwiki [11-11-2026 17:07] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 141: Zeile 141:
 ---- ----
  
-==== Webserver/htaccess/Passwortschutz ====+==== Webserver-Schutz mit .htaccess ====
  
-[[https://wiki.selfhtml.org/wiki/Webserver/htaccess/Passwortschutz|Webserver/htaccess/Passwortschutz]]+<accordion autoclose> <accordion-item title=".: .htaccess – der Türsteher des Webservers :.">
  
-==== Webserver/htaccess ====+<WRAP round info> 
 +**Worum geht es?** Ein Webserver gibt normalerweise jede Datei heraus, nach der jemand fragt. Mit kleinen Textdateien namens **.htaccess** legt man fest, welche Ordner gesperrt sind, wo ein Passwort nötig ist und dass alles verschlüsselt (HTTPS) läuft. Dieser Beitrag erklärt das Prinzip, zeigt kommentierte Beispiele und beschreibt, wie dieses Wiki geschützt ist. 
 +</WRAP>
  
-[[https://wiki.selfhtml.org/wiki/Webserver/htaccess|Webserver/htaccess/]]+{{ :projekt-offen:software:plugins:htaccess_tuersteher.png?660 |Schaubild: die .htaccess als Türsteher}} 
 +<WRAP center 90%>//Für jede Anfrage schaut der Webserver in die .htaccess des Ordners: ausliefern, sperren oder nach einem Passwort fragen.//</WRAP> 
 + 
 +**📌 Auf einen Blick** 
 + 
 +^ Was ^ Wie ^ 
 +| Datei | ''.htaccess'' – reiner Text, gilt für ihren Ordner **und alle Unterordner** | 
 +| Wer liest sie? | der Webserver **Apache** (bei den meisten Webhostern Standard) | 
 +| Wichtigste Aufgaben | Ordner sperren · Passwortschutz · auf HTTPS umleiten · Sicherheits-Header | 
 +| Passwortdatei | ''.htpasswd'' – Benutzernamen mit **verschlüsselten** Passwörtern | 
 +| Achtung | gilt nicht für andere Webserver wie nginx – dort steht dasselbe in der Server-Konfiguration | 
 + 
 +---- 
 + 
 +**🚪 1. Was ist eine .htaccess?** 
 + 
 +Der Name bedeutet //hypertext access//, also „Zugriff auf Webseiten“. Der Punkt am Anfang macht die Datei unter Linux **versteckt** – im FTP-Programm muss man manchmal erst „versteckte Dateien anzeigen“ einschalten. 
 + 
 +So arbeitet der Webserver: 
 + 
 +  - Ein Besucher ruft z. B. ''https://euroba.de/conf/local.php'' auf. 
 +  - Apache sucht in ''conf/'' und allen Ordnern darüber nach einer ''.htaccess''. 
 +  - Findet er dort ein Verbot, antwortet er mit **403 Verboten**, statt die Datei herauszugeben. 
 + 
 +<WRAP round tip> 
 +**Merksatz:** Eine ''.htaccess'' wirkt wie ein Schild an der Ordnertür. Es gilt für den ganzen Raum dahinter – also auch für alle Unterordner. 
 +</WRAP> 
 + 
 +---- 
 + 
 +**⛔ 2. Ordner komplett sperren – so schützt sich DokuWiki** 
 + 
 +DokuWiki speichert alles in Dateien (siehe Beitrag „DokuWiki (Erklärung)“). Diese Dateien dürfen **nie direkt** aus dem Internet abrufbar sein. Sonst könnte jemand die Rohtexte geschlossener Seiten oder die Benutzerliste mit Passwort-Hashes einfach herunterladen. Deshalb liefert DokuWiki in jedem Systemordner diese ''.htaccess'' mit: 
 + 
 +<code apache> 
 +## Kein Zugriff aus dem Internet auf diesen Ordner 
 +## (liegt in data/, conf/, inc/, bin/ und vendor/) 
 + 
 +<IfModule mod_authz_core.c> 
 +    # Apache 2.4 und neuer: "Allen wird der Zugriff verweigert" 
 +    Require all denied 
 +</IfModule> 
 + 
 +<IfModule !mod_authz_core.c> 
 +    # Ältere Apache-Versionen (2.2) verstehen nur die alte Schreibweise: 
 +    # erst erlauben prüfen, dann verbieten – und verboten ist "alles" 
 +    Order allow,deny 
 +    Deny from all 
 +</IfModule> 
 +</code> 
 + 
 +**Warum zwei Blöcke?** ''<IfModule>'' heißt „nur wenn dieses Modul vorhanden ist“. So funktioniert dieselbe Datei auf alten und neuen Servern. Der Zugriff von **DokuWiki selbst** (über PHP) ist davon nicht betroffen – gesperrt wird nur der direkte Abruf über den Browser. 
 + 
 +^ Ordner ^ Was darin liegt ^ Was passieren würde ohne Sperre ^ 
 +| ''data/'' | alle Seiten, alte Versionen, Medien, Plugin-Daten | geschlossene Seiten wären über ihren Dateipfad lesbar | 
 +| ''conf/'' | Einstellungen, Benutzer, Rechte | Benutzerliste mit Passwort-Hashes wäre abrufbar | 
 +| ''inc/'', ''bin/'', ''vendor/'' | Programmcode und Werkzeuge | Programmteile könnten einzeln aufgerufen werden | 
 + 
 +---- 
 + 
 +**🔑 3. Ein Ordner mit Passwort – .htaccess + .htpasswd** 
 + 
 +Für Ordner **außerhalb** des Wikis (z. B. eine kleine Umfrage oder Unterlagen für einen Kurs) kann man ein Passwort verlangen. Der Browser zeigt dann ein Anmeldefenster. Man braucht zwei Dateien: 
 + 
 +<code apache> 
 +## .htaccess im zu schützenden Ordner 
 + 
 +# Art der Anmeldung: "Basic" = Browser-Anmeldefenster 
 +AuthType Basic 
 + 
 +# Text, der im Anmeldefenster steht 
 +AuthName "Nur fuer Kursteilnehmer" 
 + 
 +# Wo die Passwortdatei liegt – IMMER der volle Pfad auf dem Server, 
 +# und am besten AUSSERHALB des öffentlichen Webordners 
 +AuthUserFile /pfad/ausserhalb/des/webordners/.htpasswd 
 + 
 +# Wer darf rein? "valid-user" = jeder, der in der .htpasswd steht 
 +Require valid-user 
 +</code> 
 + 
 +Die ''.htpasswd'' enthält pro Zeile einen Benutzer und sein **verschlüsseltes** Passwort (genauer: einen Hash), nie das Passwort im Klartext: 
 + 
 +<code bash> 
 +# Neue Passwortdatei anlegen (-c) mit dem sicheren bcrypt-Verfahren (-B) 
 +# Das Programm fragt das Passwort ab – es steht so nicht im Befehlsverlauf. 
 +htpasswd -c -B /pfad/ausserhalb/des/webordners/.htpasswd kursteilnehmer 
 + 
 +# Weiteren Benutzer hinzufügen: OHNE -c, sonst wird die Datei überschrieben! 
 +htpasswd -B /pfad/ausserhalb/des/webordners/.htpasswd kollegin 
 +</code> 
 + 
 +Erwartete Ausgabe: ''Adding password for user kursteilnehmer''. In der Datei steht danach z. B. ''kursteilnehmer:$2y$05$…'' – der Teil nach dem Doppelpunkt ist der Hash. 
 + 
 +<WRAP round important> 
 +**Drei Regeln für den Passwortschutz:** 
 +  - **Nur mit HTTPS.** „Basic“ schickt das Passwort bei jeder Anfrage mit – ohne Verschlüsselung könnte es mitgelesen werden. 
 +  - **Die .htpasswd gehört nicht in den Webordner.** Wenn das nicht geht, muss sie selbst gesperrt sein. Die Regel dafür steht in Abschnitt 4. 
 +  - **Bei Webhostern** gibt es dafür meist einen Menüpunkt wie „Verzeichnisschutz“ im Kundenmenü. Er legt beide Dateien richtig an – das ist der einfachste und sicherste Weg. 
 +</WRAP> 
 + 
 +---- 
 + 
 +**🔒 4. HTTPS erzwingen, Systemdateien verstecken, Header setzen** 
 + 
 +Eine ''.htaccess'' im obersten Ordner kann für die ganze Webseite gelten. DokuWiki bringt dafür eine Vorlage mit: ''.htaccess.dist''. Das „.dist“ bedeutet „Vorlage“ – sie wirkt erst, wenn man sie in ''.htaccess'' umbenennt. 
 + 
 +<code apache> 
 +## Keine Verzeichnislisten: Ordner ohne index-Datei zeigen KEINEN Dateiinhalt an 
 +Options -Indexes 
 + 
 +## .htaccess, .htpasswd, README, VERSION und COPYING nicht herausgeben 
 +## (VERSION verrät z. B. die genaue Programmversion – nützlich für Angreifer) 
 +<Files ~ "^([\._]ht|README$|VERSION$|COPYING$)"> 
 +    Require all denied 
 +</Files> 
 + 
 +## Wer http:// aufruft, wird dauerhaft (301) auf https:// umgeleitet 
 +RewriteEngine on 
 +RewriteCond %{HTTPS} off 
 +RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
 + 
 +## Browser anweisen, diese Seite ein Jahr lang NUR noch per HTTPS zu öffnen (HSTS) 
 +<IfModule mod_headers.c> 
 +    Header always set Strict-Transport-Security "max-age=31536000" 
 +</IfModule> 
 +</code> 
 + 
 +<WRAP round tip> 
 +**Vorsicht beim Ausprobieren:** Ein Tippfehler in der ''.htaccess'' führt sofort zu „500 Internal Server Error“ – für die **ganze** Seite. Deshalb: vorher eine Kopie der alten Datei anlegen, jede Änderung einzeln testen und bei einem Fehler die Kopie zurückspielen. 
 +</WRAP> 
 + 
 +---- 
 + 
 +**🧪 5. Selbst prüfen – funktioniert der Schutz?** 
 + 
 +Man muss nicht raten. Mit dem Befehl ''curl'' (unter Windows, Linux und macOS vorhanden) fragt man den Webserver direkt und sieht nur die Antwortnummer: 
 + 
 +<code bash> 
 +# -s = still, -o NUL = Inhalt wegwerfen (Linux/macOS: -o /dev/null), 
 +# -w = nur den HTTP-Statuscode ausgeben 
 +curl -s -o NUL -w "%{http_code}\n" https://euroba.de/conf/local.php 
 +curl -s -o NUL -w "%{http_code}\n" https://euroba.de/data/pages/start.txt 
 +curl -s -o NUL -w "%{http_code}\n" http://euroba.de/doku.php 
 +</code> 
 + 
 +^ Antwort ^ Bedeutung ^ Gut oder schlecht? ^ 
 +| ''403'' | Verboten – der Türsteher hat Nein gesagt | ✅ gut bei Systemordnern | 
 +| ''302'' auf die Startseite | Der Server leitet verbotene Anfragen auf die Startseite um | ✅ ebenfalls gut – die Datei kommt nicht heraus | 
 +| ''401'' | Passwort erforderlich | ✅ gut bei geschützten Ordnern | 
 +| ''301'' auf https:// | Umleitung auf die verschlüsselte Seite | ✅ gut beim Aufruf mit http:// | 
 +| ''200'' | Datei wird ausgeliefert | ❌ **schlecht** bei ''conf/'' oder ''data/''! | 
 + 
 +---- 
 + 
 +**🛡️ 6. So ist das EURoBa-Wiki geschützt** 
 + 
 +Stand der Prüfung: 11.11.2026, von außen mit ''curl'' getestet. 
 + 
 +^ Schutz ^ Stand ^ Wie ^ 
 +| Systemordner ''data/'', ''conf/'', ''inc/'', ''bin/'', ''vendor/'' | ✅ gesperrt | je eine ''.htaccess'' mit ''Require all denied'' | 
 +| Umleitung http → https | ✅ aktiv | ''301'' auf die verschlüsselte Adresse | 
 +| Verzeichnislisten | ✅ aus | Ordner ohne Startdatei zeigen keinen Inhalt | 
 +| Sicherheits-Header | ✅ gesetzt | DokuWiki sendet z. B. ''X-Frame-Options'' (Schutz vor fremden Rahmen) und ''X-Content-Type-Options'' | 
 +| Wer darf welche Wiki-Seite lesen? | ✅ geregelt | nicht per ''.htaccess'', sondern über die **Zugriffsrechte (ACL)** von DokuWiki | 
 + 
 +<WRAP round tip> 
 +**Merksatz:** Zwei Schlösser für zwei Aufgaben. Die ''.htaccess'' schützt die **Dateien** auf dem Server. Die ACL von DokuWiki regelt, wer welche **Seiten** im Wiki sehen und bearbeiten darf. 
 +</WRAP> 
 + 
 +---- 
 + 
 +**⚠️ 7. Typische Fehler** 
 + 
 +^ Fehler ^ Folge ^ Besser ^ 
 +| ''.htaccess'' beim Hochladen vergessen (versteckte Datei!) | Ordner ist ungeschützt | im FTP-Programm versteckte Dateien anzeigen lassen und danach mit ''curl'' prüfen | 
 +| Passwortschutz ohne HTTPS | Passwort kann mitgelesen werden | immer HTTPS | 
 +| ''.htpasswd'' im Webordner | Hashes können heruntergeladen werden | außerhalb ablegen oder sperren | 
 +| ''htpasswd -c'' beim zweiten Benutzer | erster Benutzer ist weg | ''-c'' nur beim allerersten Mal | 
 +| Alte Installationsdateien und Archive im Webordner | verraten Versionen und Aufbau | nach der Installation löschen | 
 +| Tippfehler | „500 Internal Server Error“ | vorher sichern, einzeln testen | 
 + 
 +---- 
 + 
 +**🎓 8. Ideen für den Unterricht** 
 + 
 +  * **Türsteher-Test:** Auf einem Raspberry Pi mit Apache einen Ordner anlegen, eine Datei hineinlegen, abrufen. Dann ''Require all denied'' setzen und erneut abrufen. Was ändert sich am Statuscode? 
 +  * **Passwort-Ordner:** Mit ''htpasswd'' einen Benutzer anlegen und einen Ordner schützen. Wie sieht der Hash aus? Warum ist er bei jedem Durchlauf anders? 
 +  * **Mitlesen im Klartext:** In einem Testnetz mit Wireshark zeigen, wie ein Basic-Passwort über http:// sichtbar wird – und über https:// nicht mehr. 
 +  * **Detektivarbeit:** Mit ''curl -I'' die Header verschiedener Webseiten vergleichen. Wer setzt HSTS, wer nicht? 
 + 
 +---- 
 + 
 +**📚 Weiterlesen** 
 + 
 +  * [[https://wiki.selfhtml.org/wiki/Webserver/htaccess|SELFHTML: Webserver/htaccess]] – Grundlagen 
 +  * [[https://wiki.selfhtml.org/wiki/Webserver/htaccess/Passwortschutz|SELFHTML: Webserver/htaccess/Passwortschutz]] – Passwortschutz Schritt für Schritt 
 +  * [[https://www.dokuwiki.org/security|dokuwiki.org: Security]] – Sicherheitshinweise für DokuWiki 
 + 
 +</accordion-item> </accordion>
  
 ---- ----
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki