Wissen

htaccess und htpasswd – So schützt man Verzeichnisse und Files mit Apache Boardtools

Anleitung: So richtet man einen geschützten Bereich auf einer Webseite ein

Wenn man Daten und Informationen im Internet veröffentlich sollen diese ja im Normalfall öffentlich zugänglich sein. Doch hin und wieder sollen bestimmte Bereiche vielleicht doch privat bleiben oder man möchte einzelne Files vor Zugriff schützen um z.B. Hack-Attacken vorzubeugen. Wie man einen Passwortschutz über die Apache Boardmitteln einrichten kann, möchte ich Euch hier nun kurz erklären. Dabei versuche ich die Vorgehensweise so zu beschreiben, dass das kleine HowTo sowohl von Experten als auch von Einsteigern genutzt werden kann.

Basics:
Der Apache Server kann auf zwei Arten in seiner Konfiguration beeinflusst werden. Die Basiskonfiguration findet dabei direkt in der Config des Apache Servers statt und kann nur von Webmastern verändert werden, welche auch die Hoheit über den Server besitzen. Aus diesem Grund scheidet dieses Konfigurationsfile für viele Nutzer aus.
Jedoch kann der Apache-Web-Server auch bedingt direkt über eine Konfigurationsdatei in den virtuellen Hosts konfiguriert werden. Diese Einstellungen ziehen dann nur für den zugewiesenen Webspace. Die Konfigurationsdatei über welches solch ein Eingriff möglich ist nennt sich .htaccess. Diese befindet sich einfach im Normalen Webspeicherplatz an dem auch die Files für die Webseite abgelegt werden.
Über eben jenes File ist es auch möglich bestimmte Verzeichnisse oder Files vor unberechtigtem Zugriff zu schützen und diesen Schutz über eine Username / Passwort Abfrage zu regeln.

Wie wird eine .htaccess Datei erzeugt?
Im Prinzip ist dies recht einfach – ihr generiert einfach ein Textfile, befüllt dieses mit den gewünschten Informationen und benennt es in .htaccess um. Um die Dateiendung *.txt zu löschen müsst ihr im Explorer das Häkchen bei den Einstellungen „Bekannte Dateiendungen ausblenden“ entfernen. Wie dies genau funktioniert, habe ich hier für Windows 7 und hier für Windows 8 beschrieben. Alternativ und vielleicht einfacher ist es, wenn man die Files zuerst mit der *.txt Endung über ein FTP Programm auf den Webspace überträgt und danach das File über das FTP Tool umbenennt. Bei älteren Betriebssystemen kann es auch Probleme mit dem vorangestellten Punkt geben. Dann schreibt ihr diesen einfach erst bei der Umbenennung am Webspace dazu!

Was wird noch benötigt?
Das .htpasswd File! Dieses File wird genauso erzeugt, wie die oben genannte .htaccess Datei. In der .htpasswd Datei werden die User mit verschlüsselten Passwort hinterlegt. Dies ist sozusagen die Steuerungsdatei, welche die User und Passwörter inne hat.

Was müssen wir noch wissen?
Bei der Konfiguration des .htpasswd Files müssen wir mit vollständigen Dateipfaden arbeiten. Da aber im Normalfall nur der Serveradmin den vollständigen Pfad kennt, behelfen wir uns hier mit einem kleinen Trick!

Dafür legt ihr Euch ein pfad.php File an und legt dieses in das zu schützende Verzeichnis.
Als Inhalt des Files fügt ihr einfach folgendes Kommando ein:

<?php echo dirname(__FILE__); ?>

Jetzt wird das File aufgerufen und als Antwort auf diesen PHP Befehl solltet ihr dann den richtigen Pfad zurück geliefert bekommen! Dies sieht dann wie folgt aus:

htaccess-pfad-bestimmen-php-befehl

 

Was kommt in eine .htaccess Datei für einen Verzeichnisschutz?
Für den grundsätzlichen Schutz eines Ordners / Verzeichnisses muss sich die .htaccess Datei einfach im zu schützenden Ordner befinden! Der Rest wird über vier Zeilen Code geregelt!

# Schutz eines Verzeichnisses
AuthType Basic
AuthName „Name kann frei vergeben werden“
AuthUserFile  /server/pfad/zu/deiner/directory/.htpasswd
require valid-user

 

Was kommt in eine .htaccess Datei um eine Datei zu schützen?

# Schutz einer Datei
<Files Datei.php>
AuthName „Name kann frei vergeben werden“
AuthType Basic
AuthUserFile  /server/pfad/zu/deiner/directory/.htpasswd
require valid-user
</Files>

 

Wie man hier schon zieht wird in der .htaccess auf die .htpasswd verwiesen! Hier muss immer der vollständige Pfad zum File hinterlegt werden. Dabei ist es nicht wichtig, dass die .htpasswd sich im gleichen Verzeichnis befindet. Wer möchte könnte diese Datei sogar theoretisch außerhalb des öffentlichen Web-Bereiches legen. Dies geht natürlich nur, wenn man die entsprechenden Zugriffrechte dafür besitzt.

 

 

Was kommt in ein .htpasswd File?
Dies ist fast noch einfacher als die .htaccess Datei! Denn dort wird nur der Benutzername und das Passwort abgelegt. Das Passwort wird verschlüsselt abgelegt und Username und Passwort werden lediglich durch einen Doppelpunkt getrennt.

Dies könnte dann wie folgt aussehen:

test1:$1$iGyI@exu$UaxR0mOgSInVG8JNdG/Vn.
test2:$1$LCwC[w_w$kXvnjJIjJu4LSnlWu/dwG0

Hier wären es dann folgende Anmeldungen:

User: test1 –> Passwort: test1
User: test2 –> Passwort: test2

Doch wie kommt man nun an die verschlüsselten Passwörter?
Für Leute, welche sich nicht auskennen und einer anderen Webseite vertrauen, könnten sich diesen Key z.B. über diesen .htpasswd Generator erstellen.

Für Leute die das Passwort vielleicht gar nicht auf einer anderen Webseite eingeben wollen, können sich solch einen Passwort Generator auch sehr einfach selbst basteln!

Dazu legen wir wieder ein PHP File an und nennen dieses password.php.
Als Inhalt fügen wir folgenden Code ein:

<h1>htpasswd-Datei erzeugen</h1>
<form method=“post“ action=““>
<p>Benutzername: <input type=“text“ name=“user“ size=“12″ /></p>
<p>Kennwort: <input type=“text“ name=“pass“ size=“12″ /></p>
<p><input type=“submit“ value=“Verschlüsseln“ /></p>
</form>

<?php
if ($_POST[‚user‘] and $_POST[‚pass‘]) {
echo ‚<p>‘.$_POST[‚user‘].‘:‘.crypt($_POST[‚pass‘]).'</p>‘;
}
?>

Jetzt laden wird das File auf dem Webspace hoch und führen es aus! Ihr solltet nun folgende Oberfläche sehen.

passwort-fuer-htpasswd-erzeugen

Durch einen Druck auf den Button „Verschlüsseln“ wird der oben gezeigte Inhalt des .htpasswd Files erzeugt.

 

Damit wären die wichtigsten Punkte erklärt und ich wünsche Euch viel Spaß bei der Umsetzung! Doch einen kleinen Punkt habe ich noch!

Sozusagen die Kür!

Wer möchte kann die erstellten Files noch selbst schützen lassen! Dafür ergänzt ihr den .htaccess Eintrag um folgende Zeilen:

# Zugriff von außen unterbinden
<FilesMatch „(\.htaccess|\.htpasswd)“>
Order deny,allow
Deny from all
</FilesMatch>

 

Jetzt kommt der Teil für die richtigen Admins!
Wer möchte kann diese Schritte natürlich auch über die CLI auf dem Rootserver erledigen!

Das Basis .htaccess File könnt ihr ganz normal über einen Texteditor Eurer Wahl erzeugen. Jedoch die Passwortverwaltung ist unter Linux selbst sehr einfach gelöst!

Folgende Eingabe erzeugt ein neues .htpasswd File und legt gleich einen neuen User an. Hier im Beispiel wieder unser „test1“ Nutzer!

htpasswd -c .htpasswd test1

Möcht man nun einen weiteren User hinzufügen, lässt man einfach den Parameter „-c“ weg.

htpasswd  .htpasswd test2

Einen kleinen Check, welche Daten hinterlegt sind bekommt man über folgenden Befehl:

cat .htpasswd

Die oben genannten Eingaben sehen in der Praxis wie folgt aus:

 

htpasswd-erzeugen-ueber-cli


Tags:

  • htpasswd htaccess im selben verzeichnis
  • htpasswd neuen User erzeugen
  • htaccess dateischutz

Ähnliche Artikel

Ein Kommentar

  1. Hallo zusammen,
    ich benötige eure Hilfe, da ich vermutlich betriebsblind bin. 😉
    Ich möchte einen kompl. Ordner mit Passwortschutz versehen, bekomme es jedoch nicht hin.
    Die „.htaccess“ Datei hat folgenden Inhalt:
    AuthType Basic
    AuthName „Ohne Login geht es hier nicht weiter!“
    AuthUserFile /mnt/web118/c2/XX/57728***/htdocs/XXXXXX/.htpasswd (X ist der Ordner)
    Require valid-user

    Im gleichen liegt die .htpasswd Datei mit den verschlüsselten Daten.

    Der Ordner lässt sich öffnen OHNE Passwort. 😕

    PHP Version 7.4 bei Strato
    Webspace Pfad /mnt/rid/88/XX/57728***/htdocs/

    Danke für eine rasche Unterstützung.
    Kely

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"