GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So schützen Sie Websites per .htaccess mit einem Passwort

SKILL LEVEL: SYSADMIN/ADVANCED - TIME: 5-10 MINS

Einführung

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Website oder nur einen Ordner innerhalb einer Website mit einem Passwort schützen. Wir werden für dieses Beispiel den beliebtesten Webserver, Apache2, verwenden, ähnliche Methoden können jedoch auch mit anderen Webservern durchgeführt werden.

Die Methode, die wir verwenden werden, ist ein einfaches Authentifizierungssystem, aber es ist einfach einzurichten und ermöglicht es Ihnen, Ihre Website schnell vor anderen Leuten im großen bösen Internet zu sichern. Diese Methode basiert darauf, dass Sie eine Kombination aus Benutzername und Passwort für Ihre Site(s) erstellen. Sie können beliebig viele Benutzernamen hinzufügen, aber denken Sie daran, dass Sie jedes Passwort pflegen müssen.

Voraussetzungen

Für dieses Beispiel verwenden wir die Ubuntu 16.04 Server Edition. Dies funktioniert auch unter Ubuntu 14.04 und fast jeder anderen Linux-Distribution, vorausgesetzt, Sie verwenden den Apache 2-Webserver.

In Ubuntu melden Sie sich als Standardbenutzer an und verwenden sudo, um Root-Befehle (privilegiert/Superuser) auszugeben. Wenn Sie ein Root-Login auf Ihrem Server haben, können Sie stattdessen dieses verwenden. Sie müssen sudo nicht verwenden, es wird jedoch für alle sicheren Serveradministrationen empfohlen, dass Sie Aktionen mit sudo ausführen und als normaler (Nicht-Root-)Benutzer arbeiten, um administrative Aufgaben auszuführen.

Installieren Sie das Apache-Dienstprogrammpaket

Um die Datei zu erstellen, die die Passwörter speichert, die für den Zugriff auf unsere eingeschränkten Inhalte erforderlich sind, verwenden wir ein Dienstprogramm namens htpasswd , das Teil des Pakets apache2-utils ist. Führen Sie die folgenden Befehle aus, um apache2-utils zu installieren:

  • sudo apt-get update
  • sudo apt-get install apache2-utils

Das Obige setzt voraus, dass Sie Apache2 bereits installiert haben (sudo apt-get install apache2, falls nicht).

Passwortdatei erstellen

Wir haben jetzt Zugriff auf das htpasswd Befehl. Wir können dies verwenden, um eine Passwortdatei zu erstellen, mit der Apache Benutzer authentifizieren kann. Zu diesem Zweck erstellen wir eine versteckte Datei mit dem Namen .htpasswd innerhalb unseres /etc/apache2 Konfigurationsverzeichnis. Beachten Sie, dass Dateien mit einem vorangestellten Punkt (.) automatisch aus einer Standardverzeichnisliste ausgeblendet werden (z. B. werden sie nicht mit dem Befehl ls angezeigt). Wenn Sie sie anzeigen möchten, verwenden Sie ls -la (lange Liste, alle Dateien).

Wenn wir dieses Dienstprogramm zum ersten Mal verwenden, müssen wir -c hinzufügen Option zum Erstellen der angegebenen Datei. Wir geben einen Benutzernamen an (sammy in diesem Beispiel) am Ende des Befehls, um einen neuen Eintrag in der Datei zu erstellen:

  • sudo htpasswd -c /etc/apache2/.htpasswd sammy

Sie werden aufgefordert, ein Passwort für den Benutzer anzugeben und zu bestätigen.

Lassen Sie das -c weg Argument für alle zusätzlichen Benutzer, die Sie hinzufügen möchten:

  • sudo htpasswd /etc/apache2/.htpasswd another_user

Wenn wir uns den Inhalt der Datei ansehen, können wir den Benutzernamen und das verschlüsselte Passwort für jeden Datensatz sehen:

  • cat /etc/apache2/.htpasswd
Ausgabe
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Apache-Passwortauthentifizierung konfigurieren

Jetzt, da wir eine Datei mit unseren Benutzern und Passwörtern in einem Format haben, das Apache lesen kann, müssen wir Apache so konfigurieren, dass diese Datei überprüft wird, bevor unsere geschützten Inhalte bereitgestellt werden. Wir können dies auf zwei verschiedene Arten tun.

Die erste Option besteht darin, die Apache-Konfiguration zu bearbeiten und unseren Passwortschutz zur virtuellen Hostdatei hinzuzufügen. Dies führt im Allgemeinen zu einer besseren Leistung, da die Kosten für das Lesen verteilter Konfigurationsdateien vermieden werden. Wenn Sie diese Option haben, wird diese Methode empfohlen.

Wenn Sie die virtuelle Hostdatei nicht ändern können (oder wenn Sie bereits .htaccess files for other purposes), you can restrict access using an  einschränken .htaccessfile. Apache uses .htaccess`-Dateien, damit bestimmte Konfigurationselemente innerhalb einer Datei in einem Inhaltsverzeichnis festgelegt werden können. Der Nachteil ist, dass Apache diese Dateien bei jeder Anfrage, die das Verzeichnis betrifft, neu einlesen muss, was die Leistung beeinträchtigen kann.

Wählen Sie unten die Option, die Ihren Anforderungen am besten entspricht.

Konfigurieren der Zugriffskontrolle innerhalb der Definition des virtuellen Hosts

Öffnen Sie zunächst die virtuelle Hostdatei, der Sie eine Einschränkung hinzufügen möchten. Für unser Beispiel verwenden wir die 000-default.conf Datei, die den standardmäßigen virtuellen Host enthält, der über das Apache-Paket von Ubuntu installiert wird:

  • sudo nano /etc/apache2/sites-enabled/000-default.conf

Im Inneren sollte die Datei ohne Kommentare ungefähr so ​​aussehen:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Die Authentifizierung erfolgt pro Verzeichnis. Um die Authentifizierung einzurichten, müssen Sie das Verzeichnis, das Sie einschränken möchten, mit <Directory ___> anvisieren Block. In unserem Beispiel beschränken wir den gesamten Dokumentenstamm, aber Sie können diese Auflistung so ändern, dass sie nur auf ein bestimmtes Verzeichnis innerhalb des Webspace abzielt:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
    </Directory>
</VirtualHost>

Geben Sie innerhalb dieses Verzeichnisblocks an, dass wir Basic einrichten möchten Authentifizierung. Für den AuthName , wählen Sie einen Bereichsnamen aus, der dem Benutzer angezeigt wird, wenn er zur Eingabe von Anmeldeinformationen aufgefordert wird. Verwenden Sie die AuthUserFile Anweisung, um Apache auf die von uns erstellte Passwortdatei zu verweisen. Schließlich benötigen wir einen valid-user um auf diese Ressource zuzugreifen, was bedeutet, dass jeder, der seine Identität mit einem Passwort verifizieren kann, Zugang zu Folgendem hat:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie Apache neu, um Ihre Passwortrichtlinie zu implementieren:

  • sudo service apache2 restart

Das angegebene Verzeichnis sollte jetzt passwortgeschützt sein.

Zugriffskontrolle mit .htaccess-Dateien konfigurieren

Wenn Sie einen Passwortschutz mit .htaccess einrichten möchten stattdessen sollten Sie damit beginnen, die Apache-Hauptkonfigurationsdatei zu bearbeiten, um .htaccess zuzulassen Dateien:

  • sudo nano /etc/apache2/apache2.conf

Suchen Sie <Directory> Block für /var/www Verzeichnis, das den Dokumentstamm enthält. Aktivieren Sie .htaccess Verarbeitung durch Änderung des AllowOverride Direktive innerhalb dieses Blocks von „None“ zu „All“:

/etc/apache2/apache2.conf
. . .

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

. . .

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Als nächstes müssen wir eine .htaccess hinzufügen Datei in das Verzeichnis, das wir einschränken möchten. In unserer Demonstration schränken wir den gesamten Dokumentenstamm (die gesamte Website) ein, der auf /var/www/html basiert , aber Sie können diese Datei in jedem Verzeichnis ablegen, auf das Sie den Zugriff beschränken möchten:

  • sudo nano /var/www/html/.htaccess>

Geben Sie in dieser Datei an, dass wir Basic einrichten möchten Authentifizierung. Für den AuthName , wählen Sie einen Bereichsnamen aus, der dem Benutzer angezeigt wird, wenn er zur Eingabe von Anmeldeinformationen aufgefordert wird. Verwenden Sie die AuthUserFile Anweisung, um Apache auf die von uns erstellte Passwortdatei zu verweisen. Schließlich benötigen wir einen valid-user um auf diese Ressource zuzugreifen, was bedeutet, dass jeder, der seine Identität mit einem Passwort verifizieren kann, Zugang zu Folgendem hat:

/var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Speichern und schließen Sie die Datei. Starten Sie den Webserver neu, um alle Inhalte in oder unterhalb des Verzeichnisses mit dem .htaccess mit einem Passwort zu schützen Datei:

  • sudo-Dienst apache2 neu starten

Bestätigen Sie die Passwortauthentifizierung

Um zu bestätigen, dass Ihre Inhalte geschützt sind, versuchen Sie, in einem Webbrowser auf Ihre eingeschränkten Inhalte zuzugreifen. Sie sollten eine Eingabeaufforderung für Benutzername und Passwort sehen, die wie folgt aussieht:

Wenn Sie die richtigen Anmeldeinformationen eingeben, können Sie auf die Inhalte zugreifen. Wenn Sie die falschen Anmeldeinformationen eingeben oder auf „Abbrechen“ klicken, wird die Fehlerseite „Nicht autorisiert“ angezeigt:

Schlussfolgerung

Sie sollten jetzt alles haben, was Sie zum Einrichten der Basisauthentifizierung für Ihre Website benötigen. Der gesamte Passwortschutz sollte mit einer SSL-Verschlüsselung kombiniert werden, damit Ihre Anmeldeinformationen nicht im Klartext an den Server gesendet werden.

Vielen Dank an die Leute von digitalocean.com für einige der Inhalte auf dieser Seite. Probieren Sie sie unbedingt aus, sie haben fantastische Webhosting-Dienste für jedes Budget!


Linux
  1. So schützen Sie ein Verzeichnis in cPanel mit einem Passwort

  2. Wie aktiviere ich ExecCGI über die .htaccess-Datei?

  3. Wie aktiviere ich ExecCGI über die .htaccess-Datei?

  4. So schützen Sie ein Verzeichnis über cPanel mit einem Passwort

  5. Wie schütze ich einen Website-Ordner mit einem Passwort?

So schützen Sie eine Datei im Vim-Editor mit einem Passwort

So schützen Sie einen Ordner unter Linux mit einem Kennwort

So fügen Sie ein Passwort hinzu, um eine Vim-Datei in Linux zu schützen

Wie setze ich die Indexseite von cPanel über .htaccess?

Wie schütze ich GRUB mit einem Passwort unter Linux?

Wie man Dateien mit dem Vim-Editor in Ubuntu mit einem Passwort schützt