One place for hosting & domains

      So paketieren und veröffentlichen Sie eine Snap-Anwendung unter Ubuntu 18.04


      Der Autor wählte die Electronic Frontier Foundation, um eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

      Einführung

      Eine der größten Herausforderungen in der Anwendungsentwicklung ist der letzte Schritt der Verteilung des fertigen Produkts an Ihre Benutzer oder Kunden. Viele bestehende Methoden zur Anwendungsbereitstellung sind nicht benutzerfreundlich und sicher oder bieten keine Methoden zur automatischen Aktualisierung einer Anwendung nach ihrer Installation.

      Snap ist ein modernes Anwendungsverpackungsformat mit leistungsstarken Sandboxing- und Sicherheitsfunktionen, u. a. Dateisystem-Isolation, automatische Updates und integriertes Abhängigkeitsmanagement. Snap-Anwendungen, die als Snaps bezeichnet werden, können ähnlich wie apt oder yum mit einem Befehlszeilenprogramm heruntergeladen und installiert werden. Ubuntu wird mit vorinstalliertem Snap bereitgestellt, was bedeutet, dass es ein breites Publikum für Snap-Anwendungen gibt.

      In diesem Tutorial werden Sie eine Snap-Anwendung erstellen und im Snap Store veröffentlichen.

      Voraussetzungen

      Um diesem Tutorial zu folgen, benötigen Sie:

      • Einen Ubuntu-18.04-Server, der gemäß Ersteinrichtung eines Servers mit Ubuntu 18.04 eingerichtet wurde, einschließlich eines Benutzers ohne Root- und mit sudo-Berechtigungen.

      • Eine Anwendung, die Sie paketieren und als Snap freigeben möchten. Dabei kann es sich um eine komplexe Anwendung handeln, die Sie erstellt haben, um ein gemeinsames Open-Source-Projekt oder um ein einfaches „Hello, World!“-Programm. Wenn Sie noch keine Anwendung haben, wird in Schritt 1 dieses Tutorials behandelt, wie Sie ein Hello World-Programm in Go erstellen können.

      • Ein Konto auf dem Snapcraft Developer Dashboard.

      Sobald Sie diese zur Verfügung haben, melden Sie sich zunächst als Benutzer ohne Root-Berechtigung auf Ihrem Server an.

      Schritt 1 – Vorbereiten Ihrer Anwendung für die Paketierung

      Zunächst bereiten Sie Ihre Anwendung für die Paketierung als Snap-Anwendung vor, indem Sie sicherstellen, dass alles Erforderliche in einem einzigen Verzeichnis vorhanden ist.

      Beginnen Sie mit der Erstellung eines neuen Verzeichnisses für Ihr Snap und wechseln Sie in dieses:

      • mkdir ~/your-snap
      • cd ~/your-snap

      Wenn Sie bereits eine Anwendung haben, legen Sie als Nächstes eine vollständige Kopie des Quellcodes Ihrer Anwendung in dem Verzeichnis ab, das Sie gerade erstellt haben. Der Prozess wird je nach der genauen Anwendung, die Sie paketieren, erheblich variieren. Für den Fall, dass der Quellcode in einem Git-Repository gespeichert ist, können Sie mit dem Befehl git init ein Repository im Verzeichnis anlegen und den gesamten relevanten Code abrufen.

      Wenn Sie noch keine Anwendung haben, die Sie paketieren möchten, können Sie ein Hello World-Programm erstellen, das Sie stattdessen verwenden. Wenn Sie mehr Kontext zum Schreiben dieses Programms mit Go wünschen, lesen Sie das Tutorial So schreiben Sie ein ersten Programm in Go.

      Sie können dies tun, indem Sie zuerst eine neue Go-Datei erstellen und mit Ihrem bevorzugten Texteditor öffnen:

      Fügen Sie als Nächstes den folgenden Code in die Datei ein:

      helloworld.go

      package main
      import "fmt"
      func main() {
        fmt.Println("Hello, world!")
      }
      

      Speichern und schließen Sie die Datei dann.

      Wenn Sie Go nicht installiert haben, können Sie es mit dem folgenden Befehl installieren:

      • sudo apt install golang-go

      Nachdem Go installiert ist, können Sie Ihr neues Programm ausführen, um zu überprüfen, ob es funktioniert:

      Sie sehen die folgende Ausgabe:

      Output

      Hello, world!

      Sie haben Ihre Anwendung für die Paketierung als Snap vorbereitet. Als Nächstes installieren Sie die Software, die für den Beginn des Paketierungsvorgangs erforderlich ist.

      Schritt 2 – Installieren von Snapcraft

      In diesem Schritt laden Sie Snapcraft, das offizielle Snap-Anwendungs-Paketierungs-Tool, herunter und installieren es. Snapcraft ist über den Snap Store verfügbar, der standardmäßig in Ubuntu integriert ist. Das bedeutet, dass Sie Snapcraft von der Befehlszeile aus mit dem Befehl snap installieren können.

      Der Befehl snap entspricht dem Befehl apt, jedoch können Sie ihn zur Installation von Software aus dem Snap Store anstelle von Paketen aus den Apt-Repositorys verwenden.

      Um Snapcraft zu installieren, führen Sie den folgenden Befehl aus:

      • sudo snap install snapcraft --classic

      Verwenden Sie das Befehlsargument --classic, sodass Snapcraft ohne die strengen Sandboxing-Funktionen installiert wird, die Snaps normalerweise verwenden. Snapcraft benötigt dieses Argument, da es einen privilegierten Zugriff auf Ihr System erfordert, um Anwendungen zuverlässig zu paketieren.

      Sobald Sie Snapcraft installiert haben, sehen Sie Folgendes:

      Output

      snapcraft 3.9.8 from Canonical✓ installed

      Abschließend können Sie die Snapcraft-Installation überprüfen, indem Sie Folgendes ausführen:

      Dadurch wird in etwa Folgendes angezeigt:

      Output

      snapcraft, version 3.9.8

      Nachdem Sie Snapcraft installiert haben, können Sie nun die Konfiguration und Metadaten für Ihre Snap-Anwendung definieren.

      In diesem Schritt werden Sie zunächst die Konfiguration, die Struktur und die Metadaten für Ihre Snap-Anwendung definieren.

      Stellen Sie zuerst sicher, dass Sie immer noch in Ihrem Snap-Anwendungsverzeichnis arbeiten:

      Erstellen und bearbeiten Sie als Nächstes die Datei snapcraft.yaml mit Ihrem bevorzugten Texteditor:

      Sie verwenden die Datei snapcraft.yaml, um die gesamte Konfiguration für Ihre Snap-Anwendung zu speichern, einschließlich des Namens, der Beschreibung und der Version, sowie Einstellungen im Zusammenhang mit der Abhängigkeitsverwaltung und dem Sandboxing.

      Beginnen Sie mit der Definition des Namens, der Zusammenfassung, der Beschreibung und der Versionsnummer für Ihre Anwendung:

      snapcraft.yaml

      name: your-snap
      summary: A summary of your application in 78 characters or less.
      description: |
        A detailed description of your application.
        The description can have multiple lines.
      version: '1.0'
      

      Der Name Ihres Snap muss eindeutig sein, wenn Sie es im Snap Store veröffentlichen möchten – suchen Sie nach anderen Anwendungen mit demselben Namen, um sicherzustellen, dass er nicht bereits vergeben ist.

      Als Nächstes können Sie den/die Befehl(e) definieren, den/die Sie mit Ihrer Anwendung verknüpfen möchten. Dadurch kann Ihr Snap direkt von der Bash-Befehlszeile aus als normaler Befehl verwendet werden.

      Fügen Sie Folgendes zu Ihrer Datei snapcraft.yaml hinzu:

      snapcraft.yaml

      . . .
      apps:
        your-snap-command:
          command: your-snap
      

      your-snap-command ist der Name des Befehls, den Sie definieren möchten. Beispielsweise können Sie den Befehl helloworld verwenden, um Ihr Hello World-Programm auszuführen.

      Verwenden Sie command: your-snap, um Snapcraft mitzuteilen, was zu tun ist, wenn der Anwendungsbefehl ausgeführt ist. Im Fall des Hello World-Programms würden Sie den Wert helloworld verwenden, um auf die Datei helloworld.go zu verweisen, die Snapcraft die erfolgreiche Ausführung Ihres Programms ermöglicht.

      Daraus ergibt sich die folgende Beispielkonfiguration:

      snapcraft.yaml

      apps:
        helloworld:
          command: helloworld
      

      Wenn der Befehlsname genau mit dem Namen des Snaps übereinstimmt, können Sie ihn direkt von der Befehlszeile aus ausführen. Wenn der Befehl nicht mit dem Snap-Namen übereinstimmt, wird dem Befehl automatisch der Name des Snaps vorangestellt. Beispielsweise helloworld.command1.

      Abschließend können Sie die Teile definieren, aus denen sich Ihre Snap-Anwendung zusammensetzt. Snap-Anwendungen bestehen aus mehreren Teilen, die alle die Komponenten Ihrer Anwendung darstellen. In vielen Fällen gibt es nur einen Teil, nämlich die Anwendung selbst.

      Jeder Teil hat ein zugehöriges Plugin. Beispielsweise wird für in Ruby geschriebene Komponenten Ihrer Anwendung das Plugin ruby verwendet, und für in Go geschriebene Komponenten wird das Plugin go verwendet.

      Sie können den Snapcraft-Befehl list-plugins verwenden, um das/die richtigen Plugin(s) für Ihre Anwendung zu identifizieren:

      Dadurch wird in etwa folgende Liste ausgegeben:

      Output

      ant catkin-tools conda dump gradle make nil python rust autotools cmake crystal go kbuild maven nodejs qmake scons catkin colcon dotnet godeps kernel meson plainbox-provider ruby waf

      Die am häufigsten verwendeten Plugins sind solche für gängige Programmiersprachen wie Go, Rust, Ruby oder Python.

      Sobald Sie die richtigen Plugins für Ihre Anwendung identifiziert haben, können Sie damit beginnen, die Konfiguration parts zu Ihrer Datei snapcraft.yaml hinzuzufügen:

      snapcraft.yaml

      . . .
      parts:
        your-snap:
          plugin: plugin-name
          source: .
      

      Verwenden Sie den Konfigurationsparameter source, um den relativen Pfad zu dem Quellcode Ihrer Anwendung anzugeben. Normalerweise ist dies das gleiche Verzeichnis wie die Datei snapcraft.yaml selbst, sodass der Wert für source ein einzelner Punkt (.) ist.

      Anmerkung: Wenn Ihre Anwendungskomponente Abhängigkeiten hat, die für das Erstellen oder Ausführen der Anwendung erforderlich sind, können Sie diese mit den Attributen build-packages und stage-packages angeben. Die angegebenen Namen der Abhängigkeiten werden dann automatisch von dem Standard-Paketmanager für Ihr System abgerufen.

      Beispiel:

      snapcraft.yaml

      parts:
        your-snap:
        plugin: plugin-name
        source: .
        build-packages:
        - gcc
        - make
        stage-packages:
        - libcurl4
      

      Einige Snapcraft-Plugins haben ihre eigenen spezifischen Optionen, die für Ihre Anwendung erforderlich sein können. Daher ist es sinnvoll, die entsprechenden Handbuchseiten für Ihr Plugin hinzuzuziehen.

      • snapcraft help plugin-name

      Im Fall von Go-Anwendungen würden Sie auch den go-importpath angeben. Für die Hello World-Konfiguration ergibt sich daraus die folgende Beispielkofiguation:

      snapcraft.yaml

      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      

      Sie können Ihre Datei snapcraft.yaml offen lassen, um im nächsten Schritt weitere Konfigurationen hinzuzufügen.

      Sie haben die Basiskonfiguration für Ihre Snap-Anwendung definiert. Als Nächstes konfigurieren Sie die Sicherheits- und Sandboxing-Aspekte Ihrer Anwendung.

      Schritt 4 – Sichern Ihrer Snap-Anwendung

      Snap-Anwendungen sind so konzipiert, dass Sie in einer Sandbox-Umgebung ausgeführt werden können. In diesem Schritt konfigurieren Sie also Sandboxing für Ihr Snap. Als Erstes müssen Sie das Sandboxing für Ihre Anwendung aktivieren, was innerhalb von Snapcraft als confinement bekannt ist.

      Fügen Sie Folgendes zu Ihrer Datei snapcraft.yaml hinzu:

      snapcraft.yaml

      . . .
      confinement: strict
      

      Dadurch wird das Sandboxing für Ihre Anwendung aktiviert und verhindert, dass sie auf das Internet, andere laufende Snaps oder das Host-System selbst zugreifen kann. In den meisten Fällen müssen Anwendungen jedoch außerhalb ihrer Sandbox kommunizieren können, beispielsweise wenn sie auf das Internet zugreifen oder im Dateisystem lesen/schreiben müssen.

      Diese Berechtigungen, die innerhalb von Snapcraft als Schnittstellen bekannt sind, können Ihrer Snap-Anwendung mit Plugs gewährt werden. Mithilfe von Plugs können Sie eine sehr feine Kontrolle über das Sandboxing für Ihre Anwendung ausüben, um ihr nur den benötigten Zugriff zu geben und nicht mehr (Prinzip der geringsten Privilegien).

      Die genau benötigten Schnittstellen hängen von Ihrer Anwendung ab. Einige der am häufigsten verwendeten Schnittstellen sind:

      • audio-playback – Erlaubt die Audio-Ausgabe/Wiedergabe von Sounds.
      • audio-record – Erlaubt die Audio-Eingabe/Aufnahme.
      • camera – Erlaubt den Zugriff auf verbundene Webcams.
      • home – Erlaubt den Zugriff auf nicht versteckte Dateien in Ihrem Home-Verzeichnis.
      • network – Erlaubt den Zugriff auf das Netzwerk/Internet.
      • network-bind – Erlaubt die Bindung an Ports, um als Netzwerkdienst zu arbeiten.
      • system-files – Erlaubt den Zugriff auf das gesamte Dateisystem des Host-Rechners.

      Die vollständige Liste der verfügbaren Schnittstellen ist in der Snapcraft-Dokumentation unter Unterstützte Schnittstellen zu finden.

      Sobald Sie alle erforderlichen Schnittstellen für Ihre Anwendung identifiziert haben, können Sie damit beginnen, diese den Plugs innerhalb Ihrer Datei snapcraft.yaml zuzuweisen.

      Die folgende Beispielkonfiguration ermöglicht der Anwendung den Zugriff auf das Netzwerk und den Home-Bereich der Benutzer:

      snapcraft.yaml

      . . .
      plugs:
        your-snap-home:
          interface: home
        your-snap-network:
          interface: network
      

      Speichern und schließen Sie Ihre Datei.

      Der Name des Plug sollte ein beschreibender Name sein, um Benutzern die Identifizierung des Zwecks des Plug zu erleichtern.

      Sie haben das Sandboxing für Ihr Snap aktiviert und einige Plugs konfiguriert, um begrenzten Zugriff auf System-Ressourcen zu gewähren. Als Nächstes werden Sie die Erstellung Ihrer Snap-Anwendung abschließen.

      Schritt 5 – Erstellen und Testen Ihrer Snap-Anwendung

      Nachdem Sie nun die gesamte erforderliche Konfiguration für Ihr Snap geschrieben haben, können Sie mit der Erstellung und dem lokalen Testen des Snap-Paketes fortfahren.

      Wenn Sie diesem Tutorial mit einem Hello World-Programm als Ihre Anwendung gefolgt sind, sieht Ihre vollständige Datei snapcraft.yaml nun in etwa wie folgt aus:

      snapcraft.yaml

      name: helloworld
      summary: A simple Hello World program.
      description: |
        A simple Hello World program written in Go.
        Packaged as a Snap application using Snapcraft.
      version: '1.0'
      confinement: strict
      
      apps:
        helloworld:
          command: helloworld
      
      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      
      plugs:
        helloworld-home:
          interface: home
        helloworld-network:
          interface: network
      

      Um Ihre Snap-Anwendung zu erstellen, führen Sie den Befehl snapcraft aus dem Verzeichnis für Ihr Snap aus:

      Snapcraft startet dann automatisch einen virtuellen Rechner (VM) und beginnt mit der Erstellung Ihres Snap. Sobald die Erstellung abgeschlossen ist, wird Snapcraft beendet und Sie sehen in etwa Folgendes:

      Output

      Snapped your-snap_1.0_amd64.snap

      Jetzt können Sie Ihr Snap lokal installieren, um zu überprüfen, ob es funktioniert:

      • sudo snap install your-snap.snap --dangerous

      Das Befehlsargument --dangerous ist erforderlich, da Sie ein lokales Snap installieren, das nicht signiert wurde.

      Output

      your-snap 1.0 installed

      Sobald der Installationsvorgang abgeschlossen ist, können Sie Ihr Snap mit dem zugehörigen Befehl ausführen. Beispiel:

      Im Fall des Beispielprogramms Hello World würde sich die folgende Ausgabe ergeben:

      Output

      Hello, world!

      Sie können ebenfalls die Sandboxing-Richtlinie für Ihr Snap anzeigen, um sicherzustellen, dass die zugewiesenen Berechtigungen ordnungsgemäß erteilt wurden:

      • snap connections your-snap

      Dadurch wird eine Liste von Plugs und Schnittstellen ausgegeben, die in etwas wie folgt aussieht:

      Output

      snap connections your-snap Interface Plug Slot Notes home your-snap:your-snap-home :home - network your-snap:your-snap-network :network -

      In diesem Schritt haben Sie Ihr Snap erstellt und lokal installiert, um zu testen, ob es funktioniert. Als Nächstes veröffentlichen Sie Ihr Snap im Snap Store.

      Schritt 6 – Veröffentlichen Ihres Snap

      Nachdem Sie Ihre Snap-Anwendung erstellt und getestet haben, ist es nun an der Zeit, sie im Snap Store zu veröffentlichen.

      Melden Sie sich mit der Snapcraft-Befehlszeilenanwendung an Ihrem Snap Developer-Konto an:

      Folgen Sie den Eingabeaufforderungen, um Ihre E-Mail-Adresse und Ihr Passwort einzugeben.

      Als Nächstes müssen Sie den Namen der Anwendung im Snap Store registrieren:

      • snapcraft register your-snap

      Sobald Sie den Snap-Namen registriert haben, können Sie das erstellte Snap-Paket mithilfe von Push in den Shop übertragen:

      • snapcraft push your-snap.snap

      Sie sehen eine Ausgabe, die der folgenden ähnelt:

      Output

      Preparing to push 'your-snap_1.0_amd64.snap'. Install the review-tools from the Snap Store for enhanced checks before uploading this snap. Pushing 'your-snap_1.0_amd64.snap' [===================================================================================================] 100% Processing...| Ready to release! Revision 1 of 'your-snap' created.

      Bei jeder Push-Übertragung in den Snap Store wird die Versionsnummer erhöht, beginnend mit eins. Dies ist nützlich, um die verschiedenen Builds Ihres Snap zu identifizieren.

      Abschließend können Sie Ihr Snap für die Öffentlichkeit freigeben:

      • snapcraft release your-snap revision-number channel

      Wenn dies Ihre erste Push-Übertragung in den Snap Store ist, wird die Versionsnummer 1 sein. Sie können auch zwischen der Freigabe in den Kanälen stable, candidate, beta und edge wählen, wenn Sie mehrere Versionen Ihrer Anwendung in verschiedenen Entwicklungsstufen haben.

      Mit dem folgenden Befehl wird beispielsweise die Version 1 des Hello World-Snap für den Kanal stable freigegeben:

      • snapcraft release helloworld 1 stable

      Sie sehen eine Ausgabe, die der folgenden ähnelt:

      Output

      Track Arch Channel Version Revision latest amd64 stable 1.0 1 candidate ^ ^ beta ^ ^ edge ^ ^ The 'stable' channel is now open.

      Sie können nun im Snap Store nach Ihrer Anwendung suchen und auf einem Ihrer Geräte installieren.

      Snapcraft Store mit in den Suchergebnissen angezeigter HelloWorld-Anwendung

      In diesem letzten Schritt haben Sie Ihr erstelltes Snap-Paket in den Snap Store hochgeladen und für die Öffentlichkeit freigegeben.

      Zusammenfassung

      In diesem Artikel haben Sie eine Snap-Anwendung konfiguriert und erstellt und über den Snap Store für die Öffentlichkeit freigegeben. Sie verfügen nun über die grundlegenden Kenntnisse, die für die Wartung Ihrer Anwendung und die Erstellung neuer Anwendungen erforderlich sind.

      Wenn Sie Snaps weiter erkunden möchten, können Sie den gesamten Snap Store durchsuchen. Vielleicht möchten Sie auch die Snapcraft YAML-Referenz durchsehen, um mehr darüber zu erfahren und zusätzliche Attribute für Ihre Snap-Konfiguration zu identifizieren.

      Wenn Sie sich näher über die Snap-Entwicklung informieren möchten, empfehlen wir Ihnen, mehr über Snap Hooks und deren Implementierung zu lesen. Sie ermöglichen es Snaps, dynamisch auf Systemänderungen wie Upgrades oder Anpassungen der Sicherheitsrichtlinien zu reagieren.



      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