So beschränken Sie den Zugriff auf eine Ressource mit Apache unter Linux

So beschränken Sie den Zugriff auf eine Ressource mit Apache unter Linux

Die Einschränkung des Zugriffs auf eine Ressource ist häufig erforderlich, wenn Sie das Web verwenden. Bei komplexen Webanwendungen wird dies häufig mit einem Anmeldesystem implementiert, das mehr oder weniger anspruchsvoll sein kann. Wenn unsere Anforderungen unsere ziemlich grundlegenden Anforderungen jedoch verwenden, können wir das vom Apache -Webserver bereitgestellte Authentifizierungssystem verwenden. In diesem Tutorial werden wir sehen, wie wir es tun können.

In diesem Tutorial lernen Sie:

  • So einschränken Sie den Zugriff auf eine Webseite mit dem Apache -Webserver
  • So speichern Sie die Benutzerkennwörter in Klartextdateien
  • So speichern Sie die Benutzerkennwörter in einer Datenbank
  • So ermöglichen Sie Zugriff auf mehrere Benutzer
So beschränken Sie den Zugriff auf eine Ressource mit Apache unter Linux

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilungsunabhängige
Software Der Apache -Webserver
Andere Root -Berechtigungen zum Ändern von Konfigurationsdateien
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Basiseinstellung



Das grundlegendste Setup umfasst die beiden Schritte: die Erstellung von a Passwortdatei Wenn Benutzerkennwörter gespeichert werden, und die Verwendung bestimmter Anweisungen in der Server -Hauptkonfigurationsdatei (der Speicherort dieser Datei hängt von der Verteilung ab, die wir verwenden: auf Fedora und der Red Hat -Familie der Verteilung, ist die Datei lautet /etc/httpd/http/conf, Während der Debian-basierten Verteilung beispielsweise ist, ist beispielsweise /etc/apache2/apache2.Conf) in einer virtuellen Konfigurationsdatei oder in einer .htaccess Datei in dem entsprechenden Verzeichnis platziert.

Wenn wir uns für diese letzte Option entscheiden, müssen wir sicher sein, dass die Authconfig Richtlinie kann überschrieben werden. Angenommen, das .htaccess Datei befindet sich in der /var/www/html/eingeschränkt Verzeichnis, wir würden schreiben:

 ALLGESTELLUNGSRIDE AUTHCONfig  

Erstellen der Passwortdatei

Das Erstellen einer Passwortdatei ist wirklich einfach: Wir müssen nur die verwenden, um die zu verwenden htpasswd Dienstprogramm, das normalerweise mit der Apache -Installation geliefert wird. Es ist sehr wichtig, dass die Datei mit den Benutzerkennwörtern in einem Verzeichnis platziert wird, in dem die Öffentlichkeit nicht zugegriffen werden kann. In diesem Tutorial erstellen wir die Datei in der /etc/httpd Verzeichnis.

Angenommen, wir möchten den Zugang zum Zugang zur EGDOC Benutzer. Um sein Passwort zu erstellen, würden wir ausführen:

$ sudo htpasswd -c/etc/httpd/passwörter egdoc 

Der htpasswd Das Dienstprogramm wird verwendet, um Benutzerkennwörter zu verwalten und in Klartextdateien zu speichern. In diesem Fall haben wir das Dienstprogramm aufgerufen und es mit dem verwendet -C Option: Dies ist erforderlich, um die Datei von Grund auf neu zu erstellen. Wenn die Datei bereits vorhanden ist, wird sie abgeschnitten. Wenn wir daher neue Einträge anhängen müssen, muss die Option weggelassen werden.

Wir haben die beiden Argumente angegeben: Der erste ist der Pfad der Kennwortdatei. Der zweite ist der Name des Benutzers, für den wir ein Kennwort erstellen möchten. Der Befehl fordert uns auf, ein Passwort für den Benutzer einzugeben und zu bestätigen:

Neues Passwort: Neues Passwort neu type: 

Wir können das Passwort nicht sehen, wenn wir es eingeben. Wenn wir jetzt einen Blick in die generierte Datei werfen, können wir feststellen, dass sie nach dem Hash -Hash mit dem Apache APR1 -Hashing -Format gespeichert wurde:

EGDOC: $ Apr1 $ GevSWC3p $ ZHR/MQMMN6G7TJ8FH8RCY/ 

Richten Sie den Server ein



Sobald unsere Passwortdatei fertig ist, müssen wir die richtige Konfiguration für den Apache -Webserver erstellen. Nehmen wir als Beispiel an, wir möchten den Zugriff auf die beschränken /var/www/eingeschränkt Verzeichnis, das das ist Dokument Root eines virtuellenHost wie folgt konfiguriert:

 Serverame -Test.Lan Documentroot/var/www/eingeschränkte AuthType Basic Authname "eingeschränkter Bereich"!"AuthbasicProvider -Datei AuthuserFile/etc/httpd/Passwörter benötigen Benutzer EGDOC   

Untersuchen wir die Anweisungen, die wir in dieser Konfiguration verwendet haben.

Erstens haben wir verwendet Authentifizierungstyp. Diese Anweisung wird verwendet, um auszuwählen, welche Art von Authentifizierung wir verwenden möchten. In diesem Fall wählen wir „grundlegend“ als Wert: Diese Funktionalität wird von der bereitgestellt mod_auth_basic Modul. Andere mögliche Werte sind Keiner, Verdauen (bereitgestellt durch das Modul mod_auth_digest) und Form, das vom Modul mod_auth_form bereitgestellt wird.

Der AuthbasicProvider Die Richtlinie wird verwendet, um zu erklären, welcher Anbieter zur Authentifizierung verwendet werden soll. In diesem Fall hätten wir es weglassen können, seitdem Datei ist der Standardwert, der von der bereitgestellt wird MOD_AUTHN_FILE Modul.

Mit dem Authname Richtlinie haben wir a einrichten Reich. Diese Konfiguration hat im Grunde genommen zwei Zwecke: Als erstes wird die von uns hier bereitgestellte Nachricht als Nachricht auf der Eingabeaufforderung angezeigt, die vom Server bereitgestellt wird, zum Beispiel:

Auf der Website heißt es: „Eingeschränkter Bereich!”

Das „Reich“ wird auch vom Client verwendet, um zu entscheiden, welches Passwort er an den Server gesendet werden soll. Wenn der Benutzer bereits authentifiziert ist, kann er auf alle Ressourcen unter demselben Bereich zugreifen, ohne sich erneut anzumelden müssen.

Der Authuserfile Die Anweisung wird verwendet, um auf die Klartextdatei zu verweisen, die das zuvor erstellte Benutzerkennwort mit dem erstellt hat htpasswd Dienstprogramm.

Schließlich haben wir das Erfordern Richtlinie. Mit dieser Richtlinie können wir den Zugriff auf eine Ressource auf der Basis einiger Parameter als Client -IP -Adresse oder wie in diesem Fall die Authentifizierung als spezifischer Benutzer einschränken.

Der /var/www/test Das Verzeichnis enthält eine Indexdatei, Index.html, wo wir gerade den „Zugang gewährt haben!" Nachricht. Sobald unsere Konfiguration fertig ist, können wir den Server neu starten:

$ sudo systemctl starten Sie HTTPD neu starten 

Wenn wir versuchen, auf die Seite zuzugreifen, werden wir aufgefordert, einen Login -Namen und ein Passwort einzugeben:

Die Apache -Anmeldeaufforderung

Wenn wir die richtigen Anmeldeinformationen angeben, wird der Zugriff auf die Seite gewährt:

Der Apache -Zugriff gewährt

Verwenden von Gruppen

In den allermeisten Fällen möchten wir mehreren Benutzern ermöglichen, auf eine Ressource zuzugreifen. In diesen Fällen möchten wir a verwenden Gruppendatei wo wir den Namen einer Gruppe mit einer platz getrennten Liste ihrer Mitglieder verbinden. Angenommen, der Weg unserer Datei ist /etc/httpd/Gruppen; Sein Inhalt wäre:

Erlaubte: egdoc tim Rob 


Wir haben erklärt, dass die Benutzer von EGDOC, Tim und Rob Mitglied der sind Erlaubt Gruppe: Für jeden von ihnen sollte ein Eintrag in der Passwortdatei hinzugefügt werden. Zu diesem Zeitpunkt müssen wir unsere Serverkonfiguration ändern und an das neue Setup anpassen:

 Serverame -Test.Lan Documentroot/var/www/eingeschränkte AuthType Basic Authname "eingeschränkter Bereich"!"AuthbasicProvider -Datei AuthuserFile/etc/httpd/passwörter AuthGroupFile/etc/httpd/Gruppen Erfordern einer Gruppenabfassungserlässiger   

Wir haben eine neue Richtlinie eingeführt, AuthGroupFile, und übergeben den Weg der Datei, in der Gruppen den Benutzern zugeordnet sind. Wir haben auch den Wert der geändert Erfordern Richtlinie; Um nun auf die Ressource zugreifen zu dürfen, muss ein Benutzer Teil der sein Erlaubt Gruppe. Um die Änderungen effektiv zu gestalten, müssen wir den Server neu starten.

Kennwörter in einer Datenbank speichern

Im vorherigen Beispiel haben wir gesehen, wie die Benutzerkennwörter in einer einfachen, einfachen Textdatei gespeichert werden können. Dies ist eine perfekte praktikable Lösung, wenn wir nicht viele Benutzer haben. Wenn die Liste der Benutzer ziemlich lang wird, kann es stattdessen sehr unpraktisch sein, die gesamte Passwortdatei für jede Anforderung zu scannen. In solchen Fällen möchten wir stattdessen die Passwörter in einer Datenbank speichern.

Eine Möglichkeit besteht darin, a zu erstellen DBM Datei. Wir können die Aufgabe erfüllen, indem wir die verwenden htdbm Dienstprogramm. A DBM Datei in derselben Position, die wir im vorherigen Beispiel verwendet haben, können wir ausführen:

$ sudo htdbm -cb/etc/httpd/passwd/passwörter z. 


Wie Sie sehen können, ist die Syntax dem, für die verwendet wird, sehr ähnlich htpasswd. Genau wie zuvor haben wir den Befehl mit dem gestartet -C Option, um die Datei zu erstellen oder sie abzuschneiden, wenn sie bereits vorhanden ist. In diesem Fall haben wir auch die verwendet -B Option zur Verwendung der Verwendung der Bcrypt Algorithmus für die Passwortverschlüsselung. Da wir die Art und Weise geändert haben, wie die Passwörter gespeichert werden, müssen wir auch die Serverkonfiguration ändern:

 Serverame -Test.Lan Documentroot/var/www/eingeschränkte AuthType Basic Authname "eingeschränkter Bereich"!"AuthbasicProvider DBM AuthdbMuserFile/etc/httpd/passwd/kennwörter benötigen Benutzer EGDOC   

Was wir oben geändert haben, ist der Wert, den wir an die übergeben haben AuthbasicProvider Richtlinie, die jetzt ist DBM. Wir haben auch das ersetzt Authuserfile Richtlinie mit AuthDbMuserFile, Bereitstellung genau wie zuvor wird der Pfad der Datei, in dem das Passwort gespeichert ist. Damit diese Konfiguration funktioniert, müssen wir die haben MOD_AUTHN_DMB Modul aktiviert.

Abschluss

In diesem Tutorial haben wir gesehen. Wir haben gesehen, wie man Passwörter in Klartextdateien oder in a speichert DBM Datenbankformat. Wir haben auch gesehen, wie man den Zugriff auf mehrere Benutzer mit a ermöglicht Gruppendatei und welche Richtlinien sollten verwendet werden, um unser Ziel zu erreichen.

Verwandte Linux -Tutorials:

  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Dinge zu installieren auf Ubuntu 20.04
  • Ubuntu 20.04 WordPress mit Apache -Installation
  • SQLite Linux -Tutorial für Anfänger
  • Ampache Raspberry Pi Installation
  • So migrieren Sie Apache in Nginx, indem Sie virtuelleHosts in…
  • Mastering -Bash -Skriptschleifen beherrschen
  • Installieren Sie MySQL auf Ubuntu 20.04 LTS Linux
  • So installieren Sie MySQL auf Almalinux
  • LFTP -Tutorial unter Linux mit Beispielen