So schützen Sie unsere Websites mit .htpasswd + Beispielen

Aus vielen Gründen kann es sehr nützlich sein, über einen Authentifizierungsdienst, der auf Benutzername und Passwort basiert, kontrollierten Zugriff auf bestimmte Verzeichnisse auf einem Webserver oder einfach auf den Inhalt unserer Seite oder unseres Blogs zu haben. Ich spreche von so etwas wie dem typischen Fenster, das angezeigt wird, wenn wir eine Website mit eingeschränkten Diensten aufrufen möchten.

Es gibt verschiedene Möglichkeiten, Fenster mit Authentifizierungsformular zu generieren, es wird jedoch eine interessante Lösung auf Serverebene bereitgestellt htpasswd. Es ist ein Dienstprogramm, dessen Funktion darin besteht, Kennwörter in verschlüsselter Form zu speichern, die von Apache in Authentifizierungsdiensten verwendet werden. Seine Verwendung würde es uns ermöglichen, bestimmte Verzeichnisse oder Dateien über http nur identifizierten Benutzern anzuzeigen und ohne notwendigerweise für alle frei verfügbar zu sein.

Ich verstehe, dass es kein sehr auffälliges Thema ist, aber es kann für einige nützlich sein. Um sie nicht mit Langeweile zu töten, werde ich Bilder verwenden, um sie didaktischer zu gestalten.

Bisherige Überlegungen: Ich werde verwenden Ubuntu Server 12.04.1 y Apache 2.2.22 in einer kontrollierten Umgebung.

Wir fangen an

Wie einige von Ihnen vielleicht bereits wissen, werden die verfügbaren Apache-Sites standardmäßig im Verzeichnis gespeichert / var / www / und für dieses Beispiel werde ich ein Verzeichnis mit einer HTML-Vorlage erstellen und versuchen, es mit .htpasswd abzuschirmen.

Das zu schützende Verzeichnis ist / var / www / example / wo ich die nächste Seite platziert habe.

Auf dem Server

Im Browser

1. Wir werden die .htpasswd erstellen.

Der Ort, an dem es sich befindet, ist von relevanter Bedeutung, und das Platzieren außerhalb eines öffentlichen Verzeichnisses kann mehr als empfohlen sein. In meinem Fall werde ich es in meinem persönlichen Ordner (der kein öffentliches Apache-Verzeichnis ist) und mit dem Namen .htpasswd ablegen (A priori ist es nicht notwendig, es so zu nennen, aber das, was verborgen ist, ist immer gut).

Für Benutzer, die Linux noch nicht kennen. Um ein Verzeichnis oder eine Datei auszublenden, muss der Name nur mit einem Punkt (.) Begonnen werden.

Mit dem folgenden Befehl erstelle ich die .htpasswd-Datei für einen Webbenutzer, den ich als "Luke" bezeichnet habe.

# htpasswd -c /home/krel/.htpasswd Luke

Sie werden aufgefordert, das Passwort zweimal anzugeben. In meinem Fall habe ich "skywalker" (ohne Anführungszeichen) eingegeben. In einer unkontrollierten Umgebung müssen wir stärkere Passwörter festlegen. Die Standardverschlüsselung unter Linux ist MD5, aber unter Unix ist es eine Standardimplementierung von crypt () und für Kennwörter mit weniger als 8 Zeichen kann es anfällig sein. Jetzt habe ich den Zweifel, ob es bei BSD dasselbe ist.

Der Befehl hat folgende Struktur:

  • -c → um die Datei zu erstellen
  • /home/krel/.htpasswd → absoluter Pfad der Datei.
  • Luke → der Benutzername (es kann sein, was immer Sie wollen)

Ebenso zwinge ich niemanden, das Terminal zu benutzen, wenn es im Internet Dienste dafür gibt:
http://www.web2generators.com/apache/htpasswd_generator

http://www.htaccesstools.com/htpasswd-generator/

Wir kopieren das Ergebnis in eine Textdatei und auf Wunsch mit dem Namen .htpasswd. Hören Sie in Bezug auf diese Methode nicht auf zu lesen, was ich im nächsten Absatz kommentiere.

In unserem Fall werden wir sehen, dass die Datei dort generiert wurde, wo wir sie erwartet haben /home/krel/.htpasswd. Im Bild habe ich hervorgehoben, dass bei dieser Methode die Datei zur Apache-Gruppe und zum Benutzer gehört, die in Ubuntu als www-Daten bezeichnet werden. Dies ist wichtig, da wir, wenn wir die .htpasswd auf andere Weise generiert haben, sicherstellen müssen, dass sie über 644 Berechtigungen verfügt.

Nun werden wir sehen, wie ihre Eingeweide aussehen:

Wie Sie sehen können, gibt es den Benutzer (Luke), aber das Passwort ist verschlüsselt.

Auf diese Weise haben wir bereits .htpasswd für den Benutzer Luke erstellt und entworfen, am Ende ist es nichts weiter als ein Container für das Passwort. "Alle mit einem Befehl" wäre ein gutes Schlagwort.

2. Konfigurieren Sie Apache so, dass dieser Dienst auf der Site verwendet und zugelassen wird.

# nano /etc/apache2/sites-available/default

Wenn Sie mehrere Hosts haben, müssen diese auf jedem von ihnen funktionieren. In meinem Fall habe ich nur den, der standardmäßig geliefert wird. Vergessen Sie nicht, dass es immer gut ist, eine Sicherungskopie dieser Datei zu erstellen.

Diese Datei hat die Standardstruktur:

ServerAdmin webmaster @ localhost

..................

..................

Genau in den Virtualhost-Überschriften wird die Verwendung von .htpasswd angegeben, um auf ein bestimmtes Verzeichnis zuzugreifen. Wir tun dies so, wie das folgende Bild erscheint und unserem Beispiel entspricht:

Gut. Ich erkläre die Zeilen:

Sie müssen das zu schützende Verzeichnis ablegen.

AuthType Basic

Dies ist die Art des Benutzers und des Kennworts, die mit dem Browser ausgehandelt werden. In diesem Fall handelt es sich um Basic ohne Verschlüsselung.

Es gibt eine andere Art der Aushandlung: Digest, diese verschlüsselt den Benutzernamen und das Passwort, das letzte Wort ist jedoch, ob der Browser diesen Dienst unterstützt. Digest kann gesagt werden, dass es eine etwas robustere Implementierung gegen Sniffer ist. Ich lade Sie ein, sich damit zu beschäftigen.

AuthName "Klopfen Sie vor dem Betreten an die Tür."

Es ist eine Nachricht, die dem Benutzer im Browser mit dem Anmeldeformular angezeigt wird und die wir möchten.

AuthUserFile /var/www/.pass/.htpasswd

Pfad der .htpasswd-Datei. Aus diesem Grund sage ich, dass es nicht einmal notwendig ist, es .htpasswd zu nennen, einfach den Pfad zu setzen würde genauso funktionieren.

Require valid-user

Diese Zeile ist für mehrere Benutzer mit individuellen Passwörtern konzipiert. Wenn es sich um einen einzelnen Benutzer handelt, kann dies als folgende Variante zusammengefasst werden.

Benötigen Sie den Benutzer el_que_sea

In meinem Beispiel könnte sein: Benötigen Sie Benutzer Luke

Und schließlich legen wir alles bei

Wir starten Apache neu:

# service apache2 restart

Lass es uns versuchen.

Wenn wir uns nicht korrekt authentifizieren, erhalten wir einen Fehler 401.

Auf der anderen Seite würde es uns ohne größere Unannehmlichkeiten passieren lassen, wenn wir den richtigen Benutzernamen und das richtige Passwort eingeben.

Zusätzliche Tipps.

  • Mit diesem Befehl können Sie einer bereits erstellten htpasswd-Datei weitere Benutzer hinzufügen

htpasswd -mb /home/krel/.htpasswd Benutzerkennwort

Wenn Sie "Benutzer erforderlich" und nicht "Gültigen Benutzer erforderlich" festgelegt haben, müssen Sie den neuen Benutzer hinzufügen, gefolgt vom vorherigen und durch ein Leerzeichen getrennt. Beispiel:

Benötigen Sie Benutzer Luke Anakin

  • Verwenden Sie Benutzergruppen

Wenn wir anstelle einzelner Benutzer Gruppen auf der folgenden Website bevorzugen oder mit ihnen arbeiten müssen, erklären sie dies ausführlich und es ist ein ausgezeichneter Artikel.
http://www.juanfelipe.net/node/23

  • Wir können auch eine andere Art der Verschlüsselung festlegen, zum Beispiel: SHA

htpasswd -sb /home/krel/.htpasswd Benutzerkennwort

Hier ist ein Bild davon, wie sich die Registrierung eines SHA-Passworts in der .htpasswd widerspiegeln würde. In beiden war es "Skywalker".

Erfahren Sie mehr.

htpasswd - -Hilfe

Wenn Sie tiefer in dieses Thema einsteigen möchten, ist RTFM immer gut!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

Dieses PHP-Skript von der Seite der Universität von Granada war auch neugierig auf mich, einen htaccess- und htpasswd-Generator zu erstellen. Ich konnte es nicht in die Praxis umsetzen, aber ich lade Sie ein, "mit Intelligenz zu hebeln".

Die HTML-Vorlage, die ich von dieser Seite erhalten habe, falls jemand interessiert ist.
http://www.templatemo.com/

Ich hoffe, Ihnen hat diese Präsentation gefallen.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   krel sagte

    Jetzt, wo ich den Beitrag noch einmal lese, habe ich festgestellt, dass ich ein kleines Durcheinander gemacht habe. Wenn ich die Zeilen in der Site-Konfiguration erkläre, habe ich in AuthUserFile /var/www/.pass/.htpasswd eingefügt, wann es sein sollte:
    /home/krel/.htpasswd.

    Auf dem Bild ist es in Ordnung, aber da ist es mir entgangen. Es ist so, dass ich den Artikel zuvor mit dieser Route erstellt habe, aber in letzter Minute habe ich ihn geändert und es scheint, dass ich ihn nicht korrigiert habe.

    Ich entschuldige mich im Voraus.

  2.   Fernando sagte

    Jede Alternative für Nautilus?

    1.    krel sagte

      Was Sie fragen, geht meiner Meinung nach in die andere Richtung, aber ich antworte Ihnen trotzdem.
      Ich glaube, mit Cryptkeeper wäre es nützlich, Verzeichnisse und ähnliches zu schützen.

      Wenn ich ehrlich bin, wenn etwas, das ich an Gnomen hasse, Nautilus ist. Dolphin (KDE) ist gerade für diese Dinge des Schutzes, der Verschlüsselung mit GPG usw. viel leistungsfähiger.

  3.   DMOZ sagte

    Krel, danke für die kompletten Tutorials, die du hierher bringst und vor allem dafür, dass du nicht so häufig bist ...

    Prost !!! ...

  4.   Juan Carlos sagte

    Hallo, alles ist gut gelaufen, aber wenn ich die Chrome-Registerkarte schließe und eine andere öffne, schreibe ich die Adresse und frage nicht nach dem Passwort ...

  5.   Kumpel sagte

    wer sagte, dass es nicht auffällig war.
    Es war genau das, wonach ich suchte und besser unmöglich erklärt
    ich danke Ihnen sehr.
    ein Gruß

  6.   basco7 sagte

    Hallo, ich danke Ihnen vielmals für die Informationen, insbesondere für das Hinzufügen mehrerer Benutzer zur .htpasswd.

    Gott schütze dich!

  7.   Mohtadi sagte

    Herzlichen Glückwunsch, es ist ein sehr guter Artikel, klar und verdaulich. Ich danke dir sehr

  8.   eduardo sagte

    Es gibt mir einen Fehler von 500, wenn ich Benutzername und Passwort eingebe

    AuthType Basic
    AuthName "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Benutzer Akira benötigen

  9.   eduardo sagte

    Wie großartig das für mich ist, zu kommentieren, ohne auf die anderen Kommentare perodna zu schauen.
    Funktioniert super toller Beitrag

  10.   Senioren schlafen sagte

    Hallo, gutes Tutorial, aber gibt es eine Alternative zu "htpasswd"? Ich frage, warum ich Linux Mint 17.3 verwende und den Befehl nicht habe. Muss ich ihn installieren?

  11.   Senioren schlafen sagte

    Ok, ich habe es herausgefunden ... Ich musste es mit sudo apt-get install apache2-utils installieren

  12.   Fernando Montilla sagte

    Hallo, exzellentes Tutorial, ich habe es genau wie hier angegeben gemacht. Das einzige ist, dass anstatt das auszuführen, was in Punkt 2 angegeben ist:

    nano / etc / apache2 / sites-available / default

    Es hat bei mir mit funktioniert

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

  13.   Jorge Rodrigo Torrez Aramayo sagte

    Grüße, es funktioniert nicht für mich 🙁 Mein Ordner wird nicht auf meinem Server angezeigt, dh ich habe meinen Ordner / var / 222 / html / content geschützt, und wenn ich über den Browser eingebe, wird der Inhaltsordner nicht angezeigt. Hilfe