Einen Server unter Ubuntu 20.0 aufsetzen

Wenn man einen Server für seine eigene Website oder eine Datenbank betreiben möchte, hat man mehrere Möglichkeiten:

  • Einen kostenlosen Webspace mieten
  • Einen Affen die Arbeit machen lassen
  • Selber machen

Da die ersten beiden Punkte vermutlich überhaupt nicht die Zielgruppe dieses Artikels sind, machen wir uns keine weiteren Gedanken darüber. Stattdessen stürzen wir uns in die Arbeit!

Warum Ubuntu?

Warum nicht? Es gibt sicherlich viele andere Linux-Derivate da draußen, letztendlich ist es aber (bis auf Ausnahmen) vermutlich ein Glaubenskrieg und Ubuntu reicht für den Anfang perfekt aus.

Los gehts! Zunächst setze ich voraus, dass die Installation über ein Image schon vorhanden ist. Bei AWS ist das mit einem Klick erledigt.

Als allererstes: Über SSH einloggen (wie auch immer der Server beim Start konfiguriert ist) und das Root-Passwort ändern.

sudo passwd

Anschließend das ganze Ding einmal richtig schön updaten und auf den neuesten Stand bringen.

# Software-Releases laden
sudo apt update

# Pakete upgraden
sudo apt upgrade -y

# Etwaige überflüssige Header entfernen
sudo apt autoremove

Anschließend den Editor deiner Wahl installieren. Manche leben gefährlich und nutzen vim, ich mag eher die Luxusvariante:

sudo apt install mc -y

Dann: Hostname anpassen. Wie soll der Server heißen?

sudo mcedit /etc/hostname

Servername eintragen und speichern.

Im folgenden werden wir dem User root den Login-Zugang verweigern. Das hat zwei Gründe:

  1. “root” ist überall bekannt und wird gerne als Angriffsvektor benutzt.
  2. Siehe 1.

Also erstmal einen neuen User anlegen. Du kannst deinen eigenen Namen nehmen und musst nicht meinen benutzen, obwohl er sehr schön ist.

Achtung: Diese Schritte musst du nicht machen, wenn du bereits einen eigenen User bei der Installation von Ubuntu eingerichtet hast!

sudo adduser bjoern

Anschließend wird der User zum Chef befördert. Damit hat er dann die Möglichkeit, den Server komplett zu zerschießen.

sudo adduser bjoern sudo

Jetzt kümmern wir uns um den Login. Der normale Weg über Benutzername und Passwort ist soooooo 90er. Stattdessen nutzen wir die Private/Public-Key Methode.

Wenn du noch kein Keypaar hast, erkläre ich dir das in diesem Artikel.

Im Folgenden werden wir zum User wechseln und die Verzeichnisse erstellen.

su bjoern
cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh

Jetzt ist der Moment da, auf den alle so lange gewartet haben: Der Public-Key wird auf dem Server gespeichert. Hurra. Ab in die Datei:

mcedit authorized_keys

Und deinen Public-Key eintragen. Der beginnt mit ssh-rsa und sieht ungefähr so aus:

ssh-rsa TOTALVIELEZEICHEN bjoerns-public-key

Speichern und die Datei lesefähig machen:

chmod 644 authorized_keys

Ubuntu ist am Anfang so doof wie der Affe, der eigentlich den Server aufsetzen sollte. Also bearbeiten wir jetzt die Datei /etc/ssh/sshd_config und machen ein paar Anpassungen. Vieles davon ist schon vorhanden und muss einfach nur auskommentiert werden.

# Port ändern, wenn man kein VPN nutzt
Port 8029

# Root-Login verhindern
PermitRootLogin no

# Keyfile zum Einloggen nutzen
AuthorizedKeysFile %h/.ssh/authorized_keys

# Passwort-Login verbieten
PasswordAuthentication no

Anschließend den SSH Daemon neu starten:

sudo systemctl restart ssh

An dieser Stelle bietet es sich an, den Zugang zu testen. Deine aktuelle Session bleibt davon unbetroffen. Achtung: Stelle sicher, dass dein Key z.B. mit Pageant geladen ist!

Firewall aktivieren

Üblicherweise ist dein Server sofort im Internet verfügbar und ist in der gleichen Sekunde auch Angriffen ausgesetzt. Das sind simple Sachen wie: “Ich teste mal User root und ein Standardpasswort über SSH”. Natürlich ist da kein Mensch am Rechner, sondern eine Maschine, die vorgefertigte Skripts laufen lässt, um zufällige Server im Internet zu testen.

Deshalb solltest du eine Firewall aktivieren und nur den Traffic zulassen, mit dem du rechnest. Grundsätzlich gilt: Niemand darf rein, außer…

Eine Firewall richtest du z.B. über deinen Hosting-Provider ein. Geht das nicht, empfiehlt sich UFW in Ubuntu. Das ist eine einfache Software, die dir die komplexe Konfiguration abnimmt.

So funktionierts:

# Grundsätzlich jeden Traffic von außen blocken
sudo ufw default deny incoming

# Aber alles darf raus
sudo ufw default allow outgoing

# Eine bestimmte IP darf immer connecten, auf alle Ports
sudo ufw allow from 1.2.3.4 comment "Ich darf immer"

# Eine bestimmte IP darf nur auf einen Port connecten
sudo ufw allow from 1.2.3.4 to any port 22 comment "VPN von Oma"

# Alle dürfen HTTP/S Verkehr haben
sudo ufw allow 80
sudo ufw allow 443

# Firewall aktivieren
sudo ufw enable


Es lohnt sich also, mal über einen VPN nachzudenken, mit dem du dich auf deine Server verbindest…

Zusätzlicher Profitipp: Achte darauf, dass du selbst noch Zugang zum Server hast. Anders wäre doof.

Viel Spaß!

Björn Falszewski
3. Februar 2020
Disclaimer
Alle meine Artikel entstehen mit bestem Wissen und Gewissen, sind aber nicht perfekt und sollten immer nur als Ausgangspunkt für deine eigenen Recherchen bilden.

Sollte dir etwas Fehlerhaftes auffallen, freue ich mich über deine Nachricht!