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:
- “root” ist überall bekannt und wird gerne als Angriffsvektor benutzt.
- 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ß!
3. Februar 2020
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!