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

- 4407
- 82
- Matteo Möllinger
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

Softwareanforderungen und Konventionen verwendet
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:

Wenn wir die richtigen Anmeldeinformationen angeben, wird der Zugriff auf die Seite 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
- « So installieren Sie Docker auf Ubuntu 20.04 LTS FOSSA FOSSA
- Überwachung der Dateiintegrität unter Linux mit OSQuery »