Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Ersteinrichtung eines Servers mit Ubuntu 20.04 / 18.04

profile picture
Author
Svenja Michal
Published
2021-11-17
Time to read
12 minutes reading time

Einführung

In diesem Tutorial wird erklärt, wie ein Ubuntu Server erstmals eingerichtet werden kann. Das beinhaltet Grundkonfigurationen, wie das Erstellen eines sudo-Benutzers und das Einrichten einer Firewall.

initial-setup

Voraussetzungen

  • Grundlegende Kenntnisse über Hetzner Cloud
    • Wir setzen voraus, dass Sie wissen was ein Server ist.
    • Wir setzen voraus, dass Sie Ihre IP-Adresse und Ihre root-Login-Daten kennen.
  • Kommandozeilen-Tool

Beispiel-Benennungen

  • Benutzername: holu
  • IPv4: <10.0.0.1>

Beachten Sie, dass in allen Beispiel-Befehlen holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse.

Schritt 1 - Mit dem Server verbinden

Verbinden Sie sich als root-Benutzer mit Ihrem Server.

$ ssh root@<10.0.0.1>

Beachten Sie, dass <10.0.0.1> mit der eigenen IP-Adresse ersetzt werden muss.

Sollte eine Warnung bezüglich host authenticity erscheinen, kann yes angegeben werden. Der SSH-Befehl wird den in der Warnung angegebenen Fingerprint in der ~/.ssh/known_hosts-Datei speichern und in Zukunft automatisch erkennen.

Sollten Sie einen SSH-Key und kein Passwort angegeben haben, sind Sie automatisch mit dem Server verbunden. Ansonsten geben Sie nun bitte Ihr Passwort ein. Wenn Sie sich das erste Mal per root-Passwort auf Ihrem Server anmelden, werden Sie dazu aufgefordert Ihr Passwort zu ändern.

Schritt 2 - Neuen Benutzer erstellen

Im Linux-Umfeld haben Sie als root-Benutzer alle Administrationsrechte und können somit uneingeschränkt Änderungen an Ihrem Server vornehmen. Um ungewollte oder versehentliche Änderungen zu verhindern, empfehlen wir einen Benutzer mit sudo-Rechten zu erstellen. Dieser wird dieselben Rechte wie ein root-Benutzer besitzen, muss allerdings vor jeden administrativen Befehl ein sudo setzen. Dies bietet eine Art Sicherheitsebene, die versehentliche Änderungen verhindern kann. Erstellen Sie also zunächst mit folgendem Befehl einen neuen Benutzer:

# adduser holu

Ersetzen Sie holu mit einem eigenen Benutzernamen. Bestimmen Sie anschließend wie aufgefordert ein Passwort für den neu erstellten Benutzer. Optional können Sie noch Angaben zu Ihrer Person machen oder Sie überspringen die jeweiligen Felder mit ENTER.

Sollten Sie sich Ihren Server mit anderen Personen teilen, können Sie mit dem adduser-Befehl auch noch weitere Benutzer erstellen. Dadurch müssen Sie Ihre eigenen Zugangsdaten nicht mit anderen Benutzern teilen und nehmen diesen damit gleichzeitig jegliche Administrationsrechte. Für Ihren eigenen Benutzer können Sie die Administrationsrechte freischalten, indem Sie ihn wie im nächsten Schritt beschrieben der sudo-Gruppe hinzufügen.

Die von Ihnen hinzugefügten Benutzer können Sie sich jeder Zeit mit getent anzeigen lassen. Wenn alles funktioniert hat, sollte an dieser Stelle nun auch der Benutzer angezeigt werden, den Sie eben erstellt haben.

# getent passwd {1000..60000} | cut -d: -f1
  • {1000..60000}: Jeder Benutzer hat eine bestimmte ID, genannt UID. Im Linux-Umfeld sollte diese UID bei normalen Nutzern zwischen 1000 und 60000 liegen.
  • cut -d: -f1: Neben dem Benutzernamen kann man sich noch weitere Daten anzeigen lassen.
    Benutzername:Passwort:UID:GID:GECOS:Home:Shell
    In unserem Fall genügt uns der Benutzername, weshalb wir den Output auf das erste Feld (f1) reduzieren.

Schritt 3 - Administrationsrechte vergeben

Um für administrative Befehle nicht jedes Mal Konto wechseln zu müssen, empfiehlt es sich, den neuen Benutzer einer sudo-Gruppe hinzuzufügen. Die entsprechenden Rechte dazu hat der root-Benutzer, über den Sie noch mit Ihrem Server verbunden sind. Führen Sie den folgenden Befehl aus, um den neu erstellten Benutzer der sudo-Gruppe hinzuzufügen:

# usermod -aG sudo holu

Beachten Sie, dass holu mit dem eigenen Benutzernamen ersetzt werden muss, den Sie in Schritt 2 für Ihren neuen Benutzer festgelegt haben.

Benutzer, die der sudo-Gruppe hinzugefügt wurden, können Sie sich jeder Zeit mit getent anzeigen lassen. Wenn alles funktioniert hat, sollte an dieser Stelle nun auch Ihr neuer Benutzer angezeigt werden.

# getent group sudo | cut -d: -f4
  • group sudo: Diesmal sollen nur Benutzer angezeigt werden, die in der sudo-Gruppe sind.
  • cut -d: -f4: Neben dem Benutzernamen kann man sich noch weitere Daten anzeigen lassen.
    Gruppe:Passwort:GID:Benutzername(n)
    In unserem Fall genügen uns die Namen alle Benutzer in dieser Gruppe, weshalb wir den Output auf das vierte Feld (f4) reduzieren.

Schritt 4 - Authentifizierung

Um eine Verbindung zum Server aufzubauen, kann entweder ein Passwort oder ein SSH-Key zur Authentifizierung genutzt werden. Der Vorteil eines SSH-Keys ist, dass er sicherer ist als beispielsweise ein Passwort. Im Tutorial SSH-Key einrichten wird genau erklärt, wie Sie sich einen SSH-Key erstellen und auf einem externen Gerät hinterlegen können. Sollten Sie bisher noch keinen Key besitzen, können Sie sich entweder nach dem oben verlinkten Tutorial richten oder Sie behalten Ihr Passwort und machen direkt mit dem nächsten Schritt weiter. Sollten Sie hingegen bereits einen SSH-Key besitzen, können Sie diesen jetzt für Ihren neuen Benutzer hinterlegen. Im oben genannten Tutorial werden dafür vier Möglichkeiten erklärt. Grundsätzlich können Sie entweder den SSH-Key von Ihrem lokalen Gerät beim neuen Benutzer auf dem Server hinterlegen oder Sie kopieren alle SSH-Keys, die bereits beim root-Benutzer hinterlegt wurden zum neuen Benutzer auf demselben Server.

  • Lokales Gerät

    Da der SSH-Key beim Erstellen lokal gespeichert wird, müssen Sie sich für diesen Befehl entsprechend auf Ihrem lokalen Gerät befinden. Öffnen Sie dazu ein zweites Fenster in Ihrer Kommandozeile und nutzen Sie dort anschließend folgenden Befehl:

    $ ssh-copy-id holu@<10.0.0.1>

    Beachten Sie, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse.

    Wenn Sie auf Ihrem lokalen Gerät bereits mehrere SSH-Keys besitzen, sollte noch der Dateiname des SSH-Keys ergänzt werden, der beim neuen Benutzer hinterlegt werden soll:

    $ ssh-copy-id -i ~/.ssh/id_<type>.pub holu@<10.0.0.1>

    Beachten Sie, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Zusätzlich sollten Sie noch <type> so anpassen, dass es dem Namen der Datei entspricht, in der Ihr Public SSH-Key gespeichert ist. Sollten Sie sich beim Namen nicht ganz sicher sein, können Sie sich mit ls ~/.ssh alle Dateien anzeigen lassen, die in dem SSH-Ordner enthalten sind. Eine Datei sollte entsprechend id_<type>.pub heißen. Nachdem der SSH-Key beim neuen Benutzer hinterlegt wurde, können Sie das neue Kommandozeilenfenster schließen und wieder zum ersten Fenster wechseln auf dem Sie noch als root-Benutzer mit Ihrem Server verbunden sind.

  • Root-Benutzer

    Mit der oben gezeigten Variante wird lediglich in der authorized_keys-Datei des neuen Benutzers ein neuer SSH-Key hinzugefügt. Sollten Sie Ihren root-Benutzer schon länger verwenden und in Ihrem .ssh-Ordner bereits mehr Daten gespeichert haben, die Sie gerne auch bei Ihrem neuen Benutzer hätten, können Sie auch den gesamten .ssh-Ordner von Ihrem root-Benutzer zu Ihrem neuen Benutzer rüber kopieren. Nutzen Sie dazu folgenden Befehl:

    # rsync --archive --chown=holu:holu ~/.ssh /home/holu

    Beachten Sie, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss. Mit diesem Befehl wird auch automatisch der Eigentümer der Dateien angepasst. Achten Sie darauf, dass ~/.ssh nicht mit einem Schrägstrich endet ~/.ssh/, da sonst lediglich der Inhalt kopiert wird.

Wenn Sie ausschließlich SSH-Keys zur Authentifizierung nutzen, können Sie die Passwort-Authentifizierung deaktivieren. Das bietet einen zusätzlichen Schutz, den Sie abschließend mit Schritt 7 einstellen können, nachdem der neue Benutzer fertig eingerichtet wurde.

Schritt 5 - Login mit dem neuen Benutzer testen

Nun können Sie testen, ob das Erstellen des neuen Benutzers und das Zuweisen der sudo-Rechte funktioniert hat. Öffnen Sie dazu zunächst ein zweites Kommandozeilenfenster. In Schritt 1 haben Sie sich bereits als root-Benutzer mit Ihrem Server verbunden. Vor dem @-Zeichen wird der Benutzer angegeben, über den man sich mit dem Server verbinden möchte. Anstelle von root, kommt an diese Stelle daher diesmal der Benutzer, der in Schritt 2 erstellt wurde. In diesem Beispiel ist das der Benutzer holu.

$ ssh holu@<10.0.0.1>

Beachten Sie, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse.

Sobald Sie sich mit dem neuen Benutzer auf Ihrem Server angemeldet haben, können Sie die sudo-Rechte testen. Eine Übersicht über mögliche Befehle erhalten Sie mit dem Befehl man sudo. Für unsere Testzwecke wechseln wir jetzt aber einfach mit dem su-Befehl (substitute user) zu unserem root-Benutzer.

$ sudo su - root

Wenn Sie sudo das erste Mal in der laufenden Sitzung verwenden oder die sudo-Rechte bereits länger nicht mehr verwendet haben, werden Sie nach Ihrem Benutzerpasswort gefragt. Wenn der Wechsel zum root-Benutzer funktioniert hat, können Sie nun wieder zu Ihrem neuen Benutzer zurück wechseln.

# exit

Schritt 6 - Firewall einrichten

Eine Firewall überwacht den Datenverkehr auf einem Server. Da eine Firewall somit eine gewisse Sicherheit für den Server bietet, ist es ratsam eine einzurichten. Sie können dazu unter anderem die Hetzner Cloud Firewall oder UFW (Uncomplicated Firewall) nutzen. Entscheiden Sie sich aber am besten vorher für eine der beiden Optionen, um zu verhindern, dass die festgelegten Regeln der beiden Firewalls später einmal im Widerspruch stehen.

Die Hetzner Cloud Firewall können Sie unkompliziert über die Benutzeroberfläche auf der Cloud Console oder über die API einrichten. Für unser Beispiel werden wir UFW nutzen. UFW ist eine Firewall, die standartmäßig bei Ubuntu enthalten ist.

Das Einrichten von UFW erfordert Administrationsrechte. Somit können Sie entweder den neu erstellten Benutzer mit sudo-Rechten verwenden oder den root-Benutzer. Sollten Sie den root-Benutzer verwenden, können Sie in den folgenden Befehlen das sudo weglassen.

  • SSH-Verbindungen erlauben

    Mit UFW ist es möglich Pakete nach Namen zu verwalten. Bereits installierte Pakete können Sie sich mit folgendem Befehl jeder Zeit anzeigen lassen:

    $ sudo ufw app list

    Als Output sollte bei Ihnen OpenSSH angezeigt werden:

    Available applications:
      OpenSSH

    Sobald Sie weitere Pakete auf Ihrem Server installieren, sollten auch diese in der Auflistung auftauchen. Dort gelistete Pakete sind nicht automatisch von der Firewall erlaubt. Sobald die Firewall aktiv ist, wird standardmäßig der gesamte eingehende Datenverkehr blockiert und der gesamte ausgehende Datenverkehr zugelassen. Wir sind über SSH mit dem Server verbunden. Um auch nach dem Aktivieren der Firewall noch Zugriff auf den Server zu bekommen, muss im folgendem Schritt OpenSSH, und damit SSH-Verbindungen, erlaubt werden.

    $ sudo ufw allow OpenSSH

    Der Output sollte in etwa so aussehen und damit bestätigen, dass die neue Regel übernommen wurde:

    Rules updated
    Rules updated (v6)  
  • Firewall aktivieren

    Nun da OpenSSH erlaubt ist, kann die Firewall aktiviert werden:

    $ sudo ufw enable

    Sollte eine Warnung wie Command may disrupt existing ssh connections erscheinen, kann y angeben werden. Das sollte keine Auswirkungen haben, da mit dem vorherigen Befehl bereits die Firewall-Regel festgelegt wurde, dass SSH-Verbindungen erlaubt sein sollen.

  • Firewall-Status prüfen

    Um zu prüfen, ob alles richtig funktioniert hat, können Sie sich abschließend noch den Status der Firewall anzeigen lassen.

    $ sudo ufw status

    Als Output sollte nun dastehen active und OpenSSH sollte als ALLOW aufgeführt sein:

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)

Schritt 7 - Root-Zugriff deaktivieren

Jeder Linux-Server hat einen root-Benutzer, was den Benutzer für Hacker zu einem beliebten Ziel macht. Aus Sicherheitsgründen empfiehlt es sich daher den Login über root zu sperren. Da die Verbindung über SSH aufgebaut wird, können Sie diese Einstellung in der SSH-Konfigurationsdatei bearbeiten. Ausschließlich root-Benutzer und Benutzer mit sudo-Rechten können diese Datei bearbeiten. Stellen Sie vorher also sicher, dass Sie auf Ihren neuen Benutzer Zugriff haben und dass auch die sudo-Rechte funktionieren. Andernfalls können Sie die Einstellung nie wieder rückgängig machen. Öffnen Sie die Datei mit nano:

$ sudo nano /etc/ssh/sshd_config

Mit den Pfeiltasten können Sie innerhalb der Datei nach oben und unten navigieren.

  • Root-Login deaktivieren

    Suchen Sie nach der PermitRootLogin-Zeile:

    PermitRootLogin     no

    Ändern Sie das yes in ein no und entfernen Sie das Hash-Symbol (#) am Anfang der Zeile, falls eines vorhanden ist.

  • Passwort-Authentifizierung deaktivieren

    Sollten Sie einen SSH-Key besitzen und auch bei anderen Benutzern kein Passwort verwenden, können Sie nun auch die Passwort-Authentifizierung deaktivieren. Suchen Sie dazu nach der PasswordAuthentication-Zeile:

    PasswordAuthentication no

    Entfernen Sie das Hash-Symbol (#) am Anfang der Zeile und ändern Sie das yes in ein no, falls nicht bereits no dasteht. Deaktivieren Sie die Passwort-Authentifizierung nicht, wenn Sie sich per Passwort auf Ihrem Server anmelden. Sonst können Sie sich künftig nicht mehr mit dem Server verbinden.

Sobald Sie fertig sind, können Sie die Datei mit CTRL+X schließen, mit Y speichern und mit ENTER bestätigen. Starten Sie anschließend SSH mit folgendem Befehl neu:

sudo systemctl restart sshd

Ab sofort ist es nicht mehr möglich sich als root-Benutzer oder mit einem Passwort auf diesem Server anzumelden. Mit Ihrem neuen Benutzer können Sie diese Einstellung über denselben Weg jederzeit rückgängig machen, indem Sie das no wieder in ein yes ändern. Denken Sie daran, dass Sie zum Öffnen der Datei ein sudo vor den Befehl setzen müssen.

Ergebnis

In den vorangegangenen 7 Schritten haben Sie gelernt wie Sie einen neuen Benutzer erstellen, den neuen Benutzer der sudo-Gruppe hinzufügen, sich über den neuen Benutzer mit dem Server verbinden, eine erste Firewall einrichten und auf die OpenSSH Konfiguration zugreifen. Damit haben Sie schon mal eine solide Basis, auf der Sie künftig weiter aufbauen können. Als nächste Schritte können Sie beispielsweise die Firewall erweitern oder den SSH Dienst weiter absichern.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get 20€ free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more