Verzeichnisse und Dateien mit Passwort schützen
Schutz via Controlpanel
Onlime bietet dir einen einfach zu bedienenden Verzeichnisschutz-Manger via Controlpanel, Menüpunkt Verzeichnisschutz.
Richte als erstes eine Passwort-Liste ein mittels "Neues Profil anlegen":
Beim Hinzufügen eines weiteren Benutzers zur selben Passwort-Liste, kannst du die bereits bestehende Passwort-Liste auswählen:
Klicke nun oben im Abschnitt Geschützte Verzeichnisse auf "+ Verzeichnis schützen". Du kannst nun das Verzeichnis auswählen und eine Passwort-Liste ("Berechtigungs-Profil") zuweisen:
👏 That's it! Das Verzeichnis ist nun geschützt und nur die eingerichteten Benutzer haben Zugang darauf:
Schutz via .htaccess
TIPP
Dies ist die Anleitung für das manuelle Einrichten eines Verzeichnisschutzes via .htaccess
. Alternativ kannst du jedoch auch einfach unseren Verzeichnisschutz-Manager via Controlpanel verwenden. Das Resultat ist dasselbe!
.htaccess
-Dateien sind verzeichnisspezifisch. Speichere die .htaccess
-Datei also in demjenigen Verzeichnis ab, in dem die zu schützenden Daten liegen. Du kannst wahlweise das ganze Verzeichnis mit all seinen Unterverzeichnissen oder nur bestimmte Dateien oder Dateitypen schützen. Du kannst den Passwortschutz ausserdem wahlweise für einzelne Benutzer oder für ganze Benutzergruppen einrichten. Auch Kombinationen beider Formen sind möglich.
Damit der Verzeichnisschutz mit Passwort funktioniert, genügt die .htaccess
-Datei alleine allerdings nicht. Du brauchst zusätzlich eine Datei, in der die Benutzernamen und die zugehörigen Passwörter stehen. Falls du mit Benutzergruppen arbeitest, benötigst du außerdem noch eine Datei, in der die Benutzergruppen definiert werden. Auch diese beiden anderen Dateien werden mit einem beliebigen Texteditor erstellt.
Eine ausführliche Anleitung zum Verzeichnisschutz via .htaccess
findest du unter SELFHTML: Webserver/htaccess
Einfacher Verzeichnisschutz
Um einen einfachen Passwortschutz anzulegen, benötigst du zwei Dateien, .htaccess
(muss exakt so heissen!) und .htpasswd
. In .htaccess
wird der Verzeichnisschutz definiert und auf die zugehörige Passwortdatei .htpasswd
verwiesen.
.htaccess Beispieldatei:
AuthName "password protected"
AuthType Basic
AuthUserFile /var/www/web33/public_html/www/secure/.htpasswd
Require valid-user
Mittels AuthUserFile
definierst du den vollständigen Dateipfad zur Passwortdatei.
ACHTUNG!
.htaccess
unterstützt keine relativen Dateipfade! Gibt stets die kompletten absoluten Pfade an (inkl. /var/www/webXX/
), selbst wenn sich deine .htpasswd
-Datei im selben Verzeichnis befindet wie die .htaccess
.
Die Passwortdatei enthält pro Zeile die Paare Benutzername:Passwort
, wobei das Passwort verschlüsselt (resp. "hashed") ist. Die Verschlüsselung eines Passworts kannst du mit Hilfe eines .htpasswd-Generators erreichen.
.htpasswd Beispieldatei:
test:$apr1$qxlaPHX7$WYfiEFsffWLGuKA1EHJkT0
hans:$apr1$04uedr9o$D/PqUdv/IXjhiWeKlhT5n1
anne:$apr1$Vz7Sgwm6$snqU165a7kQIFGIiLHmNF.
kurtli:$apr1$CtRgWBbV$4NlQ3YnuCj0jKs0BWdsO40
Lade die beiden Dateien mittels FTP in das zu schützende Verzeichnis. Das Verzeichnis und sämtliche darunterliegenden Dateien sind nun passwortgeschützt.
TIPP SECURITY:
Wir empfehlen dir, die.htpasswd
Datei(en) innerhalb deines/files
-Verzeichnis abzulegen und nicht im Webroot /public_html/www
(siehe Verzeichnisstruktur).
Unser Webserver verhindert zwar das Herunterladen von .htaccess
und .htpasswd
Dateien. Trotzdem ist es sicherheitstechnisch sinnvoller, ein kritische Datei wie .htpasswd
nicht im Webroot abzulegen.
Du kannst die Passwort-Hashes für die .htpasswd
-Datei selbst erzeugen mittels dem Unix-commands htpasswd
. Beim erstmaligen Aufruf erzeugst du die Datei mittels Angabe des -c
(create) Parameters:
$ htpasswd -c .htpasswd username
Danach ergänze zusätzliche Benutzer wie folgt:
$ htpasswd .htpasswd anotheruser
Moderne Betriebssysteme legen die Passwort-Hashes als MD5 ab. Für zusätzliche Sicherheit empfehlen wir dir, Bcrypt als hashing Algorithmus zu verwenden mit der Option htpasswd -B
:
$ htpasswd -B .htpasswd.demo user2
Anstatt die Zeile in eine Datei zu schreiben, kannst du mit -n
die Ausgabe auch direkt anzeigen lassen (stdout) und mit -b
(batch mode) gleich das Passwort mitgeben:
$ htpasswd -nbB myUser myPassword
myUser:$2y$05$tAp/p8LlRFTU3l4AdLRgo.a.ZwtG8fk.Oil/2aexpJrc8kFchv/z6
Beachte dazu auch die Dokumentation unter Apache: Password Formats
Apache Module mod_dbd
Onlime unterstützt auf seinem Shared Webhosting Angebot (limeBASIC/limePRO) lediglich den Einfachen Verzeichnisschutz. Benötigst du eine Authentifizierung via MySQL-Datenbank, musst du diese selbst Applikations-seitig (z.B. mit deinem Lieblings-PHP-Framework Laravel) umsetzen.
Für unsere limeDEDICATED Kunden mit eigenem Dedizierten Webserver bieten wir jedoch auch die Option, in Apache das Modul mod_dbd zu aktivieren. Damit kannst du die Benutzernamen & Passwörter bequem in einer MySQL-Datenbank verwalten und trotzdem den herkömmlichen Passwort-Schutz via .htaccess
verwenden.
Der Datenbank-Zugang wird in der Modul-Konfiguration authn_dbd.conf
definiert:
<IfModule mod_dbd.c>
DBDriver mysql
DBDParams "host=localhost dbname=MYDATABASE user=MYUSER pass=MYPASS"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
</IfModule>
.htaccess Beispieldatei:
AuthType Basic
AuthName "password protected"
AuthBasicProvider dbd
AuthDBDUserPWQuery "SELECT `password` FROM `logins` WHERE `username` = %s AND `active` = 1"
Require valid-user
In diesem Beispiel werden die Passwörter als MD5 Hashes in der Datenbank eingetragen. Eine mögliche MySQL-Tabellenstruktur sieht so aus:
CREATE TABLE `logins` (
`id` INT NOT NULL auto_increment,
`username` VARCHAR(255) NOT NULL,
`password` CHAR(32) default NULL,
PRIMARY KEY (`id`),
) TYPE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Eintrag eines Testusers "test" mit Passwort "1234":
INSERT INTO `htaccess` (`username`, `password`) VALUES('test', MD5('1234'));
Empfohlen wird jedoch, dass du den Passwort-Hash via PHP aus deiner Applikation generierst, mit nativer PHP-Funktion password_hash($password)
oder in Laravel mittels Hash::make($password)
– beide verwenden standardmässig den sicheren Bcrypt hashing Algorithmus. mod_dbd ist so schlau, unterstützt und erkennt dieses Hashing anhand des vorangestellten $2y$
Prefix.