One place for hosting & domains

      Konfigurieren

      Installieren und Konfigurieren von Postfix unter Ubuntu 20.04


      Eine frühere Version dieses Tutorials wurde von Justin Ellingwood verfasst

      Einführung

      Postfix ist ein beliebter Open-Source Mail Transfer Agent (MTA), der zur Weiterleitung und Zustellung von E-Mails auf einem Linux-System verwendet werden kann. Schätzungen zufolge führen etwa 25 % der öffentlichen Mail-Server im Internet Postfix aus.

      In diesem Leitfaden zeigen wir Ihnen, wie Sie Postfix auf einem Ubuntu 20.04 Server installieren und konfigurieren. Anschließend testen Sie, ob Postfix in der Lage ist, E-Mails korrekt weiterzuleiten, indem Sie s-nail, einen Mail User Agent (MUA), auch als E-Mail-Client bekannt, installieren.

      Beachten Sie, dass das Ziel dieses Tutorials darin besteht, Ihnen dabei zu helfen, Postfix schnell zum Laufen zu bringen, und zwar mit nur einigen grundlegenden E-Mail-Funktionen. Am Ende dieses Leitfadens werden Sie zwar noch nicht über einen voll funktionsfähigen E-Mail-Server verfügen, aber einige der grundlegenden Komponenten einer solchen Einrichtung werden Ihnen den Einstieg erleichtern.

      Voraussetzungen

      Um diesem Leitfaden zu folgen, benötigen Sie Folgendes:

      • Einen Server mit Ubuntu 20.04, der als Postfix Mail-Server fungiert. Dieser Server sollte über einen Nicht-root-Benutzer mit sudo-Berechtigungen und eine mit UFW konfigurierte Firewall verfügen. Um das einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers unter Ubuntu 20.04 folgen.
      • Einen vollständig qualifizierten Domänennamen, der auf Ihren Ubuntu 20.04-Server verweist. Hilfe bei der Einrichtung Ihres Domänennamens mit DigitalOcean finden Sie, indem Sie unserer Dokumentation Domänen und DNS-Netzwerke folgen. Beachten Sie, dass Sie, wenn Sie den Zugriff auf E-Mails von einem externen Standort planen, sicherstellen müssen, dass Sie auch über einen MX-Datensatz verfügen, der auf auf Ihren Mail-Server verweist.

      Beachten Sie, dass dieses Tutorial davon ausgeht, dass Sie einen Host konfigurieren, der den FQDN von mail.example.com hat. Falls erforderlich, stellen Sie sicher, dass Sie example.com oder mail.example.com so ändern, dass sie Ihren eigenen FQDN widerspiegeln.

      Schritt 1 — Installieren von Postfix

      Postfix ist in den Standard-Repositorys von Ubuntu enthalten, sodass Sie es mit APT installieren können.

      Um zu beginnen, aktualisieren Sie Ihren lokalen apt-Paketcache:

      Installieren Sie dann das Paket postfix mit dem folgenden Beachten Sie, dass wir hier die Umgebungssvariable DEBIAN_PRIORITY=low an diesen Installationsbefehl übergeben. Dies führt dazu, dass der Installationsprozess Sie auffordert, einige zusätzliche Optionen zu konfigurieren:

      • sudo DEBIAN_PRIORITY=low apt install postfix

      Dieser Installationsprozess öffnet eine Reihe von interaktiven Eingabeaufforderungen. Verwenden Sie für die Zwecke dieses Tutorials die folgenden Informationen, um Ihre Eingabeaufforderungen auszufüllen:

      • General type of mail configuration? Wählen Sie hierfür Internet Site, da dies unseren Infrastrukturanforderungen entspricht.
      • System mail name: Dies ist die Basisdomäne, die zur Erstellung einer gültigen E-Mail-Adresse verwendet wird, wenn nur der Kontoteil der Adresse angegeben wird. Nehmen wir beispielsweise an, dass der Hostname Ihres Servers mail.example.com lautet. Wahrscheinlich möchten Sie den System-Mail-Namen auf example.com setzen, sodass Postfix bei der Angabe des Benutzernamens user1 die Adresse user1@example.com verwendet.
      • Root and postmaster mail recipient: Dies ist das Linux-Konto, das an root@ und postmaster@ adressierte Mail weitergeleitet wird. Verwenden Sie hierfür Ihr primäres Konto. In diesem Beispielfall sammy.
      • Other destinations to accept mail for: Dies definiert die E-Mail-Ziele, die diese Postfix-Instanz akzeptiert. Wenn Sie weitere Domänen hinzufügen müssen, für deren Empfang dieser Server verantwortlich ist, fügen Sie diese hier hinzu. Andernfalls ist die Standardeinstellung ausreichend.
      • Force synchronous updates on mail queue?: Da Sie wahrscheinlich ein journalisiertes Dateisystem verwenden, akzeptieren Sie hier No.
      • Local networks: Dies ist eine Liste der Netzwerke, für die Ihr Mail-Server für die Weiterleitung von Nachrichten konfiguriert ist. Die Standardeinstellung wird für die meisten Szenarien funktionieren. Wenn Sie sie jedoch modifizieren möchten, stellen Sie sicher, dass Sie in Bezug auf den Netzwerkbereich sehr restriktiv sind.
      • Mailbox size limit: Dies kann verwendet werden, um die Größe von Nachrichten zu begrenzen. Eine Einstellung auf 0 deaktiviert jede Größenbeschränkung.
      • Local address extension character: Dies ist as Zeichen, das verwendet werden kann, um den regulären Teil der Adresse von einer Erweiterung zu trennen (verwendet zur Erstellung dynamischer Aliase) Die Standardeinstellung + funktioniert für dieses Tutorial.
      • Internet protocols to use: Wählen Sie, ob die IP-Version, die Postfix unterstützt, eingeschränkt werden soll. Wählen Sie für die Zwecke dieses Tutorials all aus.

      Um genau zu sein, sind dies die in diesem Leitfaden verwendeten Einstellungen:

      • General type of mail configuration?: Internet Site
      • System mail name: example.com (nicht mail.example.com)
      • Root and postmaster mail recipient: Der Benutzername Ihres primären Linux-Kontos (in unserem Beispiel sammy).
      • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
      • Force synchronous updates on mail queue?: No
      • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
      • Mailbox size limit: 0
      • Local address extension character: +
      • Internet protocols to use: all

      Anmerkung: Wenn Sie jemals zurückkehren müssen, um diese Einstellungen zu ändern, können Sie dies durch die folgende Eingabe tun:

      • sudo dpkg-reconfigure postfix

      Die Eingabeaufforderungen werden mit Ihren vorherigen Antworten vorausgefüllt.

      Wenn der Installationsprozess abgeschlossen ist, können Sie einige Aktualisierungen an Ihrer Postfix-Konfiguration vornehmen.

      Schritt 2 — Ändern der Postfix-Konfiguration

      Jetzt können Sie einige Einstellungen anpassen, zu denen Sie bei der Paketinstallation nicht aufgefordert wurden. Viele der Konfigurationseinstellungen von Postfix sind in der Datei /etc/postfix/main.cf definiert. Anstatt diese Datei direkt zu bearbeiten, können Sie den Befehl postconf von Postfix verwenden, um Konfigurationseinstellungen abzufragen oder festzulegen.

      Legen Sie zunächst den Speicherort für das Postfach Ihres Nicht-root-Ubuntu-Benutzers fest. In diesem Leitfaden verwenden wir das Format Maildir, das Nachrichten in einzelne Dateien trennt, die dann basierend auf Benutzeraktionen zwischen Verzeichnissen verschoben werden. Die alternative Option, die in diesem Leitfaden nicht abgedeckt ist, ist das mbox-Format, das alle Nachrichten innerhalb einer einzigen Datei speichert.

      Setzen Sie die Variable home_mailbox auf Maildir/. Später erstellen Sie eine Verzeichnisstruktur unter diesem Namen innerhalb des Home-Verzeichnisses Ihres Benutzers. Konfigurieren Sie home_mailbox durch Eingabe von:

      • sudo postconf -e 'home_mailbox= Maildir/'

      Als Nächstes legen Sie den Speicherort für die Tabelle virtual_alias_maps fest, die beliebige E-Mail-Konten an Linux-Systemkonten abbildet. Führen Sie den folgenden Befehl aus, der den Tabellenspeicherort einer Hash-Datenbankdatei namens /etc/postfix/virtual zuordnet:

      • sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

      Nachdem Sie nun den Speicherort der virtuellen Zuordnungsdatei in Ihrer Datei main.cf definiert haben, können Sie die Datei selbst erstellen und mit der Zuordnung von E-Mail-Konten zu Benutzerkonten auf Ihrem Linux-System beginnen. Erstellen Sie die Datei mit Ihrem bevorzugten Texteditor; in diesem Beispiel verwenden wir nano:

      • sudo nano /etc/postfix/virtual

      Listen Sie alle Adressen auf, für die Sie E-Mail akzeptieren möchten, gefolgt von einem Leerzeichen und dem Linux-Benutzer, an den die E-Mail zugestellt werden soll.

      Wenn Sie beispielsweise E-Mails bei contact@example.com und admin@example.com akzeptieren möchten und diese E-Mails an den Linux-Benutzer sammy zugestellt werden sollen, können Sie Ihre Datei wie folgt einrichten:

      /etc/postfix/virtual

      contact@example.com sammy
      admin@example.com sammy
      

      Nachdem Sie alle Adressen den entsprechenden Serverkonten zugeordnet haben, speichern und schließen Sie die Datei. Wenn Sie nano verwendet haben, drücken Sie STRG+X, Y, dann ENTER.

      Wenden Sie die Zuordnung durch die folgende Eingabe an:

      • sudo postmap /etc/postfix/virtual

      Starten Sie den Postfix-Prozess neu, um sicherzustellen, dass alle Ihre Änderungen angewendet wurden:

      • sudo systemctl restart postfix

      Wenn Sie dem Leitfaden zur Ersteinrichtung des Servers gefolgt sind, der als Voraussetzung gilt, haben Sie eine mit UFW konfigurierte Firewall. Diese Firewall blockiert standardmäßig externe Verbindungen zu Diensten auf Ihrem Server, es sei denn, diese Verbindungen werden ausdrücklich zugelassen. Sie müssen daher eine Firewall-Regel hinzufügen, um eine Ausnahme für Postfix zuzulassen.

      Sie können Verbindungen zu dem Dienst zulassen, indem Sie Folgendes eingeben:

      Damit ist Postfix konfiguriert und bereit, externe Verbindungen zu akzeptieren. Sie sind jedoch noch nicht bereit, es mit einem Mail-Client auszutesten. Bevor Sie einen Client installieren und ihn für die Interaktion mit der an Ihren Server zugestellten E-Mail verwenden können, müssen Sie einige Änderungen an der Einrichtung Ihres Ubuntu-Servers vornehmen.

      Schritt 3 — Installieren des Mail-Clients und Initialisieren der Maildir-Struktur

      Um mit der zugestellten Mail zu interagieren, führt Sie dieser Schritt durch den Prozess des Installierens des Pakets s-nail. Dies ist eine funktionsreiche Variante des BSD-xmail-Clients, die das Maildir-Format korrekt verarbeiten kann.

      Vor dem Installieren des Clients wäre es jedoch ratsam, sicherzustellen, dass Ihre Umgebungsvariable MAIL korrekt festgelegt ist. s-nail wird nach dieser Variable suchen, um herauszufinden, wo die Mail für Ihren Benutzer zu finden ist.

      Um sicherzustellen, dass die Variable MAIL unabhängig davon festgelegt ist, wie Sie auf Ihr Konto zugreifen – ob beispielsweise über ssh, su, su- oder sudo – müssen Sie die Variable in der Datei /etc/bash.bashrc festlegen und sie zu einer Datei innerhalb von /etc/bash.bashrc hinzufügen, um sicherzustellen, dass sie standardmäßig für alle Benutzer festgelegt ist.

      Um die Variable zu diesen Dateien hinzuzufügen, geben Sie Folgendes ein:

      • echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

      Um die Variable in Ihre aktuelle Sitzung einzulesen, rufen Sie die Datei /etc/profile.d/mail.sh auf:

      • source /etc/profile.d/mail.sh

      Installieren Sie dann den E-Mail-Client s-nail mit APT:

      Bevor Sie den Client ausführen, müssen Sie noch einige Einstellungen vornehmen: Öffnen Sie die Datei /etc/s-nail.rc in Ihrem Editor:

      Fügen Sie am Ende der Datei die folgenden Optionen hinzu:

      /etc/s-nail.rc

      . . .
      set emptystart
      set folder=Maildir
      set record=+sent
      

      Diese Zeilen bewirken Folgendes:

      • set emptystart: ermöglicht das Öffnen des Clients auch mit einem leeren Postfach
      • set folder=Maildir: setzt das Verzeichnis Maildir auf die interne Folder-Variable
      • set record=+sent erzeugt eine mbox-Datei sent zum Speichern gesendeter E-Mails in dem Verzeichnis, das als Variable folder festgelegt ist, in diesem Fall Maildir

      Wenn Sie fertig sind, speichern und schließen Sie die Datei. Sie sind nun bereit, die Maildir-Struktur Ihres Systems zu initialisieren.

      Eine schnelle Möglichkeit, die Maildir-Struktur in Ihrem Home-Verzeichnis zu erstellen, besteht darin, sich selbst mit dem Befehl s-nail eine E-Mail zu senden. Da die Datei sent erst zur Verfügung steht, wenn Maildir erstellt ist, sollten Sie das Schreiben an diese Datei für diese erste E-Mail deaktivieren. Führen Sie dies durch die Übergabe der Option -Snorecord aus.

      Senden Sie die E-Mail, indem Sie einen Zeichenfolge an den Befehl s-nail übergeben. Passen Sie den Befehl so an, dass Ihr Linux-Benutzer als Empfänger markiert wird:

      • echo 'init' | s-nail -s 'init' -Snorecord sammy

      Anmerkung: Sie erhalten möglicherweise die folgende Antwort:

      Output

      Can't canonicalize "/home/sammy/Maildir"

      Dies ist normal und kann nur beim Senden dieser ersten Nachricht erscheinen.

      Sie können überprüfen, ob das Verzeichnis erstellt wurde, indem Sie nach Ihrem Verzeichnis ~/Maildir suchen:

      Sie werden sehen, dass die Verzeichnisstruktur erstellt wurde und dass sich eine neue Nachrichtendatei im Verzeichnis ~/Maildir/new befindet:

      Output

      /home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

      Nachdem die Verzeichnisstruktur nun erstellt wurde, können Sie den s-nail-Client testen, indem Sie die von Ihnen gesendete init-Nachricht anzeigen und eine Nachricht an eine externe E-Mail-Adresse senden.

      Schritt 5 – Testen des Clients

      Führen Sie zum Öffnen des Clients den Befehl s-nail aus:

      In Ihrer Konsole sehen Sie einen rudimentären Posteingang, in dem die init-Nachricht wartet:

      Output

      s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Drücken Sie ENTER, um die Nachricht anzuzeigen:

      Output

      [-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

      Sie können zurück zu der Nachrichtenliste gelangen, indem Sie h eingeben und dann ENTER drücken.

      Output

      >R 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Beachten Sie, dass die Nachricht jetzt den Status R hat, was anzeigt, dass sie gelesen wurde.

      Da diese Nachricht nicht sehr nützlich ist, können Sie sie löschen, indem Sie d und dann ENTER drücken.

      Um zurück zum Terminal zu gelangen, geben Sie q und dann ENTER ein:

      Prüfen Sie abschließend, ob s-nail in der Lage ist, E-Mail-Nachrichten korrekt zu senden. Dazu können Sie den Inhalt einer Textdatei an den s-nail-Prozess übergeben, wie Sie es mit der init-Nachricht getan haben, die Sie im vorherigen Schritt gesendet haben.

      Beginnen Sie mit dem Schreiben einer Testnachricht in einem Texteditor:

      Geben Sie im Editor den Text ein, den Sie senden möchten:

      ~/test_message

      Hello,
      
      This is a test.  Please confirm receipt!
      

      Speichern und schließen Sie die Datei, nachdem Sie Ihre Nachricht geschrieben haben.

      Verwenden Sie dann den Befehl cat, um die Nachricht an den s-nail-Prozess zu übergeben. Sie können dies mit dem folgenden Beispiel tun, das diese Optionen verwendet:

      • -s: Dies definiert die Betreffzeile der E-Mail-Nachricht
      • -r: Eine optionale Änderung des Felds „Von:“ der E-Mail. Standardmäßig wird der Linux-Benutzer, unter dem Sie angemeldet sind, zum Ausfüllen dieses Feldes verwendet. Die Option -r ermöglicht es Ihnen, diese mit einer gültigen Adresse zu überschreiben, z. B. mit einer der Adressen, die Sie in der Datei /etc/postfix/virtual definiert haben. Zur Veranschaulichung verwendet der folgende Befehl contact@example.com.

      Stellen Sie außerdem sicher, dass Sie user@email.com in eine gültige E-Mail-Adresse ändern, auf die Sie Zugriff haben:

      • cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

      Navigieren Sie dann zum Posteingang für die E-Mail-Adresse, an die Sie die Nachricht geschickt haben. Dort sehen Sie Ihre Nachricht fast sofort warten.

      Anmerkung: Wenn sich die Nachricht nicht in Ihrem Posteingang befindet, wurde sie möglicherweise an Ihren Spam-Ordner geleitet.

      Sie können Ihre gesendeten Nachrichten in Ihrem s-nail-Client anzeigen. Starten Sie den interaktiven Client erneut:

      Sie können Ihre gesendeten Nachrichten in dem E-Mail-Client anzeigen, indem Sie Folgendes eingeben:

      Die Ausgabe sieht dann so aus:

      Output

      +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

      Sie können gesendete Mail mit den gleichen Befehlen verwalten, die Sie für die eingehende Mail verwenden.

      Zusammenfassung

      Sie haben Postfix nun auf Ihrem Ubuntu 20.04-Server konfiguriert. Die Verwaltung von E-Mail-Servern kann für neue Systemadministratoren eine schwierige Aufgabe sein, aber mit dieser Konfiguration sollten Sie über ausreichend MTA-E-Mail-Funktionen verfügen, um sofort loslegen zu können.



      Source link

      Einrichten und Konfigurieren eines OpenVPN-Servers unter Ubuntu 20.04


      Einführung

      Ein Virtual Private Network (VPN) ermöglicht Ihnen die Nutzung nicht vertrauenswürdiger Netzwerke, als ob Sie sich in einem privaten Netzwerk befinden würden. Es bietet Ihnen die Möglichkeit, mit Ihrem Smartphone oder Laptop sicher auf das Internet zuzugreifen, wenn Sie mit einem nicht vertrauenswürdigen Netzwerk, wie dem WLAN in einem Hotel oder Café, verbunden sind.

      In Kombination mit HTTPS-Verbindungen können Sie mit diesem Setup Ihre WLAN-Logins und Transaktionen sichern. Sie können geografische Beschränkungen und Zensuren umgehen und Ihren Ort und jeglichen unverschlüsselten HTTP-Verkehr vom nicht vertrauenswürdigen Netzwerk abschirmen.

      OpenVPN ist eine vollständige Open-Source-VPN-Lösung mit Transport Layer Security (TLS), die eine breite Palette von Konfigurationen ermöglicht. In diesem Tutorial richten Sie OpenVPN auf einem Ubuntu 20.04-Server ein und konfigurieren es dann so, dass es von einem Client-Computer aus zugänglich ist.

      Anmerkung: Wenn Sie planen, einen OpenVPN-Server auf einem DigitalOcean-Droplet einzurichten, sollten Sie sich bewusst sein, dass wir, wie viele Hosting-Anbieter, Zusatzgebühren für das Überschreiten des Bandbreitenlimits verrechnen. Bedenken Sie aus diesem Grund, wie viel Datenverkehr Ihr Server verarbeiten kann.

      Siehe diese Seite für weitere Informationen.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      Anmerkung: Obwohl es technisch möglich ist, Ihren OpenVPN-Server oder Ihren lokalen Computer als Ihre CA zu verwenden, wird dies nicht empfohlen, da es Ihr VPN für einige Sicherheitslücken öffnet. Gemäß der offiziellen OpenVPN-Dokumentation sollten Sie Ihre CA auf einem eigenständigen Computer ablegen, der für das Importieren und Signieren von Zertifikatanforderungen bestimmt ist. Aus diesem Grund wird in diesem Leitfaden davon ausgegangen, dass sich Ihre CA auf einem separaten Ubuntu-20.04-Server befindet, der auch einen Nicht-root-Benutzer mit sudo-Rechten und eine einfache Firewall aufweist.

      Zusätzlich benötigen Sie einen Client-Computer, den Sie für die Verbindung mit Ihrem OpenVPN-Server verwenden. In diesem Leitfaden nennen wir ihn OpenVPN-Client. Für die Zwecke dieses Tutorials wird empfohlen, dass Sie Ihren lokalen Computer als OpenVPN-Client verwenden.

      Wenn diese Voraussetzungen erfüllt sind, können Sie mit der Einrichtung und Konfiguration eines OpenVPN-Servers unter Ubuntu 20.04 beginnen.

      Anmerkung: Bitte beachten Sie, dass Sie später in diesem Leitfaden beim Übertragen von Dateien zwischen den Servern Schwierigkeiten haben könnten, wenn Sie beim Konfigurieren der Server die Passwort-Authentifizierung deaktivieren. Um dieses Problem zu lösen, könnten Sie auf jedem Server die Passwort-Authentifizierung neu aktivieren. Alternativ könnten Sie für jeden Server ein SSH-Schlüsselpaar erstellen, dann den öffentlichen SSH-Schlüssel des OpenVPN-Servers zur Datei authorized_keys des CA-Computers hinzufügen und umgekehrt. Anweisungen zur Ausführung dieser Lösungen finden Sie unter So richten Sie SSH-Schlüssel unter Ubuntu 20.04 ein.

      Schritt 1 — Installieren von OpenVPN und Easy-RSA

      Der erste Schritt in diesem Tutorial ist die Installation von OpenVPN und Easy-RSA. Easy-RSA ist ein Verwaltungs-Tool mit öffentlicher Schlüsselinfrastruktur („public key infrastructure“, PKI), das Sie auf dem OpenVPN-Server zum Erzeugen einer Zertifikatanforderung verwenden, die Sie dann auf dem CA-Server verifizieren und signieren.

      Aktualisieren Sie zunächst den Paketindex Ihres OpenVPN-Servers und installieren Sie OpenVPN und Easy-RSA. Beide Pakete sind in Standard-Repositorys von Ubuntu verfügbar, sodass Sie apt für die Installation verwenden können:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      Als Nächstes müssen Sie ein neues Verzeichnis auf dem OpenVPN-Server als Nicht-root-Benutzer namens ~/easy-rsa erstellen:

      Jetzt müssen Sie einen Symlink aus dem easyrsa-Skript erstellen, den das Paket in das gerade von Ihnen erstellte Verzeichnis ~/easy-rsa installiert hat:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Anmerkung: Während andere Leitfäden Sie möglicherweise anweisen, die Dateien des easy-rsa-Pakets in Ihr PKI-Verzeichnis zu kopieren, verfolgt dieses Tutorial einen Symlink-Ansatz. Infolgedessen werden alle Aktualisierungen des easy-rsa-Pakets automatisch in den Skripten Ihrer PKI wiedergegeben.

      Stellen Sie abschließend sicher, dass der Eigentümer des Verzeichnisses Ihr sudo Nicht-root-Benutzer ist und schränken Sie mit chmod den Zugriff für diesen Benutzer ein:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Sobald diese Programme installiert sind und an die richtigen Orte auf Ihrem System verschoben wurden, besteht der nächste Schritt darin, eine öffentliche Schlüsselinfrastruktur (PKI) auf dem OpenVPN-Server zu erstellen, damit Sie TLS-Zertifikate für Clients und andere Server, die sich mit Ihrem VPN verbinden werden, anfordern und verwalten können.

      Schritt 2 — Erstellen einer PKI für OpenVPN

      Bevor Sie den privaten Schlüssel und das Zertifikat Ihres OpenVPN-Servers erstellen können, müssen Sie ein lokales Verzeichnis der öffentlichen Schlüsselinfrastruktur auf Ihrem OpenVPN-Server erstellen. Sie verwenden dieses Verzeichnis, um die Zertifikatanforderungen des Servers und der Clients zu verwalten, anstatt sie direkt auf Ihrem CA-Server zu erstellen.

      Um ein PKI-Verzeichnis auf Ihrem OpenVPN-Server zu erstellen, müssen Sie eine Datei namens vars mit einigen Standardwerten füllen. Zuerst werden Sie cd in das Verzeichnis easy-rsa, dann werden Sie die Datei vars mit nano oder Ihrem bevorzugten Texteditor erstellen und bearbeiten:

      Sobald die Datei geöffnet ist, fügen Sie die folgenden beiden Zeilen ein:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Das sind die einzigen Zeilen, die Sie in dieser vars-Datei auf Ihrem OpenVPN-Server benötigen, da er nicht als Zertifizierungsstelle verwendet wird. Diese Zeilen stellen sicher, dass Ihre privaten Schlüssel und Zertifikatanforderungen so konfiguriert sind, dass sie moderne Elliptische-Kurven-Kryptografie („Elliptic Curve Cryptography“, ECC) nutzen, um Schlüssel und sichere Signaturen für Ihre Clients und OpenVPN-Server zu erzeugen.

      Wenn Sie Ihre OpenVPN- und CA-Server für die Verwendung von ECC konfigurieren, können Client und Server beim Versuch, einen gemeinsamen symmetrischen Schlüssel zu erstellen, Algorithmen für elliptische Kurven für den Austausch verwenden. Die Verwendung von ECC für einen Schlüsselaustausch ist wesentlich schneller als die Verwendung von einfachem Diffie-Hellman mit dem klassischen RSA-Algorithmus, da die Zahlen viel kleiner und die Berechnungen schneller sind.

      Hintergrund: Wenn Clients sich mit OpenVPN verbinden, verwenden sie asymmetrische Verschlüsselung (auch bekannt als öffentlicher/privater Schlüssel), um einen TLS-Handshake auszuführen. Wenn der Server und Clients jedoch verschlüsselten VPN-Verkehr übertragen, verwenden sie symmetrische Verschlüsselung, die auch als geteilte Schlüssel-Verschlüsselung bekannt ist.

      Im Vergleich zu asymmetrischer Verschlüsselung ist der Rechenaufwand bei symmetrischer Verschlüsselung viel geringer: Die verwendeten Zahlen sind wesentlich kleiner und moderne CPUs integrieren Anweisungen für die Ausführung optimierter symmetrischer Verschlüsselungsoperationen. Für den Wechsel von asymmetrischer zu symmetrischer Verschlüsselung verwenden der OpenVPN-Server und der Client den Algorithmus Elliptic Curve Diffie-Hellman (ECDH), um so schnell wie möglich einen geteilten geheimen Schlüssel zu akzeptieren.

      Sobald Sie die vars-Datei gefüllt haben, können Sie mit der Erstellung des PKI-Verzeichnisses fortfahren. Führen Sie dazu das Skript easyrsa mit der Option init-pki aus. Obwohl Sie diesen Befehl als Teil der Voraussetzungen bereits auf dem CA-Server ausgeführt haben, ist es notwendig, diesen auch hier auszuführen, da Ihr OpenVPN-Server und der CA-Server separate PKI-Verzeichnisse haben:

      Beachten Sie, dass auf Ihrem OpenVPN-Server keine Zertifizierungsstelle erstellt werden muss. Ausschließlich Ihr CA-Server ist für die Validierung und Signierung von Zertifikaten zuständig. Die PKI auf Ihrem VPN-Server dient nur als praktischer und zentralisierter Ort zum Speichern von Zertifikatanforderungen und öffentlichen Zertifikaten.

      Nachdem Sie Ihre PKI auf dem OpenVPN-Server initialisiert haben, können Sie zum nächsten Schritt, dem Erstellen einer OpenVPN-Server-Zertifikatanforderung und eines privaten Schlüssels, übergehen.

      Schritt 3 — Erstellen einer OpenVPN-Server-Zertifikatanforderung und eines privaten Schlüssels

      Nachdem Ihr OpenVPN-Server nun alle Voraussetzungen installiert hat, besteht der nächste Schritt darin, auf Ihrem OpenVPN-Server einen privaten Schlüssel und eine Zertifikatsignieranforderung („Certificate Signing Request“, CSR) zu erstellen. Danach übertragen Sie die Anforderung zum Signieren an Ihre CA, sodass das erforderliche Zertifikat erstellt wird. Sobald Sie ein signiertes Zertifikat haben, übertragen Sie es zurück zum OpenVPN-Server und installieren es für die Nutzung durch den Server.

      Navigieren Sie zunächst als Ihr Nicht-root-Benutzer zum ~/easy-rsa-Verzeichnis auf Ihrem OpenVPN-Server:

      Nun rufen Sie das easyrsa mit der Option gen-req auf, gefolgt von einem geläufigen Namen, dem Common Name (CN), für den Computer. Sie können den CN frei auswählen, aber es kann hilfreich sein, eine aussagekräftige Bezeichnung zu wählen. In diesem Tutorial ist der CN des OpenVPN-Servers server. Achten Sie darauf, auch die Option nopass einzubeziehen. Wenn das nicht geschieht, wird die Anforderungsdatei passwortgeschützt, was später zu Berechtigungsproblemen führen könnte.

      Anmerkung: Wenn Sie hier einen anderen Namen als server wählen, müssen Sie einige der nachstehenden Anweisungen anpassen. Wenn Sie beispielsweise die erzeugten Dateien in das Verzeichnis /etc/openvpn kopieren, müssen Sie die richtigen Namen einfügen. Sie müssen auch später die Datei /etc/openvpn/server.conf ändern, um auf die richtigen .crt– und .key-Dateien zu verweisen.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Dadurch wird ein privater Schlüssel für den Server und eine Zertifikatanforderungsdatei namens server.req erstellt. Kopieren Sie den Serverschlüssel in das Verzeichnis /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Nach dem Ausführen dieser Schritte haben Sie erfolgreich einen privaten Schlüssel für Ihren OpenVPN-Server erstellt. Sie haben auch eine Zertifikatsignieranforderung für den OpenVPN-Server generiert. Die CSR ist nun zur Signierung durch Ihre CA bereit. Im nächsten Abschnitt dieses Tutorials lernen Sie, wie eine CSR mit dem privaten Schlüssel Ihres CA-Servers signiert wird.

      Schritt 4 — Signieren der Zertifikatanforderung des OpenVPN-Servers

      Im vorherigen Schritt haben Sie eine Zertifikatsignieranforderung (CSR) und einen privaten Schlüssel für den OpenVPN-Server erstellt. Nun muss der CA-Server von dem server-Zertifikat erfahren und es validieren. Sobald die CA das Zertifikat validiert und an den OpenVPN-Server zurückleitet, können Clients, die Ihrer CA vertrauen, auch dem OpenVPN-Server vertrauen.

      Verwenden Sie als Nicht-root-Benutzer SCP oder eine andere Übertragungsmethode auf dem OpenVPN-Server, um die Zertifikatanforderung server.req zur Signierung an den CA-Server zu kopieren:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Wenn Sie der Voraussetzung Einrichten und Konfigurieren einer Zertifizierungsstelle (CA) unter Ubuntu 20.04 gefolgt sind, besteht der nächste Schritt darin, sich beim CA-Server als Nicht-root-Benutzer anzumelden, den Sie für die Verwaltung Ihrer CA erstellt haben. Sie verwenden cd für das Verzeichnis ~/easy-rsa, in dem Sie Ihren PK erstellt haben, und importieren dann die Zertifikatanforderung mit dem Skript easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

      . . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

      Signieren Sie die Anforderung, indem Sie das easyrsa-Skript mit der Option sign-req ausführen, gefolgt vom Anforderungstyp und dem geläufigen Namen. Der Anforderungstyp kann entweder client oder server sein. Da wir mit der Zertifikatanforderung des OpenVPN-Servers arbeiten, muss der Anforderungstyp server verwendet werden:

      • ./easyrsa sign-req server server

      In der Ausgabe werden Sie zur Überprüfung aufgefordert, ob die Anfrage von einer vertrauenswürdigen Quelle stammt. Geben Sie yes ein und drücken Sie ENTER zur Bestätigung:

      Output

      You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Beachten Sie, dass Sie an dieser Stelle zur Eingabe Ihres Passworts aufgefordert werden, falls Sie Ihren privaten CA-Schlüssel verschlüsselt haben.

      Nach Abschluss dieser Schritte haben Sie die Zertifikatanforderung des OpenVPN-Servers mit dem privaten Schlüssel des CA-Servers signiert. Die resultierende Datei server.crt enthält den öffentlichen Verschlüsselungs-Schlüssel des OpenVPN-Servers sowie eine Signatur des CA-Servers. Der Sinn der Signatur besteht darin, jedem, der dem CA-Server vertraut, mitzuteilen, dass er auch dem OpenVPN-Server vertrauen kann, wenn er sich mit ihm verbindet.

      Um die Konfiguration der Zertifikate abzuschließen, kopieren Sie die Dateien server.crt und ca.crt vom CA-Server auf den OpenVPN-Server:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Zurück auf Ihrem OpenVPN-Server kopieren Sie die Dateien nun von /tmp nach /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Nun ist Ihr OpenVPN-Server fast bereit, Verbindungen zu akzeptieren. Als Nächstes führen Sie einige zusätzliche Schritte aus, um die Sicherheit des Servers zu erhöhen.

      Schritt 5 — Konfigurieren von kryptografischem OpenVPN-Material

      Für eine Extraportion Sicherheit fügen wir einen zusätzlichen gemeinsamen geheimen Schlüssel hinzu, den der Server und alle Clients mit der Anweisung tls-crypt des OpenVPN verwenden. Diese Option wird genutzt, um das TLS-Zertifikat zu verdecken, das bei der Erstverbindung eines Servers und Clients verwendet wird. Sie wird auch vom OpenVPN-Server dazu genutzt, schnelle Kontrollen bei eingehenden Paketen durchzuführen: Wenn ein Paket mit dem gemeinsamen Schlüssel signiert ist, wird es vom Server verarbeitet. Wenn es nicht signiert ist, weiß der Server, dass es aus einer nicht vertrauenswürdigen Quelle stammt und kann es verwerfen, ohne es zusätzlich entschlüsseln zu müssen.

      Diese Option hilft sicherzustellen, dass Ihr OpenVPN-Server in der Lage ist, mit nicht authentifiziertem Datenverkehr, Port-Scans und Denial-of-Service-Angriffen umzugehen, die Serverressourcen binden können. Auch die Identifizierung des Netzwerkverkehrs mit OpenVPN wird hierdurch erschwert.

      Um den gemeinsamen tls-crypt-Schlüssel zu generieren, führen Sie Folgendes auf dem OpenVPN-Server im Verzeichnis ~/easy-rsa aus:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      Das Ergebnis ist eine Datei namens ta.key. Kopieren Sie diese in das Verzeichnis /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

      Nachdem diese Dateien auf dem OpenVPN-Server vorhanden sind, können Sie Client-Zertifikate und Schlüsseldateien für Ihre Benutzer erstellen, die Sie für die Verbindung mit dem VPN verwenden.

      Schritt 6 — Generieren eines Client-Zertifikats und eines Schlüsselpaars

      Sie können zwar einen privaten Schlüssel und eine Zertifikatanforderung auf Ihrem Client-Computer erstellen und dann zwecks Signierung zur CA senden, aber dieser Leitfaden beschreibt einen Prozess zum Generieren der Zertifikatanforderung auf dem Server. Der Vorteil besteht darin, dass wir ein Skript erstellen können, das automatisch Client-Konfigurationsdateien generiert, die alle benötigten Schlüssel und Zertifikate enthalten. Damit können Sie vermeiden, dass Schlüssel, Zertifikate und Konfigurationsdateien an Clients übertragen werden müssen, und der Prozess des Verbindungsaufbaus zum VPN wird gestrafft.

      In diesem Leitfaden generieren wir einen einzelnen Client-Schlüssel und ein Zertifikatpaar. Wenn Sie mehr als einen Client haben, können Sie diesen Prozess für jeden Client wiederholen. Bitte beachten Sie allerdings, dass Sie für jeden Client einen eindeutigen Namenswert an das Skript übergeben müssen. In diesem Tutorial wird das erste Zertifikat/Schlüsselpaar als client1 bezeichnet.

      Beginnen Sie, indem Sie eine Verzeichnisstruktur in Ihrem Stammverzeichnis erstellen, um das Client-Zertifikat und die Schlüsseldateien zu speichern:

      • mkdir -p ~/client-configs/keys

      Da Sie das Zertifikat/die Schlüsselpaare Ihrer Clients und die Konfigurationsdateien in diesem Verzeichnis speichern, sollten Sie als Sicherheitsmaßnahme die Berechtigungen jetzt sperren:

      • chmod -R 700 ~/client-configs

      Navigieren Sie als Nächstes zurück zum EasyRSA-Verzeichnis und führen Sie das easyrsa-Skript mit den Optionen gen-req und nopass zusammen mit dem geläufigen Namen für den Client aus:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Drücken Sie ENTER, um den geläufigen Namen zu bestätigen. Kopieren Sie dann die Datei client1.key in das zuvor erstellte Verzeichnis ~/client-configs/keys/:

      • cp pki/private/client1.key ~/client-configs/keys/

      Als Nächstes übertragen Sie die Datei client1.req mit einer sicheren Methode auf Ihren CA-Server:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Melden Sie sich nun bei Ihrem CA-Server an. Navigieren Sie dann zum EasyRSA-Verzeichnis und importieren Sie die Zertifikatanforderung:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Signieren Sie dann die Anforderung, wie Sie dies im vorherigen Schritt für den Server getan haben. Dieses Mal muss jedoch der Anforderungstyp client angegeben werden:

      • ./easyrsa sign-req client client1

      Geben Sie bei der Eingabeaufforderung yes ein, um zu bestätigen, dass Sie beabsichtigen, die Zertifikatanforderung zu signieren, und dass sie aus einer vertrauenswürdigen Quelle stammt:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Wenn Sie Ihren CA-Schlüssel verschlüsselt haben, werden Sie erneut zur Eingabe Ihres Passworts aufgefordert.

      Damit wird ein Client-Zertifikat namens client1.crt erstellt. Übertragen Sie diese Datei wieder auf den Server:

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Zurück auf Ihrem OpenVPN-Server kopieren Sie das Client-Zertifikat in das Verzeichnis ~/client-configs/keys/:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Kopieren Sie dann auch die Dateien ca.crt und ta.key in das Verzeichnis ~/client-configs/keys/ und legen Sie die entsprechenden Berechtigungen für Ihren sudo-Benutzer fest:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Damit wurden alle Zertifikate des Servers und Clients sowie alle Schlüssel generiert und in den entsprechenden Verzeichnissen auf Ihrem OpenVPN-Server gespeichert. Es gibt noch einige Aktionen, die mit diesen Dateien ausgeführt werden müssen, aber diese werden in einem späteren Schritt beschrieben. Vorerst können Sie mit der Konfiguration des OpenVPN fortfahren.

      Schritt 7 — Konfigurieren von OpenVPN

      Wie viele andere weit verbreitete Open-Source-Tools bietet auch OpenVPN eine Vielzahl von Konfigurationsoptionen an, mit denen Sie Ihren Server Ihren spezifischen Bedürfnissen anpassen können. In diesem Abschnitt erhalten Sie Anweisungen zum Einrichten eines OpenVPN auf der Grundlage einer der Beispielkonfigurationsdateien, die in der Dokumentation dieser Software enthalten sind.

      Kopieren Sie zunächst die Beispieldatei server.conf als Ausgangspunkt für Ihre eigene Konfigurationsdatei:

      • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
      • sudo gunzip /etc/openvpn/server/server.conf.gz

      Öffnen Sie die neue Datei zum Bearbeiten mit dem Texteditor Ihrer Wahl. Wir verwenden in unserem Beispiel nano:

      • sudo nano /etc/openvpn/server/server.conf

      Wir müssen einige Zeilen in dieser Datei ändern. Finden Sie zunächst den HMAC-Abschnitt der Konfiguration, indem Sie nach der Anweisung tls-auth suchen. Diese Zeile sollte unkommentiert sein. Kommentieren Sie sie aus, indem Sie am Anfang der Zeile ein ; einfügen. Fügen Sie dann hinter diese eine neue Zeile hinzu, die nur den Wert tls-crypt ta.key enthält:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Als Nächstes lokalisieren Sie den Abschnitt über kryptografische Chiffren, indem Sie nach den cipher-Zeilen suchen. Der Standardwert ist auf AES-256-CBC eingestellt. Die Chiffrierung mit AES-256-GCM bietet jedoch ein höheres Niveau an Verschlüsselung und Leistung und wird von modernen OpenVPN-Clients gut unterstützt. Wir kommentieren den Standardwert aus, indem wir am Anfang dieser Zeile ein ;-Zeichen einfügen. Nach dieser fügen wir eine weitere Zeile hinzu, die den aktualisierten Wert von AES-256-GCM enthält:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Fügen Sie direkt hinter dieser Zeile eine auth-Anweisung hinzu, um den Digestalgorithmus der HMAC-Nachricht auszuwählen. Dafür ist SHA256 eine gute Wahl:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Suchen Sie als Nächstes nach der Zeile mit der Anweisung dh, die Diffie-Hellman-Parameter definiert. Da wir alle Zertifikate so konfiguriert haben, dass sie die Elliptische-Kurven-Kryptografie verwenden, ist eine Diffie-Hellman-Seed-Datei nicht erforderlich. Kommentieren Sie die bestehende Zeile aus, die wie dh dh2048.pem oder dh dh.pem aussieht. Der Dateiname für den Diffie-Hellman-Schlüssel kann anders sein als die in der Beispielkonfigurationsdatei des Servers. Fügen Sie dann nach dieser eine Zeile mit dem Inhalt dh none hinzu:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Als Nächstes möchten wir, dass OpenVPN nach seinem Start ohne Berechtigungen läuft. Daher müssen wir ihm sagen, dass es mit einem Benutzer nobody** und einer Gruppe nobody** läuft. Um dies zu aktivieren, finden Sie die Zeilen mit user nobody und group nogroup und heben Sie die Auskommentierung auf, indem Sie das ;-Zeichen am Anfang jeder Zeile entfernen:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Optional) DNS-Änderungen mithilfe von Push übertragen, um den gesamten Verkehr durch das VPN umzuleiten

      Mit den obigen Einstellungen wird die VPN-Verbindung zwischen Ihrem Client und Server erstellt, die Verbindungen werden allerdings nicht zur Nutzung des Tunnels gezwungen. Wenn Sie das VPN verwenden möchten, um Ihren gesamten Client-Verkehr über das VPN zu leiten, sollten Sie wahrscheinlich einige zusätzliche Einstellungen mithilfe von Push an die Client-Computer übertragen.

      Finden Sie hierzu die Zeile mit push "redirect-gateway def1 bypass-dhcp" und kommentieren Sie sie aus. Dadurch wird Ihr Client angewiesen, seinen gesamten Verkehr über Ihren OpenVPN-Server umzuleiten. Beachten Sie, dass die Aktivierung dieser Funktionalität Verbindungsprobleme mit anderen Netzwerkdiensten wie SSH verursachen kann:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Direkt unter dieser Zeile finden Sie den Abschnitt dhcp-option. Entfernen Sie erneut das ; zu Beginn der beiden Zeilen, um sie auszukommentieren:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Diese Zeilen weisen Ihren Client an, die kostenlosen OpenDNS-Resolver unter den aufgelisteten IP-Adressen zu verwenden. Wenn Sie andere DNS-Resolver bevorzugen, können Sie diese an Stelle der hervorgehobenen IPs einsetzen.

      Dadurch werden die Clients bei der Neukonfigurierung ihrer DNS-Einstellungen unterstützt, damit der VPN-Tunnel als Standard-Gateway verwendet werden kann.

      (Optional) Anpassung des Ports und Protokolls

      Standardmäßig verwendet der OpenVPN-Server Port 1194 und das UDP-Protokoll, um Client-Verbindungen zu akzeptieren. Wenn Sie aufgrund von restriktiven Netzwerkumgebungen, in denen sich Ihre Clients eventuell befinden, einen anderen Port verwenden müssen, können Sie die Option port ändern. Wenn Sie auf Ihrem OpenVPN-Server keine Web-Inhalte hosten, ist Port 443 eine gängige Wahl, da er üblicherweise von den Firewall-Regeln zugelassen wird.

      Um OpenVPN so zu ändern, dass es auf Port 443 lauscht, öffnen Sie die Datei server.conf und suchen Sie die Zeile, die wie folgt aussieht:

      /etc/openvpn/server/server.conf

      port 1194
      

      Bearbeiten Sie sie entsprechend, damit der Port 443 ist:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Häufig ist das Protokoll auch auf diesen Port beschränkt. Finden Sie in diesem Fall die proto-Zeile unterhalb der port-Zeile und ändern Sie das Protokoll von udp zu tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Wenn Sie das Protokoll tatsächlich in TCP ändern, müssen Sie den Wert der Anweisung explicit-exit-notify von 1 auf 0 ändern, da diese Anweisung nur von UDP verwendet wird. Wenn dies während der Verwendung von TCP nicht befolgt wird, treten beim Starten des OpenVPN-Dienstes Fehler auf.

      Finden Sie die Zeile explicit-exit-notify am Ende der Datei und ändern Sie den Wert auf 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Wenn Sie keinen anderen Port und kein anderes Protokoll verwenden müssen, ist es am besten, diese Einstellungen in ihren Standardeinstellungen zu belassen.

      (Optional) Auf nicht standardmäßige Anmeldedaten verweisen

      Wenn Sie zuvor beim Befehl ./easyrsa gen-req server einen anderen Namen gewählt haben, ändern Sie die Zeilen cert und key in der Konfigurationsdatei server.conf, damit sie auf die entsprechenden Dateien .crt und .key verweisen. Wenn Sie den Standardnamen, server, verwendet haben, ist dies bereits korrekt festgelegt:

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

      Sie haben nun die Konfiguration der allgemeinen Einstellungen Ihres OpenVPN abgeschlossen. Im nächsten Schritt passen wir die Netzwerkoptionen des Servers an.

      Schritt 8 — Anpassen der Netzwerkkonfiguration des OpenVPN-Servers

      Es gibt einige Aspekte der Netzwerkkonfiguration des Servers, die optimiert werden müssen, damit OpenVPN den Verkehr korrekt durch das VPN leiten kann. Als Erstes muss die IP-Weiterleitung angepasst werden, eine Methode zur Bestimmung, wohin der IP-Verkehr geleitet werden sollte. Diese Änderung ist für die von Ihrem Server bereitgestellte VPN-Funktionalität von entscheidender Bedeutung.

      Um die standardmäßige IP-Weiterleitungseinstellung Ihres OpenVPN-Servers anzupassen, öffnen Sie die Datei /etc/sysctl.conf mit nano oder Ihrem bevorzugten Editor:

      • sudo nano /etc/sysctl.conf

      Fügen Sie dann am Ende der Datei folgende Zeile hinzu:

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

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

      Um die Datei zu lesen und die Werte für die aktuelle Sitzung zu laden, geben Sie Folgendes ein:

      Output

      net.ipv4.ip_forward = 1

      Jetzt kann Ihr OpenVPN-Server eingehenden Datenverkehr von einem Ethernet-Gerät auf ein anderes weiterleiten. Diese Einstellung stellt sicher, dass der Server den Datenverkehr von Clients, die sich über die virtuelle VPN-Schnittstelle verbinden, über seine anderen physischen Ethernet-Geräte hinausleiten kann. Diese Konfiguration leitet den gesamten Webverkehr von Ihrem Client über die IP-Adresse Ihres Servers und die öffentliche IP-Adresse Ihres Clients wird effektiv verborgen.

      Im nächsten Schritt müssen Sie einige Firewall-Regeln konfigurieren, um sicherzustellen, dass der Verkehr zu und von Ihrem OpenVPN-Server korrekt fließt.

      Schritt 9 — Konfigurieren der Firewall

      Bis hierher haben Sie OpenVPN auf Ihrem Server installiert, konfiguriert und die Schlüssel und Zertifikate generiert, die für Ihren Client für den Zugriff auf das VPN benötigt werden. Sie haben OpenVPN jedoch noch keine Anweisungen gegeben, wohin eingehender Webverkehr von Clients gesendet werden soll. Sie können festlegen, wie der Server mit dem Client-Verkehr umgehen soll, indem Sie einige Firewall-Regeln und Leitungskonfigurationen festlegen.

      Wenn Sie den Voraussetzungen am Anfang dieses Tutorials gefolgt sind, sollte ufw bereits installiert sein und auf Ihrem Server laufen. Um OpenVPN über die Firewall zuzulassen, müssen Sie Tarnung aktivieren, ein iptables-Konzept, das Network Address Translation (NAT) bei Bedarf bereitstellt, um Client-Verbindungen korrekt weiterzuleiten.

      Bevor die Firewall-Konfigurationsdatei geöffnet wird, um Masquerading-Regeln hinzuzufügen, müssen Sie zunächst die öffentliche Netzwerkschnittstelle Ihres Computers finden. Dazu geben Sie Folgendes ein:

      Ihre öffentliche Schnittstelle ist die in der Ausgabe dieses Befehls enthaltene Zeichenfolge, die dem Wort „dev“ folgt. Dieses Ergebnis zeigt beispielsweise die im Folgenden hervorgehobene Schnittstelle eth0 an:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Wenn Sie die mit Ihrer Standardroute verknüpfte Schnittstelle gefunden haben, öffnen Sie die Datei /etc/ufw/before.rules, um die entsprechende Konfiguration hinzuzufügen:

      • sudo nano /etc/ufw/before.rules

      UFW-Regeln werden typischerweise mit dem Befehl ufw hinzugefügt. Regeln, die jedoch in der Datei before.rules aufgeführt sind, werden gelesen und implementiert, bevor die herkömmlichen UFW-Regeln geladen werden. Fügen Sie im oberen Teil der Datei die nachstehend hervorgehobenen Zeilen hinzu. Damit wird die Standardrichtlinie für die POSTROUTING-Kette in der Tabelle nat festgelegt und für jeden vom VPN eingehenden Verkehr ein Masquerading ausgeführt. Denken Sie daran, eth0 in der nachstehenden Zeile -A POSTROUTING durch die im obigen Befehl angegebene Schnittstelle zu ersetzen:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

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

      Als Nächstes müssen Sie UFW mitteilen, weitergeleitete Pakete standardmäßig zuzulassen. Dazu öffnen Sie die Datei /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Lokalisieren Sie dort die Anweisung DEFAULT_FORWARD_POLICY und ändern Sie den Wert von DROP auf ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

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

      Passen Sie dann die Firewall an, um den Verkehr zu OpenVPN zuzulassen. Wenn Sie den Port und das Protokoll in der Datei /etc/openvpn/server.conf nicht geändert haben, müssen Sie den UDP-Verkehr auf Port 1194 öffnen. Wenn Sie den Port und/oder das Protokoll modifiziert haben, ersetzen Sie die hier ausgewählten Werte.

      Sollten Sie vergessen haben, während der Ausführung des Tutorials in den Voraussetzungen den SSH-Port hinzuzufügen, fügen Sie ihn hier hinzu:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Deaktivieren und reaktivieren Sie nach Hinzufügen dieser Regeln die UFW, um sie neu zu starten. Laden Sie die Änderungen von allen von Ihnen modifizierten Dateien:

      • sudo ufw disable
      • sudo ufw enable

      Ihr Server ist jetzt so konfiguriert, dass der OpenVPN-Verkehr korrekt abgewickelt werden kann. Wenn die Firewall-Regeln eingerichtet sind, können wir den OpenVPN-Dienst auf dem Server starten.

      Schritt 10 — Starten des OpenVPN

      OpenVPN läuft als Systemd-Dienst, sodass wir systemctl verwenden können, um es zu verwalten. Wir konfigurieren OpenVPN, um beim Booten zu starten, sodass Sie sich jederzeit mit Ihrem VPN verbinden können, solange Ihr Server läuft. Aktivieren Sie dazu den OpenVPN-Dienst, indem Sie ihn zu systemctl hinzufügen:

      • sudo systemctl -f enable openvpn-server@server.service

      Starten Sie dann den OpenVPN-Dienst:

      • sudo systemctl start openvpn-server@server.service

      Überprüfen Sie nochmals mit dem folgenden Befehl, ob der OpenVPN-Dienst aktiv ist. Sie sollten in der Ausgabe active (running) sehen:

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Wir haben nun die serverseitige Konfiguration für OpenVPN abgeschlossen. Als Nächstes konfigurieren Sie Ihren Client-Computer und verbinden sich mit dem OpenVPN-Server.

      Schritt 11 — Erstellen der Client-Konfigurationsinfrastruktur

      Das Erstellen von Konfigurationsdateien für OpenVPN-Clients kann etwas komplex sein, da jeder Client seine eigene Konfiguration haben muss, die sich mit den in der Konfigurationsdatei des Servers aufgeführten Einstellungen decken muss. Anstatt eine einzige Konfigurationsdatei zu erstellen, die nur auf einem Client verwendet werden kann, wird in diesem Schritt ein Prozess zur Erstellung einer Client-Konfigurationsinfrastruktur beschrieben, mit der Sie dynamisch Konfigurationsdateien generieren können. Sie erstellen zunächst eine „Basis“-Konfigurationsdatei und dann ein Skript, mit dem Sie je nach Bedarf eindeutige Client-Konfigurationsdateien, Zertifikate und Schlüssel generieren können.

      Beginnen Sie, indem Sie ein neues Verzeichnis anlegen, in dem Sie Client-Konfigurationsdateien in dem zuvor erstellten Verzeichnis client-configs speichern:

      • mkdir -p ~/client-configs/files

      Kopieren Sie dann ein Client-Konfigurationsbeispiel als Basiskonfiguration in das Verzeichnis client-configs:

      • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

      Öffnen Sie diese neue Datei mit nano oder Ihrem bevorzugten Texteditor:

      • nano ~/client-configs/base.conf

      Lokalisieren Sie die Anweisung remote. Damit wird der Client auf Ihre OpenVPN-Serveradresse verwiesen – die öffentliche IP-Adresse Ihres OpenVPN-Servers. Wenn Sie beschlossen haben, den Port zu ändern, auf dem der OpenVPN-Server lauscht, müssen Sie außerdem 1194 auf den von Ihnen ausgewählten Port ändern:

      ~/client-configs/base.conf

      . . .
      # The hostname/IP and port of the server.
      # You can have multiple remote entries
      # to load balance between the servers.
      remote your_server_ip 1194
      . . .
      

      Vergewissern Sie sich, dass das Protokoll mit dem Wert übereinstimmt, den Sie in der Serverkonfiguration verwenden:

      ~/client-configs/base.conf

      proto udp
      

      Als Nächstes kommentieren Sie die Anweisungen user und group aus, indem Sie das ;-Zeichen am Anfang jeder Zeile entfernen:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Lokalisieren Sie die Anweisungen, die ca, cert und key festlegen. Kommentieren Sie diese Anweisungen aus, da Sie die Zertifikate und Schlüssel in der Datei selbst hinzufügen werden:

      ~/client-configs/base.conf

      # SSL/TLS parms.
      # See the server config file for more
      # description. It's best to use
      # a separate .crt/.key file pair
      # for each client. A single ca
      # file can be used for all clients.
      ;ca ca.crt
      ;cert client.crt
      ;key client.key
      

      Kommentieren Sie in ähnlicher Weise die Anweisung tls-auth aus, da Sie ta.key direkt in die Client-Konfigurationsdatei einfügen werden (und der Server zur Nutzung von tls-crypt eingerichtet ist):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Verwenden Sie dieselben Einstellungen für cipher und auth, die Sie in der Datei /etc/openvpn/server/server.conf festgelegt haben:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Fügen Sie dann die Anweisung key-direction an einer beliebigen Stelle in der Datei hinzu. Sie müssen diesen Wert auf „1“ festlegen, damit das VPN auf dem Client-Computer korrekt funktioniert:

      ~/client-configs/base.conf

      key-direction 1
      

      Fügen Sie abschließend ein paar auskommentierte Zeilen hinzu, um verschiedene Methoden zu bearbeiten, die Linux-basierte VPN-Clients zur DNS-Auflösung verwenden. Sie fügen zwei ähnliche, aber separate Sets auskommentierte Zeilen hinzu. Das erste Set ist für Clients, die für die Verwaltung von DNS nicht systemd-resolved verwenden. Diese Clients verlassen sich auf das Dienstprogramm resolvconf, um DNS-Informationen für Linux-Clients zu aktualisieren.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Fügen Sie jetzt ein weiteres Zeilenset für Clients hinzu, die für DNS-Auflösung systemd-resolved verwenden:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

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

      Später in Schritt 13 – Installieren der Client-Konfiguration dieses Tutorials lernen Sie, wie DNS-Auflösung bei Linux-Clients funktioniert und welcher Abschnitt auskommentiert werden muss.

      Als Nächstes erstellen wir ein Skript, das Ihre Basiskonfiguration mit dem entsprechenden Zertifikat, Schlüssel und den Verschlüsselungsdateien kompiliert und platzieren die generierte Konfiguration dann in das Verzeichnis ~/client-configs/files. Öffnen Sie eine neue Datei namens make_config.sh im Verzeichnis ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Fügen Sie der Datei den folgenden Inhalt hinzu:

      ~/client-configs/make_config.sh

      #!/bin/bash
      
      # First argument: Client identifier
      
      KEY_DIR=~/client-configs/keys
      OUTPUT_DIR=~/client-configs/files
      BASE_CONFIG=~/client-configs/base.conf
      
      cat ${BASE_CONFIG} 
          <(echo -e '<ca>') 
          ${KEY_DIR}/ca.crt 
          <(echo -e '</ca>n<cert>') 
          ${KEY_DIR}/${1}.crt 
          <(echo -e '</cert>n<key>') 
          ${KEY_DIR}/${1}.key 
          <(echo -e '</key>n<tls-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

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

      Bevor Sie fortfahren, markieren Sie diese Datei als ausführbar, indem Sie Folgendes eingeben:

      • chmod 700 ~/client-configs/make_config.sh

      Dieses Skript erstellt eine Kopie der von Ihnen angelegten Datei base.conf, sammelt alle für Ihren Client erstellten Zertifikate und Schlüsseldateien, extrahiert ihre Inhalte, fügt sie der Kopie der Basiskonfigurationsdatei an und exportiert alle Inhalte in eine neue Client-Konfigurationsdatei. Das bedeutet, dass alle erforderlichen Informationen an einem Ort gespeichert werden und die Konfiguration des Clients, die Zertifikate und Schlüsseldateien nicht getrennt verwaltet werden müssen. Der Vorteil besteht darin, dass Sie, falls Sie einmal einen Client hinzufügen müssen, einfach dieses Skript ausführen können, um rasch die neue Konfigurationsdatei zu erstellen. Dabei wird sichergestellt, dass alle wichtigen Informationen an einem einzigen, einfach zugänglichen Ort gespeichert werden.

      Bitte beachten Sie, dass bei jedem Hinzufügen eines neuen Clients neue Schlüssel und Zertifikate für ihn generiert werden müssen, bevor Sie dieses Skript ausführen und die entsprechende Konfigurationsdatei generieren können. Im nächsten Schritt können Sie die Verwendung dieses Skripts üben.

      Schritt 12 — Generieren von Client-Konfigurationen

      Durch Befolgung der Anweisungen im Leitfaden haben Sie in Schritt 6 ein Client-Zertifikat und einen Schlüssel namens client1.crt bzw. client1.key erstellt. Sie können eine Konfigurationsdatei für diese Anmeldedaten generieren, indem Sie in das Verzeichnis ~/client-configs wechseln und das am Ende des vorherigen Schrittes erstellte Skript ausführen:

      • cd ~/client-configs
      • ./make_config.sh client1

      Dadurch wird eine Datei namens client1.ovpn in Ihrem Verzeichnis ~/client-configs/files erstellt:

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Sie müssen diese Datei auf das Gerät übertragen, das Sie als Client verwenden wollen. Das könnte beispielsweise Ihr lokaler Computer oder ein mobiles Gerät sein.

      Die genauen Anwendungen, die zur Durchführung dieser Übertragung eingesetzt werden, hängen zwar vom Betriebssystem Ihres Geräts und Ihren persönlichen Präferenzen ab, aber die Verwendung von SFTP (SSH File Transfer Protocol) oder SCP (Secure Copy) im Backend ist ein zuverlässiges und sicheres Verfahren. Damit werden die VPN-Authentifizierungsdateien Ihres Clients über eine verschlüsselte Verbindung übertragen.

      Hier sehen Sie das Beispiel eines SFTP-Befehls, den Sie von Ihrem lokalen Computer (macOS oder Linux) ausführen können. Damit wird die Datei client1.ovpn kopiert, die wir im letzten Schritt in Ihrem Stammverzeichnis erstellt haben:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      Hier sind einige Tools und Tutorials für die sichere Übertragung von Dateien vom OpenVPN-Server auf einen lokalen Computer:

      Schritt 13 — Installieren der Client-Konfiguration

      Dieser Abschnitt behandelt die Installation eines Client-VPN-Profils auf Windows, macOS, Linux, iOS und Android. Keine dieser Client-Anleitungen bauen aufeinander auf. Daher können Sie je nach verwendetem Gerät direkt zur entsprechenden Anleitung navigieren.

      Die OpenVPN-Verbindung hat den gleichen Namen wie die von Ihnen benannte Datei .ovpn. In diesem Tutorial bedeutet dies, dass die Verbindung den Namen client1.ovpn erhält, was sich mit der von Ihnen erzeugten ersten Client-Datei deckt.

      Windows

      Installation

      Laden Sie die OpenVPN-Client-Anwendung für Windows von der OpenVPN-Downloadseite herunter. Wählen Sie das entsprechende Installationsprogramm für Ihre Windows-Version aus.

      Anmerkung: OpenVPN benötigt für die Installation Administratorrechte.

      Nach der Installation von OpenVPN kopieren Sie die Datei .ovpn auf:

      C:Program FilesOpenVPNconfig
      

      Beim Starten von OpenVPN lokalisiert es automatisch das Profil und stellt es zur Verfügung.

      Sie müssen OpenVPN bei jedem Einsatz, auch durch Administratorkonten, als Administrator ausführen. Wenn Sie nicht bei jeder Verwendung des VPN mit der rechten Maustaste klicken und Als Administrator ausführen auswählen möchten, müssen Sie von einem Administratorkonto aus eine Voreinstellung vornehmen. Das bedeutet auch, dass Standardbenutzer zur Verwendung von OpenVPN das Passwort des Administrators eingeben müssen. Andererseits können Standardbenutzer nur dann eine korrekte Verbindung mit dem Server herstellen, wenn die OpenVPN-Anwendung auf dem Client Administrationsrechte hat. Somit sind die höheren Berechtigungen notwendig.

      Um die OpenVPN-Anwendung so einzustellen, dass sie immer als Administrator ausgeführt wird, klicken Sie mit der rechten Maustaste auf das entsprechende Verknüpfungssymbol und gehen zu Eigenschaften. Klicken Sie im unteren Teil der Registerkarte Kompatibilität auf die Schaltfläche Einstellungen für alle Benutzer ändern. Aktivieren Sie im neuen Fenster Programm als Administrator ausführen.

      Verbindungsherstellung

      Jedes Mal, wenn Sie die OpenVPN-GUI starten, fragt Windows Sie, ob das Programm Änderungen an Ihrem Computer vornehmen darf. Klicken Sie auf Ja. Durch das Starten der OpenVPN-Client-Anwendung wird nur das Applet in die Taskleiste eingefügt, damit Sie je nach Bedarf die Verbindung mit dem VPN herstellen und trennen können; es stellt die VPN-Verbindung nicht tatsächlich her.

      Sobald OpenVPN gestartet wird, stellen Sie eine Verbindung her, indem Sie zum Taskleisten-Applet navigieren und mit der rechten Maustaste auf das OpenVPN-Applet-Symbol klicken. Dadurch wird das Kontextmenü geöffnet. Wählen Sie client1 oben im Menü (hierbei handelt es sich um Ihr client1.ovpn-Profil) und anschließend Verbinden.

      Ein Statusfenster wird geöffnet und zeigt die Protokollausgabe an, während die Verbindung hergestellt wird. Sobald der Client verbunden ist, erscheint eine Meldung.

      Trennen Sie die Verbindung mit dem VPN in der gleichen Weise: Gehen Sie zum Taskleisten-Applet, klicken Sie mit der rechten Maustaste auf das OpenVPN-Applet-Symbol, wählen Sie das Client-Profil und klicken Sie auf Verbindung trennen.

      macOS

      Installation

      Tunnelblick ist ein kostenloser Open-Source-OpenVPN-Client für macOS. Sie können das neueste Datenträgerabbild von der Tunnelblick-Downloadseite herunterladen. Doppelklicken Sie auf die heruntergeladene Datei .dmg und befolgen Sie die Aufforderungen zur Installation.

      Am Ende des Installationsprozesses fragt Tunnelblick Sie, ob Sie Konfigurationsdateien haben. Antworten Sie Ich habe Konfigurationsdateien und lassen Sie Tunnelblick den Vorgang beenden. Öffnen Sie ein Finder-Fenster und doppelklicken Sie auf client1.ovpn. Tunnelblick installiert das Client-Profil. Administratorrechte sind erforderlich.

      Verbindungsherstellung

      Starten Sie Tunnelblick, indem Sie auf das Tunnelblick-Symbol im Ordner Anwendungen doppelklicken. Nach dem Starten von Tunnelblick befindet sich oben rechts am Bildschirm in der Menüleiste ein Tunnelblick-Symbol zur Steuerung von Verbindungen. Klicken Sie auf das Symbol und dann auf den Menüpunkt Connect client1, um die VPN-Verbindung herzustellen.

      Linux

      Installation

      Wenn Sie Linux verwenden, gibt es eine Vielzahl von Tools, die Sie je nach Distribution verwenden können. Ihre Desktop-Umgebung oder Ihr Fenstermanager enthält möglicherweise auch Verbindungs-Utilitys.

      Die universellste Art der Verbindungsherstellung besteht jedoch darin, einfach die OpenVPN-Software zu verwenden.

      Unter Ubuntu oder Debian können Sie sie wie auf dem Server installieren, indem Sie Folgendes eingeben:

      • sudo apt update
      • sudo apt install openvpn

      Unter CentOS können Sie die EPEL-Repositorys aktivieren und dann installieren, indem Sie Folgendes eingeben:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Konfigurieren von Clients, die systemd-resolved verwenden

      Ermitteln Sie zuerst, ob Ihr System systemd-resolved verwendet, um DNS-Auflösung zu bearbeiten, indem Sie die Datei /etc/resolv.conf überprüfen:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Wenn Ihr System so konfiguriert ist, dass für DNS-Auflösung systemd-resolved verwendet wird, lautet die IP-Adresse nach der Option nameserver 127.0.0.53. Es sollte in der Datei auch Kommentare geben (wie der angezeigten Ausgabe), die erklären, wie systemd-resolved die Datei verwaltet. Wenn Sie eine andere IP-Adresse haben als 127.0.0.53, dann nutzt Ihr System systemd-resolved wahrscheinlich nicht und Sie können mit dem nächsten Abschnitt zum Konfigurieren von Linux-Clients fortfahren, die stattdessen ein Skript update-resolv-conf haben.

      Um diese Clients zu unterstützen, installieren Sie zuerst das Paket openvpn-systemd-resolved. Es bietet Skripts, die systemd-resolved dazu zwingen, den VPN-Server für die DNS-Auflösung zu verwenden.

      • sudo apt install openvpn-systemd-resolved

      Nachdem das Paket installiert ist, konfigurieren Sie den Client so, dass er es verwendet und alle DNS-Abfragen über die VPN-Schnittstelle sendet. Öffnen Sie die VPN-Datei des Clients:

      Heben Sie jetzt die Auskommentarierung der folgenden Zeilen, die Sie zuvor hinzugefügt haben, auf:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Konfigurieren von Clients, die update-resolv-conf verwenden

      Wenn Ihr System nicht systemd-resolved verwendet, um DNS zu verwalten, überprüfen Sie, ob Ihre Distribution ein Skript /etc/openvpn/update-resolv-conf enthält:

      Output

      update-resolv-conf

      Wenn Ihr Client die Datei update-resolv-conf enthält, bearbeiten Sie als Nächstes die OpenVPN-Client-Konfigurationsdatei, die Sie zuvor übertragen haben:

      Heben Sie die Auskommentierung der drei Zeilen, die Sie hinzugefügt haben, um die DNS-Einstellungen anzupassen, auf:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Wenn Sie CentOS verwenden, ändern Sie die Anweisung group von nogroup auf nobody, um sie an die verfügbaren Gruppen der Distribution anzugleichen:

      client1.ovpn

      group nobody
      

      Speichern und schließen Sie die Datei.

      Verbindungsherstellung

      Jetzt können Sie eine Verbindung zum VPN herstellen, indem Sie mit dem Befehl openvpn auf die Client-Konfigurationsdatei zeigen:

      • sudo openvpn --config client1.ovpn

      Dies sollte Sie mit Ihrem VPN verbinden.

      Anmerkung: Wenn Ihr Client systemd-resolved zum Verwalten von DNS verwendet, überprüfen Sie, ob die Einstellungen korrekt angewendet werden, indem Sie den Befehl systemd-resolve --status wie folgt ausführen:

      • systemd-resolve --status tun0

      Sie sollten eine Ausgabe wie die folgende sehen:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Wenn Sie die IP-Adressen der DNS-Server, die Sie auf dem OpenVPN-Server konfiguriert haben, zusammen mit der ~.-Einstellung für DNS Domain in der Ausgabe sehen, dann haben Sie Ihren Client richtig so konfiguriert, dass er die DNS-Auflösung des VPN-Servers verwendet. Sie können auch überprüfen, ob Sie DNS-Abfragen über das VPN senden, indem Sie eine Site wie DNS leak test.com verwenden.

      iOS

      Installation

      Suchen Sie im iTunes App Store nach OpenVPN Connect, der offiziellen iOS OpenVPN-Client-Anwendung, und installieren Sie sie. Um Ihre iOS-Client-Konfiguration auf das Gerät zu übertragen, schließen Sie es direkt an einen Computer an.

      Der Vorgang zum Abschließen der Übertragung mit iTunes wird hier beschrieben. Öffnen Sie iTunes auf dem Computer und klicken Sie auf iPhone > Apps. Scrollen Sie nach unten zum Abschnitt File Sharing und klicken Sie auf die OpenVPN-App. Das leere Fenster auf der rechten Seite, OpenVPN-Dokumente, dient zum Freigeben von Dateien. Ziehen Sie die Datei .ovpn in das Fenster OpenVPN-Dokumente. iTunes zeigt das zum Laden bereite VPN-Profil auf dem iPhone

      Starten Sie jetzt die OpenVPN-App auf dem iPhone. Sie erhalten eine Benachrichtigung, dass ein neues Profil zum Import bereit ist. Tippen Sie auf das grüne Pluszeichen, um es zu importieren.

      Die OpenVPN iOS-App zeigt ein neues Profil an, das zum Import bereit ist Verbindung wird hergestellt

      OpenVPN kann jetzt mit dem neuen Profil verwendet werden. Starten Sie die Verbindung, indem Sie die Taste Connect in die Position On schieben. Trennen Sie die Verbindung, indem Sie dieselbe Taste in die Position Off schieben.

      Anmerkung: Der VPN-Switch unter Einstellungen kann nicht zur Verbindung mit dem VPN verwendet werden. Wenn Sie es versuchen, erhalten Sie eine Mitteilung, die Verbindung nur mit der OpenVPN-App herzustellen.

      Die mit dem VPN verbundene OpenVPN iOS-App

      Android

      Installation

      Öffnen Sie den Google Play Store. Suchen und installieren Sie Android OpenVPN Connect, die offizielle Android OpenVPN-Client-Anwendung.

      Sie können das Profil .ovpn übertragen, indem Sie das Android-Gerät per USB an Ihren Computer anschließen und die Datei kopieren. Wenn Sie einen SD-Kartenleser haben, können Sie auch die SD-Karte des Geräts entfernen, das Profil auf sie kopieren und dann die Karte wieder in das Android-Gerät einlegen.

      Starten Sie die OpenVPN-App und tippen Sie auf das Menü FILE, um das Profil zu importieren.

      Die Menüauswahl für den Import des Profils in der OpenVPN-App für Android

      Navigieren Sie dann zum Speicherort des Profils (im Screenshot wird /storage/emulated/0/openvpn verwendet) und wählen Sie Ihre Datei .ovpn aus. Tippen Sie auf die Schaltfläche IMPORT, um das Importieren dieses Profils zu beenden.

      Die OpenVPN-App für Android, die das zu importierende VPN-Profil auswählt

      Verbindung wird hergestellt Sobald das Profil hinzugefügt wurde, sehen Sie einen Bildschirm wie diesen:

      Die OpenVPN-App für Android mit dem neu hinzugefügten Profil

      Tippen Sie zum Verbinden auf die Umschalttaste in der Nähe des Profils, das Sie verwenden möchten. Sie sehen Echtzeitdaten zu Ihrer Verbindung sowie zu dem über Ihren OpenVPN-Server geleiteten Datenverkehr: Die OpenVPN-App für Android, die mit dem VPN verbunden ist

      Zum Trennen der Verbindung tippen Sie einfach erneut auf die Umschalttaste oben links. Sie werden aufgefordert, zu bestätigen, dass Sie die Verbindung zu Ihrem VPN trennen möchten.

      Schritt 14 — Testen Ihrer VPN-Verbindung (optional)

      Anmerkung: Diese Methode zum Testen Ihrer VPN-Verbindung funktioniert nur dann, wenn Sie sich im Schritt 7 bei der Bearbeitung der Datei server.conf für OpenVPN dazu entschieden haben, den gesamten Verkehr über das VPN zu leiten.

      Sobald alles installiert ist, wird durch eine einfache Überprüfung bestätigt, dass alles ordnungsgemäß funktioniert. Öffnen Sie einen Browser, ohne dass eine VPN-Verbindung aktiviert ist, und rufen Sie DNSLeakTest auf.

      Die Site gibt die von Ihrem Internetdienstanbieter zugewiesene IP-Adresse zurück und zeigt, wie Sie dem Rest der Welt erscheinen. Um Ihre DNS-Einstellungen über dieselbe Website zu überprüfen, klicken Sie auf Erweiterter Test. Dann erfahren Sie, welche DNS-Server Sie verwenden.

      Verbinden Sie nun den OpenVPN-Client mit dem VPN Ihres Droplets und aktualisieren Sie den Browser. Jetzt sollte eine völlig andere IP-Adresse (die Ihres VPN-Servers) angezeigt werden. So sehen Sie für die Welt aus. Erneut werden mit Erweiterter Test von DNSLeakTest Ihre DNS-Einstellungen überprüft, und es wird bestätigt, dass Sie jetzt die von Ihrem VPN per Push übertragenen DNS-Resolver verwenden.

      Schritt 15 — Sperren von Client-Zertifikaten

      Gelegentlich müssen Sie möglicherweise ein Client-Zertifikat sperren, um den weiteren Zugriff auf den OpenVPN-Server zu verhindern.

      Folgen Sie dazu dem Beispiel im Abschnitt Sperren eines Zertifikats im voraussetzenden Tutorial Erstellen und Konfigurieren einer Zertifizierungsstelle unter Ubuntu 20.04.

      Sobald Sie ein Zertifikat für einen Client mit diesen Anweisungen widerrufen haben, müssen Sie die generierte Datei crl.pem in das Verzeichnis /etc/openvpn/server ihres OpenVPN-Servers kopieren:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Öffnen Sie als Nächstes die OpenVPN-Serverkonfigurationsdatei:

      • sudo nano /etc/openvpn/server/server.conf

      Fügen Sie am Ende der Datei die Option crl-verify hinzu, mit der der OpenVPN-Server angewiesen wird, die Zertifikatsperrliste zu überprüfen, die wir bei jedem Verbindungsversuch erstellt haben:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Speichern und schließen Sie die Datei.

      Starten Sie zum Abschluss OpenVPN neu, um die Zertifikatsperre zu implementieren:

      • sudo systemctl restart openvpn-server@server.service

      Der Client sollte mit den alten Anmeldedaten keine Verbindung mehr zum Server herstellen können.

      Um weitere Clients zu sperren, gehen Sie wie folgt vor:

      1. Sperren Sie das Zertifikat mit dem Befehl ./easyrsa revoke client_name
      2. Generieren Sie eine neue CRL
      3. Übertragen Sie die neue Datei crl.pem auf Ihren OpenVPN-Server und kopieren Sie sie in das Verzeichnis /etc/openvpn/server/, um die alte Liste zu überschreiben
      4. Starten Sie den OpenVPN-Dienst neu.

      Mit diesem Vorgang können Sie alle zuvor für Ihren Server ausgestellten Zertifikate sperren.

      Zusammenfassung

      Sie sollten nun über ein voll funktionsfähiges virtuelles privates Netzwerk verfügen, das auf Ihrem OpenVPN-Server läuft. Sie können im Internet surfen und Inhalte herunterladen, ohne sich Sorgen machen zu müssen, dass böswillige Akteure Ihre Aktivitäten verfolgen.

      Sie können noch verschiedene weitere Schritte ausführen, um Ihr OpenVPN anzupassen. Beispielsweise können Sie Ihren Client so konfigurieren, dass er sich automatisch mit dem VPN verbindet oder client-spezifische Regeln und Zugriffsrichtlinien konfigurieren. Konsultieren Sie für diese und andere Anpassungen des OpenVPN die offizielle OpenVPN-Dokumentation.

      Um weitere Clients zu konfigurieren, müssen Sie nur den Schritten 6 und 11 – 13 für jedes zusätzliche Gerät folgen. Um den Zugriff auf Clients zu sperren, führen Sie einfach Schritt 15 aus.



      Source link

      So konfigurieren Sie Apache HTTP mit MPM Event und PHP-FPM unter Ubuntu 18.04


      Der Autor hat den COVID-19 Relief Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

      Einführung

      Der Apache-HTTP-Webserver wurde im Laufe der Jahre weiterentwickelt, damit er in verschiedenen Umgebungen arbeitet und verschiedene Anforderungen erfüllt. Ein wichtiges Problem, das Apache HTTP wie jeder andere Webserver auch lösen muss, ist die Handhabung verschiedener Prozesse bei der Bearbeitung von http-basierten Anfragen. Dazu zählt das Öffnen eines Sockets, das die Anforderung verarbeitet, das Offenhalten der Verbindung für eine bestimmte Zeit, die Handhabung neuer Ereignisse, die während dieser Verbindung eintreten und die Rückgabe des produzierten Contents durch ein Programm, dass in einer bestimmten Sprache geschrieben wurde (wie PHP, Perl oder Python). Diese Aufgaben werden von einem Multi-Processing-Module (MPM) ausgeführt und gesteuert.

      Apache HTTP ist mit drei verschiedenen MPM ausgestattet:

      • Prefork: Für jede eingehende Verbindung, die den Server erreicht, wird ein neuer Vorgang erstellt. Jeder Vorgang ist isoliert von den anderen und es wird kein Speicher zwischen ihnen geteilt, selbst dann, wenn sie in der Ausführung identische Anrufe an einem bestimmten Punkt ausführen. Auf diese Weise können Sie mit Bibliotheken verknüpfte Anwendungen, die Thread-Ausführungen nicht unterstützen, sicher ausführen – meist ältere Anwendungen oder Bibliotheken.
      • Worker: Ein Elternprozess ist für das Starten eines Bündels von Kindprozessen verantwortlich, von denen einige neu eingehende Verbindungen erfassen und andere den angeforderten Content bereitstellen. Für jeden Prozess gibt es einen dazugehörigen Thread (ein einzelner Thread kann jeweils eine Verbindung verwalten), sodass ein Prozess mit mehreren Anfragen gleichzeitig umgehen kann. Diese Methode für die Handhabung von Verbindungen fördert eine bessere Ressourcennutzung und gewährleistet die Aufrechterhaltung der Stabilität. Das ist auf das Bündel von verfügbaren Prozessen zurückzuführen, bei denen oft frei verfügbare Threads bereitstehen, die neue Verbindungen sofort bedienen können.
      • Event: Basierend auf Worker geht dieses MPM noch einen Schritt weiter, indem es die Art und Weise optimiert, wie der Elternprozess Aufgaben für die Kindprozesse und für die Threads, die damit verknüpft sind, vorgibt. Eine Verbindung bleibt für 5 Sekunden standardmäßig geöffnet und schließt sich bei jedem neuen Ereignis, das eintritt; das ist der Standardwert für die Keep-Alive-Anweisung, der den mit ihm verknüpften Thread beibehält. Das Event MPM ermöglicht dem Prozess das Verwalten von Threads, damit einige Threads für die Verwaltung neuer eingehender Verbindungen bereitstehen, während andere weiterhin mit den Live-Verbindungen verknüpft sind. Die Ressourcennutzung und Leistungsfähigkeit wird dadurch verbessert, dass die den Threads zugewiesenen Aufgaben neu verteilt werden können.

      Mit dem MPM Event-Modul ist ein schnelles Multi-Processing-Modul auf dem Apache-HTTP-Webserver verfügbar.

      PHP-FPM ist der FastCGI-Prozessmanager für PHP. Das FastCGI-Protokoll basiert auf dem Common Gateway Interface (CGI), einem Protokoll, das zwischen Anwendungen und Webservern wie Apache HTTP steht. Dadurch können Entwickler Anwendungen schreiben, ohne das Verhalten der Webserver berücksichtigen zu müssen. Die Programme führen ihre Prozesse unabhängig aus und übergeben ihr Produkt über dieses Protokoll an den Webserver. Jede neue Verbindung, die von einer Anwendung verarbeitet werden muss, erstellt einen neuen Prozess.

      Durch die Kombination von MPM Event in Apache HTTP mit dem PHP FastCGI-Prozessmanager (PHP-FPM) kann eine Website schneller laden und mehr gleichzeitige Verbindungen mit weniger Ressourcen verarbeiten.

      In diesem Tutorial verbessern Sie die Leistung des LAMP-Stacks, indem Sie das standardmäßige Multi-Processing-Module von Prefork auf Event umstellen und den PHP-FPM-Prozessmanager für die Handhabung des PHP-Codes nutzen anstelle des klassischen mod_php in Apache HTTP.

      Voraussetzungen

      Bevor Sie diese Anleitung beginnen, benötigen Sie Folgendes:

      Schritt 1 — Umstellen des Multi-Processing-Module

      Ubuntu übernimmt Skripte, um Apache-HTTP-Module über die eigene übergeordnete Distribution Debian zu aktivieren oder zu deaktivieren. Sie werden dieses Toolset in diesem Schritt verwenden, um das Prefork-Modul zu deaktivieren und das Event-Modul zu aktivieren.

      In diesem Schritt halten Sie Apache HTTP an, deaktivieren das Modul PHP 7.2, das mit dem Prefork-Modul verknüpft ist, und deaktivieren anschließend Prefork, um das Event-Modul unmittelbar aktivieren zu können.

      Zuerst halten Sie den Apache-HTTP-Dienst an:

      • sudo systemctl stop apache2

      Nun können Sie das Modul PHP 7.2 deaktivieren, das mit dem Prefork-Modul in Verbindung steht:

      Deaktivieren Sie dann das Prefork MPM-Modul:

      • sudo a2dismod mpm_prefork

      Nun Aktivieren Sie das Event MPM-Modul:

      Sie haben das MPM von Prefork auf Event umgestellt und die Modulverbindung PHP 7.2 zwischen PHP und Apache HTTP entfernt. Im nächsten Schritt installieren Sie das php-fpm-Modul sowie die verwandten Bibliotheken und Proxy-Module. Sie konfigurieren Apache HTTP so, dass es auch mit PHP kommunizieren kann.

      Schritt 2 — Konfigurieren von Apache HTTP für die Nutzung des FastCGI-Prozesses

      In dieser Phase haben Sie die Verarbeitung von Verbindungen durch Apache HTTP umgestellt, indem Sie sie von dem Prefork-MPM auf Event verlagert haben. Im Zuge dessen haben Sie jedoch das PHP-Modul deaktiviert, das Apache HTTP mit jedem Programm verbunden hatte, das mit PHP ausgeführt wird.

      In diesem Schritt installieren Sie den PHP-FPM-Prozessor, damit Apache HTTP wieder PHP-Programme verarbeiten kann. Außerdem installieren Sie die Abhängigkeitsbibliotheken und aktivieren die Module, damit beide reibungslos und schneller zusammenarbeiten können als zuvor.

      Installieren Sie zuerst php-fpm. Der folgende Befehl installiert das PHP-FPM und aktiviert automatisch den Dienst php7.2-fpm, der in systemd integriert ist, sodass der Dienst beim Booten gestartet wird:

      Apache HTTP und PHP benötigen für die Kommunikation eine Bibliothek, die diese Funktion ermöglicht. Nun installieren Sie libapache2-mod-fcgid, das als Schnittstelle zwischen Programmen mit Webservern dient und Apache-HTTP-spezifisch ist. Diese Kommunikation erfolgt über ein UNIX-Socket.

      Installieren Sie diese Bibliothek:

      • sudo apt install libapache2-mod-fcgid

      Sie haben php-fpm und das libapache2-mod-fcgid installiert, aber noch keines davon aktiviert.

      Aktivieren Sie zuerst das php-fpm-Modul mit folgendem Befehl:

      Aktivieren Sie in einem zweiten Schritt das Apache HTTP-Proxy-Modul:

      Aktivieren Sie in einem dritten Schritt das FastCGI-Proxy-Modul auf Apache HTTP:

      Hinweis: Sie können die Konfiguration dieser Interaktion zwischen PHP-Programmen und Apache HTTP über einen UNIX-Socket mit Folgendem lesen:

      • cat /etc/apache2/conf-enabled/php7.2-fpm.conf

      Nun wurden alle Vorkehrungen getroffen, damit Sie Apache HTTP starten können. Führen Sie eine Konfigurationsüberprüfung durch:

      • sudo apachectl configtest

      Output

      Syntax OK

      Danach können Sie mit dem Neustart von Apache HTTP fortfahren, da es beim Installieren der FastCGI-Bibliothek libapache2-mod-fcgid automatisch gestartet wurde:

      • sudo systemctl restart apache2

      Sie haben das php-fpm-Modul installiert und Apache HTTP so konfiguriert, dass es damit funktioniert. Zudem haben Sie ermöglicht, dass die erforderlichen Module für das FastCGI-Protokoll funktionieren, und die entsprechenden Dienste gestartet.

      Nachdem Apache das Event MPM-Modul aktiviert hat und PHP-FPM verfügbar ist und ausgeführt wird, ist es an der Zeit sicherzustellen, das alles wie geplant funktioniert.

      Schritt 3 — Testen Ihrer Konfiguration

      Führen Sie einige Tests aus, um zu prüfen, ob die Konfigurationsänderungen angewendet wurden. Beim ersten Test wird geprüft, welches Multi-Processing-Modul Apache HTTP verwendet. Beim zweiten Test wird sichergestellt, dass PHP den FPM-Manager verwendet.

      Überprüfen Sie den Apache-HTTP-Server, indem Sie den folgenden Befehl ausführen:

      • sudo apachectl -M | grep 'mpm'

      Sie erhalten folgende Ausgabe:

      Output

      mpm_event_module (shared)

      Für das Proxy-Modul und FastCGI können Sie diese Prozedur wiederholen:

      • sudo apachectl -M | grep 'proxy'

      Die Ausgabe zeigt Folgendes:

      Output

      proxy_module (shared) proxy_fcgi_module (shared)

      Wenn Sie die gesamte Liste der Module sehen möchten, können Sie den zweiten Teil des Befehls nach -M entfernen.

      Nun ist es Zeit zu prüfen, ob PHP den FastCGI-Prozessmanager verwendet. Dazu schreiben Sie ein kleines PHP-Skript, das Ihnen alle Informationen zeigt, die mit PHP in Verbindung stehen.

      Führen Sie den folgenden Befehl aus, um eine Datei zu schreiben, deren Name wie folgt lautet:

      • sudo nano /var/www/your_domain/info.php

      Fügen Sie den folgenden Inhalt in die Datei info.php ein:

      info.php

      <?php phpinfo(); ?>
      

      Rufen Sie nun die URL Ihres Servers auf und fügen Sie info.php am Ende hinzu: http://your_domain/info.php.

      Der Server-API-Eintrag lautet FPM/FastCGI.

      PHP Screen the Server API entry FPM/FastCGI

      Löschen Sie die Datei info.php nach diesem Test, damit keine Informationen über den Server veröffentlicht werden:

      • sudo rm /var/www/yourdomain.com/info.php

      Sie haben den Betriebszustand des MPM-Moduls und der Module, die für die Handhabung von FastCGI zuständig sind, sowie die Handhabung des PHP-Codes überprüft.

      Zusammenfassung

      Sie haben Ihren ursprünglichen LAMP-Stack optimiert, sodass sich die Anzahl der Verbindungen zur Erstellung neuer Apache HTTP-Prozesse erhöht hat, PHP-FPM den PHP-Code effizienter verwaltet und sich die Ressourcennutzung insgesamt verbessert.

      Weitere Informationen zu den verschiedenen Modulen und verwandten Projekten finden Sie in der Projekt-Dokumentation zum Apache HTTP-Server.



      Source link