One place for hosting & domains

      So richten Sie Apache Virtual Hosts unter Ubuntu 18.04 ein


      Einführung

      Der Apache-Webserver ist eine beliebte Methode zur Bereitstellung von Websites im Internet. Ab 2019 wird er schätzungsweise 29 % aller aktiven Websites bereitstellen und bietet Entwicklern Robustheit und Flexibilität. Mit Apache kann ein Administrator einen Server einrichten, um mehrere Domänen oder Websites über eine einzige Schnittstelle oder IP zu hosten, indem er ein übereinstimmendes System verwendet.

      Jede mit Apache konfigurierte Domäne oder individuelle Site – bekannt als „virtueller Host“ – leitet den Besucher zu einem bestimmten Verzeichnis, das die Informationen dieser Website enthält. Dies geschieht, ohne anzugeben, dass derselbe Server auch für andere Sites verantwortlich ist. Dieses Schema ist ohne jegliche Softwarebeschränkung erweiterbar, solange Ihr Server die Last bewältigen kann. Die Basiseinheit, die eine individuelle Website oder Domäne beschreibt, wird als virtueller Host bezeichnet.

      In diesem Leitfaden führen wir Sie durch die Einrichtung von virtuellen Apache-Hosts auf einem Ubuntu 18.04-Server. Bei diesem Prozess lernen Sie, wie Sie je nach Art der angeforderten Domäne verschiedenen Benutzern unterschiedlichen Inhalt bereitstellen können.

      Voraussetzungen

      Bevor Sie mit diesem Tutorial beginnen, sollten Sie einen Benutzer ohne Rootberechtigung erstellen.

      Sie müssen auch Apache installiert haben, um diese Schritte durcharbeiten zu können. Falls Sie dies noch nicht getan haben, können Sie Apache mit der Paketmethode apt auf Ihrem Server installieren lassen.

      • sudo apt update
      • sudo apt install apache2

      Wenn Sie genauere Anweisungen sowie die Einrichtung einer Firewall wünschen, lesen Sie bitte unseren Leitfaden So installieren Sie den Apache-Webserver unter Ubuntu 18.04.

      Für die Zwecke dieses Leitfadens wird unsere Konfiguration einen virtuellen Host für example.com und einen weiteren für test.com erstellen. Auf diese wird im gesamten Leitfaden Bezug genommen, doch sollten Sie Ihre eigenen Domänen oder Werte einsetzen, während Sie dem Leitfaden folgen.

      Wenn Sie DigitalOcean verwenden, können Sie anhand der Produktdokumentation So fügen Sie Domänen hinzu lernen, wie Sie Domänen einrichten. Für andere Anbieter lesen Sie die entsprechende Produktdokumentation. Wenn Sie zu diesem Zeitpunkt keine Domäne zur Verfügung haben, können Sie Testwerte verwenden.

      Wir zeigen Ihnen später, wie Sie Ihre lokale hosts-Datei zum Testen der Konfiguration bearbeiten können, wenn Sie Testwerte verwenden. Auf diese Weise können Sie Ihre Konfiguration von Ihrem Heimcomputer validieren, auch wenn Ihr Inhalt über den Domänennamen nicht für andere Besucher verfügbar ist.

      Schritt Eins – Erstellen der Verzeichnisstruktur

      Im ersten Schritt werden wir eine Verzeichnisstruktur erstellen, die die Daten der Website enthält, die wir den Besuchern zur Verfügung stellen werden.

      Unser Dokumentenstamm (das Verzeichnis auf oberster Ebene, in dem Apache nach den bereitzustellenden Inhalten sucht) wird unter dem Verzeichnis /var/www auf einzelne Verzeichnisse gesetzt. Wir erstellen hier ein Verzeichnis für beide virtuellen Hosts, die wir erstellen wollen.

      In jedem dieser Verzeichnisse erstellen wir einen Ordner public_html, der unsere eigentlichen Dateien enthält. Dies gibt uns eine gewisse Flexibilität bei unserem Hosting.

      Zum Beispiel werden wir für unsere Sites unsere Verzeichnisse wie folgt erstellen. Wenn Sie tatsächliche Domänen oder alternative Werte verwenden, tauschen Sie den hervorgehobenen Text gegen diese aus.

      • sudo mkdir -p /var/www/example.com/public_html
      • sudo mkdir -p /var/www/test.com/public_html

      Die rot markierten Abschnitte stellen die Domänennamen dar, die wir von unserem VPS aus bereitstellen möchten.

      Schritt Zwei – Erteilen von Berechtigungen

      Jetzt haben wir die Verzeichnisstruktur für unsere Dateien, aber sie gehören unserem Root-Benutzer. Wenn wir möchten, dass unser normaler Benutzer in der Lage ist, Dateien in unseren Webverzeichnissen zu ändern, können wir die Eigentümerschaft ändern, indem wir Folgendes tun:

      • sudo chown -R $USER:$USER /var/www/example.com/public_html
      • sudo chown -R $USER:$USER /var/www/test.com/public_html

      Die Variable $USER nimmt den Wert des Benutzers an, als der Sie gerade angemeldet sind, wenn Sie die EINGABETASTE drücken. Dadurch besitzt unser normaler Benutzer nun die Unterverzeichnisse public_html, in denen wir unsere Inhalte speichern werden.

      Wir sollten auch unsere Berechtigungen ändern, um sicherzustellen, dass der Lesezugriff auf das allgemeine Webverzeichnis und alle darin enthaltenen Dateien und Ordner erlaubt ist, damit die Seiten korrekt bereitgestellt werden können:

      • sudo chmod -R 755 /var/www

      Ihr Webserver sollte nun über die erforderlichen Berechtigungen verfügen, um Inhalte bereitzustellen, und Ihr Benutzer sollte in der Lage sein, Inhalte in den erforderlichen Ordnern zu erstellen.

      Schritt Drei – Erstellen von Demo-Seiten für jeden virtuellen Host

      Wir haben nun unsere Verzeichnisstruktur eingerichtet. Lassen Sie uns einige Inhalte erstellen, die wir bereitstellen können.

      Zu Demonstrationszwecken werden wir für jede Website eine Seite index.html erstellen.

      Beginnen wir mit example.com. Wir können eine Datei index.html in einem Texteditor öffnen. In diesem Fall verwenden wir nano:

      • nano /var/www/example.com/public_html/index.html

      Erstellen Sie innerhalb dieser Datei ein HTML-Dokument, das die Website angibt, mit der sie verbunden ist, wie folgt:

      /var/www/example.com/public_html/index.html

      <html>
        <head>
          <title>Welcome to Example.com!</title>
        </head>
        <body>
          <h1>Success! The example.com virtual host is working!</h1>
        </body>
      </html>
      

      Speichern und schließen Sie die Datei (in nano drücken Sie STRG + X, dann Y und dann die EINGABETASTE) wenn Sie fertig sind.

      Wir können diese Datei kopieren und als Grundlage für unsere zweite Website verwenden, indem wir Folgendes eingeben:

      • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

      Dann können wir die Datei öffnen und die relevanten Informationen ändern:

      • nano /var/www/test.com/public_html/index.html

      /var/www/test.com/public_html/index.html

      <html>
        <head>
          <title>Welcome to Test.com!</title>
        </head>
        <body> <h1>Success! The test.com virtual host is working!</h1>
        </body>
      </html>
      

      Speichern und schließen Sie auch diese Datei. Sie verfügen nun über die erforderlichen Seiten zum Testen der Konfiguration des virtuellen Hosts.

      Schritt Vier – Erstellen neuer virtuelle Host-Dateien

      Virtuelle Host-Dateien sind die Dateien, die die tatsächliche Konfiguration unserer virtuellen Hosts spezifizieren und bestimmen, wie der Apache-Webserver auf verschiedene Domänenanfragen reagieren wird.

      In Apache ist eine virtuelle Standarddatei namens 000-default.conf enthalten, die wir als Ausgangspunkt verwenden können. Wir werden sie kopieren, um eine virtuelle Host-Datei für jede unserer Domänen zu erstellen.

      Wir beginnen mit einer Domäne, konfigurieren sie, kopieren sie für unsere zweite Domäne und nehmen dann die wenigen weiteren erforderlichen Anpassungen vor. Die Standardkonfiguration von Ubuntu erfordert, dass jede virtuelle Host-Datei auf .conf endet.

      Die erste virtuelle Host-Datei erstellen

      Dazu kopieren Sie die Datei für die erste Domäne:

      • sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

      Öffnen Sie die neue Datei in Ihrem Editor mit Root-Berechtigungen:

      • sudo nano /etc/apache2/sites-available/example.com.conf

      Ohne Kommentare wird die Datei in etwa wie folgt aussehen:

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Innerhalb dieser Datei werden wir Elemente für unsere erste Domäne anpassen und einige zusätzliche Anweisungen hinzufügen. Dieser virtuelle Host-Abschnitt entspricht allen Anfragen, die auf Port 80, dem standardmäßigen HTTP-Port, gestellt werden.

      Zuerst müssen wir die Anweisung ServerAdmin in eine E-Mail ändern, über die der Website-Administrator E-Mails empfangen kann.

      ServerAdmin [email protected]
      

      Danach müssen wir zwei Anweisungen hinzufügen. Der erste namens ServerName legt die Grunddomäne fest, die mit dieser Definition des virtuellen Hosts übereinstimmen sollte. Dies wird höchstwahrscheinlich Ihre Domäne sein. Die zweite namens ServerAlias definiert weitere Namen, die übereinstimmen sollten, als wären sie der Basisname. Dies ist nützlich für die von Ihnen definierte Zuordnung von Hosts, wie beispielsweise www:

      ServerName example.com
      ServerAlias www.example.com
      

      Das einzige, was wir für unsere virtuelle Host-Datei ändern müssen, ist der Speicherort des Dokumentenstamms für diese Domäne. Wir haben das benötigte Verzeichnis bereits erstellt, also müssen wir nur die Anweisung DocumentRoot so ändern, dass sie das von uns erstellte Verzeichnis widerspiegelt:

      DocumentRoot /var/www/example.com/public_html
      

      Nach Fertigstellung sollte unsere virtuelle Host-Datei wie folgt aussehen:

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin [email protected]
          ServerName example.com
          ServerAlias www.example.com
          DocumentRoot /var/www/example.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Speichern und schließen Sie dann die Datei.

      Den ersten virtuellen Host kopieren und für die zweite Domäne anpassen

      Jetzt haben wir unsere erste virtuelle Host-Datei eingerichtet und können dann unsere zweite Datei erstellen, indem wir diese Datei kopieren und je nach Bedarf anpassen.

      Kopieren Sie zu diesem Zweck die Datei:

      • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

      Öffnen Sie die neue Datei mit Rootberechtigungen in Ihrem Textbearbeitungsprogramm:

      • sudo nano /etc/apache2/sites-available/test.com.conf

      Jetzt müssen Sie alle Informationen so ändern, dass sie sich auf Ihre zweite Domäne beziehen. Wenn Sie fertig sind, sollte sie wie folgt aussehen:

      /etc/apache2/sites-available/test.com.conf

      <VirtualHost *:80>
          ServerAdmin [email protected]
          ServerName test.com
          ServerAlias www.test.com
          DocumentRoot /var/www/test.com/public_html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Wenn Sie fertig sind, speichern und schließen Sie die Datei.

      Schritt Fünf – Aktivieren der neuen virtuellen Host-Dateien

      Nachdem wir nun unsere virtuellen Host-Dateien erstellt haben, müssen wir sie aktivieren. Apache enthält einige Tools, mit denen wir dies tun können.

      Wir verwenden das Tool a2ensite, um jede unserer Sites zu aktivieren. Wenn Sie mehr über dieses Skript lesen möchten, können Sie die Dokumentation zu a2ensite einsehen.

      • sudo a2ensite example.com.conf
      • sudo a2ensite test.com.conf

      Deaktivieren Sie die unter 000-default.conf definierte Standard-Site:

      • sudo a2dissite 000-default.conf

      Wenn Sie fertig sind, müssen Sie Apache neu starten, damit diese Änderungen wirksam werden, und systemctl status verwenden, um den Erfolg des Neustarts zu verifizieren.

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Ihr Server sollte jetzt für zwei Websites eingerichtet sein.

      Schritt Sechs – Einrichten der Datei „Local Hosts“ (optional)

      Wenn Sie zum Testen dieses Verfahrens keine tatsächlichen Domänennamen, die ihnen gehören, verwendet haben, sondern stattdessen einige Beispieldomänen, können Sie zumindest die Funktionalität dieses Prozesses testen, indem Sie die Datei hosts auf Ihrem lokalen Rechner vorübergehend ändern.

      Dadurch werden alle Anfragen für die von Ihnen konfigurierten Domänen abgefangen und an Ihren VPS-Server verwiesen, so wie es das DNS-System tun würde, wenn Sie registrierte Domänen verwenden würden. Dies funktioniert jedoch nur von Ihrem lokalen Rechner aus und nur zu Testzwecken.

      Stellen Sie sicher, dass Sie für diese Schritte auf Ihrem lokalen Rechner arbeiten und nicht auf Ihrem VPS-Server. Sie müssen das administrative Passwort des Rechners kennen oder anderweitig ein Mitglied der administrativen Gruppe sein.

      Wenn Sie auf einem Mac- oder Linux-Rechner arbeiten, bearbeiten Sie Ihre lokale Datei mit administrativen Berechtigungen, indem Sie Folgendes eingeben:

      Wenn Sie auf einem Windows-Rechner arbeiten, finden Sie hier Anweisungen zur Änderung Ihrer Datei hosts.

      Die Angaben, die Sie hinzufügen müssen, sind die öffentliche IP-Adresse Ihres Servers, gefolgt von der Domäne, mit der Sie diesen Server erreichen möchten.

      Nach Verwenden der in diesem Leitfaden verwendeten Domänen und Ersetzen Ihrer Server-IP im Text your_server_IP sollte Ihre Datei wie folgt aussehen:

      /etc/hosts

      127.0.0.1   localhost
      127.0.1.1   guest-desktop
      your_server_IP example.com
      your_server_IP test.com
      

      Speichern und schließen Sie die Datei.

      Damit werden alle Anfragen, z. B. example.com und test.com, an unseren Rechner weitergeleitet und auf unseren Server übertragen. Genau das möchten wir, wenn wir nicht tatsächlich die Besitzer dieser Domänen sind, um unsere virtuellen Hosts zu testen.

      Schritt Sieben – Testen Ihrer Ergebnisse

      Nach der Konfiguration Ihrer virtuellen Hosts können Sie Ihr Setup testen, indem Sie zu den Domänen gehen, die Sie in Ihrem Webbrowser konfiguriert haben.

      http://example.com
      

      Sie sollten eine Seite sehen, die so aussieht:

      Beispiel für einen virtuellen Apache Host

      Sie können auch Ihre zweite Seite besuchen und die Datei sehen, die Sie für Ihre zweite Site erstellt haben.

      http://test.com
      

      Test für einen virtuellen Apache Host

      Wenn beide Sites wie erwartet funktionieren, haben Sie erfolgreich zwei virtuelle Hosts auf ein und demselben Server konfiguriert.

      Wenn Sie die Datei hosts Ihres Heimcomputers angepasst haben, möchten Sie die hinzugefügten Zeilen möglicherweise löschen, nachdem Sie die Funktionalität Ihrer Konfiguration überprüft haben. Dadurch wird verhindert, dass Ihre Datei hosts mit Einträgen gefüllt wird, die nicht mehr erforderlich sind.

      Wenn Sie langfristig auf diese Datei zugreifen müssen, sollten Sie in Erwägung ziehen, für jede benötigte Website einen Domänennamen hinzuzufügen und sie so einzurichten, dass sie auf Ihren Server verweist.

      Zusammenfassung

      Wenn Sie diesem Beispiel gefolgt sind, sollten Sie jetzt einen einzigen Server haben, der zwei separate Domänennamen verwaltet. Sie können diesen Prozess erweitern, indem Sie die oben beschriebenen Schritte befolgen, um zusätzliche virtuelle Hosts zu erstellen.

      Es gibt keine Softwareeinschränkung für die Anzahl der Domänennamen, die Apache verarbeiten kann, also zögern Sie nicht, so viele zu erstellen, wie Ihr Server verarbeiten kann.



      Source link

      So richten Sie eine Passwort-Authentifizierung mit Apache unter Ubuntu 18.04 ein [Schnellstart]


      Einführung

      Dieses Tutorial führt Sie durch den Passwortschutz von Assets auf einem Apache-Webserver, der unter Ubuntu 18.04. ausgeführt wird. Durch die Ausführung dieser Schritte wird Ihrem Server zusätzliche Sicherheit bereitgestellt, damit unbefugte Benutzer auf bestimmte Teile Ihrer Seite nicht zugreifen können.

      Eine ausführlichere Version dieses Tutorials mit detaillierteren Erklärungen zu den einzelnen Schritten finden Sie unter So richten Sie die Passwort-Authentifizierung mit Apache unter Ubuntu 18.04 ein.

      Voraussetzungen

      Um diesem Tutorial zu folgen, benötigen Sie auf einem Ubuntu 18.04-Server Zugriff auf Folgendes:

      • Einen sudo-Benutzer auf Ihrem Server

      • Einen Apache2-Webserver

      • Eine Site, die mit SSL gesichert ist

      Schritt 1 – Installation des Apache-Dienstprogramm-Pakets

      Wir installieren ein Dienstprogramm namens htpasswd, das Teil des apache2-utils-Pakets ist, um Benutzernamen und Passwörter mit Zugriff auf beschränkte Inhalte zu verwalten.

      • sudo apt update
      • sudo apt install apache2-utils

      Schritt 2 – Erstellen der Passwort-Datei

      Wir erstellen den ersten Benutzer wie folgt (ersetzen Sie `first_username durch einen Benutzernamen Ihrer Wahl):

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

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

      Geben Sie nicht das Argument -c für zusätzliche Benutzer an, die Sie hinzufügen möchten, um die Datei nicht zu überschreiben:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

      Schritt 3 – Einrichten der Apache Passwort-Authentifizierung

      In diesem Schritt müssen wir Apache konfigurieren, um diese Datei zu überprüfen, bevor wir unseren geschützten Inhalt bereitstellen. Dazu verwenden wir die virtuelle Host-Datei der Site, aber es gibt eine weitere Option, die im längeren Tutorial ausführlich beschrieben wird, wenn Sie keinen Zugriff haben oder lieber .htaccess-Dateien verwenden.

      Öffnen Sie die virtuelle Host-Datei, zu der Sie mit einem Textbearbeitungsprogramm wie nano eine Einschränkung hinzufügen möchten:

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

      Die Authentifizierung wird pro Verzeichnis durchgeführt. In unserem Beispiel beschränken wir den gesamten Dokumentenstamm, aber Sie können diese Liste ändern, um nur auf ein bestimmtes Verzeichnis im Web-Raum abzuzielen.

      In diesem Schritt fügen Sie die folgenden hervorgehobenen Zeilen zu Ihrer Datei hinzu:

      /etc/apache2/sites-enabled/default-ssl.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>
      

      Überprüfen Sie die Konfiguration mit dem folgenden Befehl:

      Sie können den Server neu starten, um Ihre Passwort-Richtlinien umzusetzen, und dann den Status Ihres Servers überprüfen.

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Schritt 4 – Bestätigung der Passwort-Authentifizierung

      Um zu bestätigen, dass Ihr Inhalt geschützt ist, versuchen Sie, auf Ihren beschränkten Inhalt in einem Webbrowser zuzugreifen. Sie sollten eine Benutzernamen- und Passwort-Eingabeaufforderung sehen:

      Eingabeaufforderung für ein Apache2-Passwort

      Relevante Tutorials

      Hier sehen Sie Links zu detaillierteren Leitfäden, die in Verbindung mit diesem Tutorial stehen:



      Source link

      So richten Sie eine Passwort-Authentifizierung mit Apache unter Ubuntu 18.04 ein


      Einführung

      Für Sie als Web-Administrator könnte es eventuell sinnvoll sein, einige Teile einer Website vorübergehend oder dauerhaft für Besucher einzuschränken. Obwohl Webanwendungen möglicherweise ihre eigenen Authentifizierungs- und Autorisierungsmethoden anbieten, können Sie sich auch auf den Webserver selbst stützen, um den Zugriff einzuschränken, wenn diese unzureichend oder nicht verfügbar sind.

      Dieses Tutorial bietet Ihnen eine Vorgehensweise, um Assets auf einem Apache-Webserver, auf dem Ubuntu 18.04 ausgeführt wird, mit einem Passwort zu schützen, um Ihren Server mit zusätzlicher Sicherheit zu versehen.

      Voraussetzungen

      Um dieses Tutorial fertigzustellen, benötigen Sie Zugriff auf einen Ubuntu 18.04 Server.

      Zusätzlich benötigen Sie die folgende Einrichtung, bevor Sie beginnen können:

      • Einen sudo-Benutzer auf Ihrem Server: Sie können einen Benutzer mit sudo-Berechtigungen erstellen, indem Sie der Anleitung für die Ersteinrichtung eines Servers unter Ubuntu 18.04 folgen.

      • Einen Apache2-Webserver: Sollten Sie noch keinen eingerichtet haben, können Sie eine Hilfestellung in dem Tutorial So installieren Sie den Apache-Webserver unter Ubuntu 18.04 finden.

      • Eine mit SSL gesicherte Website: Wie Sie diese einrichten, hängt davon ab, ob Sie einen Domänenamen für Ihre Website haben.

        • Wenn Sie einen Domänennamen haben, können Sie Ihre Site mit Let’s Encrypt sichern, das kostenlose, vertrauenswürdige Zertifikate bereitstellt. Folgen Sie dem Leitfaden Let’s Encrypt für Apache, um diese Einrichtung vorzunehmen.
        • Wenn Sie keine Domäne haben und diese Konfiguration nur zu Testzwecken oder für den persönlichen Gebrauch verwenden, können Sie stattdessen ein selbstsigniertes Zertifikat verwenden. Damit wird die gleiche Art der Verschlüsselung bereitgestellt, aber ohne Domänenvalidierung. Folgen Sie dem Leitfaden für selbstsignierte SSL für Apache, um diese Einrichtung vorzunehmen.

      Wenn alle diese Voraussetzungen erfüllt sind, melden Sie sich als sudo-Benutzer an Ihrem Server an und fahren weiter unten fort.

      Schritt 1 – Installieren des Apache-Dienstprogrammpakets

      Beginnen wir, indem wir unseren Server aktualisieren und ein Paket installieren, das wir benötigen. Um diesem Tutorial zu folgen, verwenden wir ein Dienstprogramm namens htpasswd, das Teil des Pakets apache2-utils ist, um die Datei zu erstellen und den Benutzernamen und die Passwörter zu verwalten, die für den Zugriff auf eingeschränkte Inhalte benötigt werden.

      • sudo apt update
      • sudo apt install apache2-utils

      Wenn dies installiert ist, haben wir Zugriff auf den Befehl htpasswd.

      Schritt 2 – Erstellen der Passwort-Datei

      Mit dem Befehl htpasswd können wir eine Passwortdatei erstellen, die Apache zur Authentifizierung von Benutzern verwenden kann. Wir werden zu diesem Zweck eine versteckte Datei namens .htpasswd in unserem Konfigurationsverzeichnis /etc/apache2 erstellen.

      Wenn wir dieses Dienstprogramm zum ersten Mal verwenden, müssen wir die Option -c hinzufügen, um die spezifizierte passwdfile zu erstellen. Wir geben am Ende des Befehls einen Benutzernamen (in diesem Beispiel sammy) an, 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.

      Geben Sie für zusätzliche Benutzer, die Sie hinzufügen möchten, nicht das Argument -c ein, um die Datei nicht zu überschreiben:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

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

      • cat /etc/apache2/.htpasswd

      Output

      sammy:$apr1$.0CAabqX$rb8lueIORA/p8UzGPYtGs/ another_user:$apr1$fqH7UG8a$SrUxurp/Atfq6j7GL/VEC1

      Unsere Benutzer und Passwörter liegen jetzt in einem Format vor, das Apache lesen kann.

      Schritt 3 – Konfigurieren der Apache Passwort-Authentifizierung

      In diesem Schritt müssen wir Apache so konfigurieren, dass diese Datei überprüft wird, bevor unser geschützter Inhalt bereitgestellt wird. Wir können dies auf eine von zwei Arten tun: entweder direkt in der virtuellen Host-Datei einer Website oder indem wir .htaccess-Dateien in die Verzeichnisse übertragen, die eine Einschränkung benötigen. In der Regel empfiehlt sich die Verwendung der virtuellen Host-Datei. Wenn Sie jedoch Benutzern ohne Rootberechtigung die Verwaltung ihrer eigenen Zugriffsbeschränkungen ermöglichen müssen, die Einschränkungen in die Versionskontrolle der Website integrieren müssen oder eine Webanwendung haben, die .htaccess-Dateien bereits für andere Zwecke verwendet, sollten Sie die zweite Option ausprobieren.

      Wählen Sie die Option, die am besten für Ihre Bedürfnisse geeignet ist.

      Option 1: Konfigurieren der Zugriffskontrolle innerhalb der virtuellen Host-Definition (bevorzugt)

      Die erste Option besteht darin, die Apache-Konfiguration zu bearbeiten und den Passwortschutz zu der virtuellen Host-Datei hinzuzufügen. Dadurch wird im Allgemeinen eine bessere Leistung erzielt, da die Kosten für das Lesen von verteilten Konfigurationsdateien vermieden werden. Diese Option erfordert Zugriff auf die Konfiguration, der nicht immer verfügbar ist. Wenn Sie jedoch Zugriff haben, wird dies empfohlen.

      Beginnen Sie, indem Sie die virtuelle Host-Datei öffnen, der Sie eine Einschränkung hinzufügen möchten. Wir werden für unser Beispiel die Datei default-ssl.conf verwenden, die den virtuellen Standard-Host enthält, der über das Apache-Paket von Ubuntu installiert wurde. Öffnen Sie die Datei mit einem Befehlszeilen-Texteditor wie nano:

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

      Ohne die Kommentare sollte die Datei in etwa wie folgt aussehen:

      /etc/apache2/sites-enabled/default-ssl.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 wird pro Verzeichnis durchgeführt. Um die Authentifizierung einzurichten, müssen Sie das Verzeichnis, das Sie einschränken möchten, mit einem <Directory ___>-Block als Ziel angeben. In unserem Beispiel schränken wir den gesamte Dokumentenstamm ein. Sie können diese Auflistung jedoch so ändern, dass sie nur auf ein bestimmtes Verzeichnis innerhalb des Webspace abzielt:

      /etc/apache2/sites-enabled/default-ssl.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>
      

      Innerhalb dieses Verzeichnisblocks legen wir fest, dass die Basic-Authentifizierung eingerichtet wird. Wählen Sie für den AuthName einen Bereichsnamen, der dem Benutzer bei der Aufforderung zur Eingabe der Anmeldedaten angezeigt wird. Verwenden Sie die Anweisung AuthUserFile, um Apache auf die von uns erstellte Passwort-Datei zu verweisen. Machen Sie es zum Schluss zur Bedingung, dass nur ein valid-user auf diese Ressource zugreifen kann, was bedeutet, dass jede Person, die ihre Identität mit einem Passwort verifizieren kann, Zugriff erhält.

      /etc/apache2/sites-enabled/default-ssl.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>
      

      Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, drücken Sie hierfür STRG+X, gefolgt von Y und dann der EINGABETASTE.

      Bevor Sie den Webserver neu starten, können Sie die Konfiguration mit dem folgenden Befehl überprüfen:

      • sudo apache2ctl configtest

      Wenn alles in Ordnung ist und Sie als Ausgabe Syntax OK erhalten, können Sie den Server neu starten, um Ihre Passwort-Richtlinie zu implementieren. Da systemctl nicht das Ergebnis aller Dienstverwaltungsbefehle anzeigt, verwenden wir status, um sicherzustellen, dass der Server ausgeführt wird:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Nun sollte das von Ihnen angegebene Verzeichnis passwortgeschützt sein.

      Option 2: Konfigurieren der Zugriffskontrolle mit .htaccess-Dateien

      Apache kann .htaccess-Dateien verwenden, um die Einstellung bestimmter Konfigurationselemente innerhalb eines Inhaltsverzeichnisses zu ermöglichen. Da Apache diese Dateien bei jeder das Verzeichnis betreffenden Anfrage erneut lesen muss, was sich negativ auf die Leistung auswirken kann, wird Option 1 bevorzugt. Wenn Sie jedoch bereits die Datei .htaccess verwenden oder Benutzern ohne Rootberechtigung die Verwaltung von Einschränkungen ermöglichen müssen, sind .htaccess-Dateien sinnvoll.

      Um den Passwortschutz unter Verwendung von .htaccess-Dateien zu aktivieren, öffnen Sie die Apache-Konfigurationsdatei mit einem Befehlszeilen-Texteditor wie nano:

      • sudo nano /etc/apache2/apache2.conf

      Suchen Sie den Block <Directory> für das Verzeichnis /var/www, in dem sich der Dokumentenstamm befindet. Aktivieren Sie die Verarbeitung von .htaccess, indem Sie die Anweisung AllowOverride innerhalb dieses Blocks von None zu All ändern:

      /etc/apache2/apache2.conf

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

      Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, drücken Sie hierfür STRG+X, gefolgt von Y und dann der EINGABETASTE.

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

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

      Innerhalb dieser Datei geben wir an, dass wir die Basic-Authentifizierung einrichten möchten. Wählen Sie für den AuthName einen Bereichsnamen, der dem Benutzer bei der Aufforderung zur Eingabe der Anmeldedaten angezeigt wird. Verwenden Sie die Anweisung AuthUserFile, um Apache auf die von uns erstellte Passwort-Datei zu verweisen. Abschließend erfordern wir den Zugriff auf diese Ressource durch einen valid-user, d. h. jede Person, die ihre Identität mit einem Passwort verifizieren kann, erhält Zugriff:

      /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 der .htaccess-Datei mit einem Passwort zu schützen, und verwenden Sie systemctl status, um den Erfolg des Neustarts zu überprüfen:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Das von Ihnen angegebene Verzeichnis sollte nun passwortgeschützt sein.

      Schritt 4 – Bestätigen der Passwort-Authentifizierung

      Um zu bestätigen, dass Ihr Inhalt geschützt ist, versuchen Sie, in einem Webbrowser auf Ihren eingeschränkten Inhalt zuzugreifen. Sie sollten eine Aufforderung zur Eingabe von Benutzername und Passwort erhalten, die wie folgt aussieht:

      Eingabeaufforderung für ein Apache2-Passwort

      Wenn Sie die richtigen Anmeldedaten eingeben, können Sie auf den Inhalt zugreifen. Wenn Sie die falschen Anmeldedaten eingeben oder auf „Cancel“ klicken, wird die Fehlerseite „Unauthorized“ angezeigt:

      Apache2 Fehler „unauthorized“

      Zusammenfassung

      Herzlichen Glückwunsch! Wenn Sie diesem Tutorial gefolgt sind, haben Sie nun die standardmäßige Authentifizierung für Ihre Website eingerichtet.

      Sie können mit der Apache-Konfiguration und .htaccess noch wesentlich mehr tun. Um mehr über die Flexibilität und Leistungsfähigkeit der Apache-Konfiguration zu erfahren, probieren Sie eines dieser Tutorials aus:



      Source link