Root-Server Tutorial

ROOT-SERVER TUTORIAL

Einrichtung von 2FAuth auf Ubuntu Standalone

Lerne, wie du 2FAuth auf Ubuntu einrichten und zum sichern deiner Logins verwenden kannst.

Einführung

Anforderungen

Für eine 'kleine Instanz' (nur eine für dich selbst und nicht viele Benutzer) ist ein VPS 200 ausreichend.

Ich empfehle, die Instanz auf einem VPS 200 einzurichten.
Wenn du das Gefühl hast, dass die Instanz langsamer wird, kannst du jederzeit über das CCP auf einen größeren Server upgraden.

Der Server muss bereits Ubuntu 22.04 installiert haben.


Du benötigst auch eine Domain. Eine Domain, die in einem Webhosting-Paket verwendet wird, ist ausreichend. (Du kannst sie weiterhin für dein Webhosting verwenden, weil wir eine Subdomain verwenden werden.)

Schritt 1 - Die IP deines Servers herausfinden

  1. Melde dich im SCP (ServerControlPanel) unter https://www.servercontrolpanel.de an.
  2. Klicke auf den Server, den du verwenden möchtest.
  3. Wenn du bereits auf dem Tab "Allgemein" bist, siehst du unten rechts ein Feld mit der Bezeichnung "Netzwerk".
  4. Hier findest du die IP deines Servers (unter IPv4).
  5. Schreibe die IP deines Servers auf.

Schritt 2 - DNS konfigurieren

  1. Melde dich im CCP (CustomerControlPanel) unter https://www.customercontrolpanel.de an.
  2. Klicke in der linken Seitenleiste auf "Domains".
  3. Finde die Domain, die du verwenden möchtest, und klicke auf das Lupensymbol daneben.
  4. In dem neuen Fenster, klicke auf "DNS".
  5. Scrolle nach unten, bis du leere Felder siehst.
  6. In das erste Feld schreibst du den Namen deiner Subdomain (In diesem Tutorial wird "2fauth" verwendet).
  7. Wähle im Dropdown-Menü A aus.
  8. In das letzte Feld gibst du die IP deines Servers ein (aus Schritt 1).
  9. Klicke auf "DNS-Einträge speichern".

Schritt 3 - Vorbereitung des Servers

Zuerst musst du dich über SSH auf deinem Server anmelden, dann folge diesen Schritten:

  1. Gib sudo -s ein, um Root-Rechte zu erhalten.
  2. Wenn nach deinem Passwort gefragt wird, gib es ein und drücke Enter.
  3. Gib nun add-apt-repository ppa:ondrej/php -y && apt update -y && apt upgrade -y ein, um den Server zu aktualisieren.
  4. Wenn ein rosa Fenster erscheint, drücke einmal Enter, um fortzufahren.
  5. Gib apt install curl nginx git zip unzip php8.2-fpm php8.2-cli php8.2-gd php8.2-curl php8.2-cli php8.2-bcmath php8.2-mysql php8.2-ctype php8.2-fileinfo php8.2-mbstring php8.2-tokenizer php8.2-xml php8.2-zip -y || curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && snap install certbot --classic ein, um alle erforderliche Software zu installieren.
  6. Wenn ein rosa Fenster erscheint, drücke einmal Enter, um fortzufahren.
  7. Gib composer update ein, um Composer zu aktualisieren. (Wenn gefragt wird, ob du als Root weitermachen möchtest, gib Ja ein und drücke Enter, um fortzufahren.)

Schritt 4 - MariaDB installieren

Folge diesen Schritten, um MariaDB zu installieren und zu konfigurieren:

  1. Gib apt install mariadb-server ein, um MariaDB zu installieren.
  2. Führe mysql_secure_installation aus, um MariaDB zu konfigurieren.
  3. Du wirst nach dem Root-Passwort gefragt. Drücke Enter, um fortzufahren (es gibt noch kein Passwort).
  4. Du wirst gefragt, ob du die Authentifizierungsmethode ändern möchtest. Gib n ein und drücke Enter, um fortzufahren.
  5. Du wirst gefragt, ob du ein Root-Passwort festlegen möchtest. Gib n ein und drücke Enter, um fortzufahren.
  6. Du wirst gefragt, ob du anonyme Benutzer entfernen möchtest. Gib y ein und drücke Enter, um fortzufahren.
  7. Du wirst gefragt, ob du die Remote-Anmeldung als Root deaktivieren möchtest. Gib y ein und drücke Enter, um fortzufahren.
  8. Du wirst gefragt, ob du die Testdatenbank und den Zugriff darauf entfernen möchtest. Gib y ein und drücke Enter, um fortzufahren.
  9. Du wirst gefragt, ob du die Privilegien-Tabellen jetzt neu laden möchtest. Gib y ein und drücke Enter, um fortzufahren.

Schritt 5 - Datenbank und Benutzer für 2FAuth erstellen

  1. Gib mysql -u root ein, um dich bei MariaDB anzumelden.
  2. Gib CREATE DATABASE 2fauth; ein, um die Datenbank zu erstellen.
  3. Gib CREATE USER '2fauth'@'localhost' IDENTIFIED BY '<REPLACE_WITH_PASSWORD>'; ein, um einen Benutzer zu erstellen. Ersetze <REPLACE_WITH_PASSWORD> durch ein Passwort deiner Wahl.
  4. Gib GRANT ALL PRIVILEGES ON 2fauth.* TO '2fauth'@'localhost'; ein, um dem Benutzer alle Rechte zu gewähren.
  5. Gib FLUSH PRIVILEGES; ein, um die Änderungen anzuwenden.
  6. Gib exit; ein, um MariaDB zu verlassen.

Schritt 6 - 2FAuth installieren

  1. Gib mkdir /var/www/2fauth && chown www-data 2fauth && cd /var/www/2fauth ein, um ein Verzeichnis für 2FAuth zu erstellen.
  2. Gib sudo su -l www-data -s /bin/bash ein, um zum Benutzer www-data zu wechseln.
  3. Gib curl https://api.github.com/repos/Bubka/2FAuth/tags | grep "tarball_url" | grep -Eo 'https://[^\"]*' | sed -n '1p' | xargs wget -O - | tar -xz --strip-components=1 -C /var/www/2fauth ein, um die neueste Version von 2FAuth herunterzuladen und zu extrahieren.
  4. Gib cd /var/www/2fauth && composer install --prefer-dist --no-scripts --no-dev && exit ein, um die Abhängigkeiten zu installieren.
  5. Gib php artisan 2fauth:install ein, um die Installation zu starten.
  6. Gib deine URL ein (z.B. http://2fauth.example.com) und drücke Enter.
  7. Gib my ein und drücke fünfmal Enter, um MariaDB als Datenbanktreiber auszuwählen.
  8. Gib das Passwort deines Datenbankbenutzers ein (aus Schritt 5) und drücke Enter.

Schritt 7 - Einrichtung von nginx

  1. Wenn nach deinem Passwort gefragt wird, gib es ein und drücke Enter.
  2. Gib mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old && nano /etc/nginx/nginx.conf ein, um die Standardkonfigurationsdatei von nginx zu bearbeiten.
  3. Füge den folgenden Code in die Datei ein:
user www-data;
events {}
http {
  include mime.types;

  access_log /dev/stdout;
  error_log /dev/stderr;

  server {
  listen 80;
  server_name 2fauth.example.com;
  root /var/www/2fauth/public;

  index index.php;

  charset utf-8;

  location / {
  try_files $uri $uri/ /index.php?$query_string;
  }

  location = /favicon.ico { access_log off; log_not_found off; }
  location = /robots.txt  { access_log off; log_not_found off; }

  error_page 404 /index.php;

  location ~ \.php$ {
  fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
  fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
  include fastcgi_params;
  }

  location ~ /\.(?!well-known).* {
  deny all;
  }
  }
}
  1. Verlasse die Datei, indem du Strg + X, dann Y und dann Enter drückst.
  2. Lade nginx neu, indem du systemctl reload nginx eingibst.

Schritt 8 - Einrichten von HTTPS

  1. Gib certbot --nginx ein, um die CertBot-Einrichtung zu starten.
  2. Ich empfehle die Verwendung dieser Einstellungen:
    1. Gib deine E-Mail-Adresse ein.
    2. Ja (Nutzungsbedingungen)
    3. Nein (Werbung)
    4. Drücke Enter, um die einzige Option (Deine Domain) auszuwählen.
    5. Dieser Vorgang kann eine Weile dauern, bitte haben ein wenig Geduld.

Schritt 8 - Einrichten der Firewall

Du benötigst eine Firewall, um deinen Server vor unerwünschten Verbindungen zu schützen.

Du wirst ufw (Uncomplicated Firewall) verwenden, um die Firewall einzurichten, da diese einfach zu bedienen und zu konfigurieren ist und auch auf Ubuntu vorinstalliert ist.

  1. Gib ufw allow ssh && ufw allow http && ufw allow https && ufw enable ein, um SSH-, HTTP- und HTTPS-Verbindungen zuzulassen und die Firewall zu aktivieren.
  2. Drücke Y und dann Enter, um zu bestätigen.

Schritt 10 - Einrichten von 2FAuth

  1. Öffne deinen Browser und gehen zu deiner Subdomain (z.B. https://2fauth.example.com).
  2. Du solltest jetzt einen Anmeldebildschirm sehen.
  3. Klicke auf "Registrieren" und gib deine Daten ein.
  4. Klicke auf "Registrieren", um dein Konto zu registrieren. (Das erste registrierte Konto wird das Administrator-Konto sein.)

Ich empfehle, die Registrierung zu deaktivieren, nachdem du dein Konto registriert hast. Das kannst du tun, indem du die Einstellungen öffnest und am Ende der Seite "Registrierung deaktivieren" aktivierst.

Fazit

Du hast jetzt erfolgreich 2FAuth installiert!

Ab sofort ist deine 2FAuth-Instanz unter der Subdomain verfügbar (z.B. https://2fauth.example.com).

Vielen Dank, dass du dieses Tutorial verwendet hast!

Licence

MIT

Copyright (c) 2023 Konstantin Protzen

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicence, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Contributor's Certificate of Origin

By making a contribution to this project, I certify that:

  1. The contribution was created in whole or in part by me and I have the right to submit it under the licence indicated in the file; or

  2. The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate licence and I have the right under that licence to submit that work with modifications, whether created in whole or in part by me, under the same licence (unless I am permitted to submit under a different licence), as indicated in the file; or

  3. The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

  4. I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the licence(s) involved.

Veröffentlicht am 16.11.2023 von Konstantin Protzen

Tutorial einreichen

Erhalte einen 60€ netcup Gutschein für jedes veröffentlichte Tutorial.