Zugriffsschutz mit Apache (.htaccess)
.htaccess ist eine einfache Möglichkeit ganze Ordner mit einem einfach Passwortschutz zu versehen. Darüber hinaus können auch spezielle Einstellungen für Ordner konfiguriert werden.
Die Konfiguration durch .htaccess-Datei muss in der Apache-Konfiguration aktiviert sein (standardmäßig ist „AllowOverride None“ aktiviert):
<Directory /> AllowOverride AuthConfig </Directory>
Beispiel
.htaccess
- Diese Datei in den zu schützenden Ordner legen!
# .htaccess-Datei für ein Web-Verzeichnis AuthType Basic AuthName "Geheimer Bereich" AuthUserFile .htpasswd Require user NAME
- oder zentral in der Apache-Konfiguration innerhalb eines virtuelles Host (statt „/“ kann auch ein einzelnes Unterverzeichnis angegeben werden: „/geheim“):
<Location / > AuthType Basic AuthName "Geheimer Bereich" AuthUserFile /etc/apache2/htusers Require valid-user </Location>
.htpasswd
Passwörter verschlüsselt mit Bcrypt ablegen:
Datei anlegen mit erstem Benutzer „BENUTZERNAME“:
htpasswd -c -B /Pfad/.htpasswd BENUTZERNAME
# Die Datei würde so aussehen, bei Passwort 123: BENUTZERNAME:$2y$05$7dj5wXAYbPs4hIg/c0Pm5eB8o/za6cpshdRJjRVbL2AChzhnb2VTq
Anschließend weitere Benutzer hinzufügen:
htpasswd -s /Pfad/.htpasswd BENUTZERNAME
Authentifizierung gegen mysql
md5-hashes sind nicht sicher, es sollte eine alternative benutzt werden!
apt-get install libapache-mod-auth-mysql
AuthName "Bitte Benutzername und Passwort eingeben" AuthMySQL On AuthMySQL_Host localhost AuthMySQL_User DB_BENUTZERNAME AuthMySQL_Password DB_PASSWORT AuthMySQL_DB DATENBAK AuthMySQL_Password_Table TABELLE_MIT_USERN AuthMySQL_Username_Field FELD_MIT_BENUTZERNAMEN AuthMySQL_Password_Field FELD_MIT_PASSWOERTERN AuthMySQL_Encryption_Types Plaintext AuthMySQL_Encrypted_Passwords Off AuthType Basic require valid-user
Besser wäre es allerdings nur die md5-Hashes abzuspeichern:
AuthMySQL_Encryption_Types PHP_MD5 AuthMySQL_Encrypted_Passwords On
- Passwort-Feld vom Typ varchar(32) - Neue Benutzer so in die Datenbank eintragen:
Insert into TABELLE_MIT_USERN (FELD_MIT_BENUTZERNAMEN, FELD_MIT_PASSWOERTERN ) Values ('User1', md5('geheim'));