Linux
0

Linux Server: Grundkonfiguration

In diesem Beitrag zeige ich dir Schritt für Schritt, wie du einen Linux-Server grundlegend konfigurierst – als stabile Basis für verschiedenste Projekte. In meinem Fall wird der Server später als vollständig funktionsfähiger Mailserver dienen, der über das Internet erreichbar sein soll. Aus diesem Grund ist eine sichere Grundkonfiguration besonders wichtig.

Als Ausgangspunkt dient ein kostengünstiger VPS, wie er bei vielen Hosting-Anbietern verfügbar ist. In der Regel ist bereits eine öffentliche IPv4-Adresse enthalten, über die der Server erreichbar ist. Optional kann eine eigene Domain gebucht werden, um den Server künftig auch unter einem einprägsamen Namen ansprechen zu können.

🖥️ Schritt 1: SSH-Verbindung zum Server herstellen

Um den Server administrieren zu können, wird zunächst eine SSH-Verbindung aufgebaut. Je nach Betriebssystem stehen dir verschiedene Möglichkeiten zur Verfügung:

  • Windows: Nutze die PowerShell, das Terminal oder ein externes Programm wie PuTTY
  • macOS / Linux: Öffne einfach ein Terminal
ssh root@deine-server-ip

Beim ersten Verbindungsaufbau erhältst du eine Sicherheitsabfrage zur Authentizität des Servers (der sogenannte „Fingerprint“ ist noch nicht bekannt). Bestätige diese Meldung mit yes . Anschließend wirst du zur Eingabe des Passworts für den Benutzer root aufgefordert.

♻️ Schritt 2: System aktualisieren

Bevor du mit der Einrichtung des Servers fortfährst, solltest du das System auf den aktuellen Stand bringen. So stellst du sicher, dass alle sicherheitsrelevanten Updates sowie Paketverbesserungen installiert sind – besonders wichtig bei frisch installierten Images vom Hosting-Anbieter.

Paketlisten aktualisieren und alle Updates installieren:

apt update && sudo apt upgrade -y

Dieser Befehl führt zwei Schritte in einem Durchlauf aus:

  • apt update: Aktualisiert die Paketinformationen
  • apt upgrade -y: Installiert alle verfügbaren Updates automatisch ohne weitere Rückfrage

(Optional) Neustart nach Kernel-Update:

Falls ein Kernel oder Systempakete aktualisiert wurden, sollte der Server anschließend neu gestartet werden:

reboot

Nach dem Reboot kannst du dich erneut per SSH verbinden:

ssh root@deine-server-ip

🔧 Schritt 3: Hostname korrekt setzen

Ein Server sollte immer über einen vollqualifizierten Domänennamen (FQDN) verfügen – beispielsweise host01.degen-dev.de. Der Hostname lässt sich mit folgendem Befehl setzen:

hostnamectl set-hostname host01.degen-dev.de

Anschließend sollte die Datei /etc/hosts geprüft und gegebenenfalls angepasst werden:

nano /etc/hosts

Der Inhalt sollte wie folgt aussehen:

127.0.0.1   localhost
127.0.1.1   host01.degen-dev.de

# (Optional) IPv6:
::1         localhost ip6-localhost ip6-loopback

Ein Neustart des Servers ist empfohlen. Den Hostnamen kannst du über folgenden Befehl prüfen:

hostnamectl

Sollte zeigen:

Static hostname: host01.degen-dev.de

📌 Hinweis zur DNS-Rückauflösung (PTR-Record)
Achte darauf, dass dein Hosting-Anbieter einen PTR-Record (Reverse DNS) für die öffentliche IP-Adresse des Servers einrichtet, der auf denselben Hostnamen zeigt – in diesem Fall host01.degen-dev.de. Dies ist insbesondere für Mailserver entscheidend, da viele empfangende Server nur E-Mails annehmen, wenn die Rückauflösung korrekt funktioniert.

🕓 Schritt 4: Zeitzone, Uhrzeit und Sprache konfigurieren

Für einen stabilen und nachvollziehbaren Betrieb – insbesondere bei Logging, Cronjobs und E-Mail-Versand – ist es wichtig, dass die Systemzeit korrekt eingestellt ist. Zusätzlich sollte die Zeitzone auf den Standort des Servers bzw. Administrators abgestimmt und die Sprache für die Kommandozeilenausgabe gesetzt werden.

Zeitzone festlegen

Die Zeitzone kann mithilfe des folgenden Befehls interaktiv oder direkt gesetzt werden. Für Deutschland wird in der Regel Europe/Berlin verwendet:

timedatectl set-timezone Europe/Berlin

Die aktuelle Zeiteinstellung kannst du überprüfen mit:

timedatectl status

Zeitsynchronisierung sicherstellen

Stelle sicher, dass die Zeit automatisch über einen NTP-Dienst synchronisiert wird. Unter Debian ist chrony eine moderne und zuverlässige Lösung für die Zeitsynchronisierung. Installiere und aktiviere chrony wie folgt:

sudo apt install chrony
sudo systemctl enable --now chrony

Nach der Installation kannst du den Synchronisationsstatus mit folgendem Befehl überprüfen:

chronyc tracking

Spracheinstellungen (Locale) konfigurieren

Für deutsche Ausgaben auf der Konsole oder Skripten kann die Systemsprache auf de_DE.UTF-8 umgestellt werden. Du kannst die verfügbaren Sprachpakete konfigurieren mit:

sudo dpkg-reconfigure locales

Wähle de_DE.UTF-8 (und optional weitere Sprachen) aus und lege diese als Standard fest.

🧱 Schritt 5: Firewall einrichten (optional, empfohlen)

Auch auf einem frischen Server sollten nur die Ports offen sein, die wirklich benötigt werden. Eine Firewall schützt den Server zuverlässig vor ungewollten Zugriffen und ist insbesondere bei öffentlich erreichbaren Diensten (z. B. Mailserver, Webserver, SSH) dringend zu empfehlen.

Für einfache Firewall-Regeln bietet sich das Tool UFW (Uncomplicated Firewall) an, das eine benutzerfreundliche Oberfläche für iptables bzw. nftables bereitstellt.

UFW installieren:

apt install ufw

Grundregeln setzen:

Zunächst erlauben wir nur SSH-Zugriff, damit du nicht ausgesperrt wirst:

ufw allow OpenSSH

Firewall aktivieren:

ufw enable

Status prüfen:

ufw status verbose

📌 Hinweis zu anderen Firewall-Lösungen
Alternativ zur UFW kann auch direkt mit nftables gearbeitet werden – dies ist das moderne Standard-Backend unter Debian 12. UFW reicht jedoch in vielen Fällen aus und ist für den Einstieg deutlich einfacher zu handhaben.

🔐 Schritt 6: SSH & Benutzerzugang absichern

Bevor du den Server weiter einrichtest, solltest du den Zugang absichern. Ziel dieses Schrittes:

  • 🔒 Den direkten SSH-Login als root deaktivieren
  • 👤 Einen eigenen Benutzer mit sudo-Rechten anlegen
  • 🗝️ (Optional, aber empfohlen) SSH-Schlüssel zur Anmeldung verwenden
  • ✅ Alle weiteren Arbeiten nur noch über den neuen Benutzer erledigen

Benutzer mit sudo-Rechten anlegen

Ersetze tobias durch deinen gewünschten Benutzernamen:

adduser tobias
usermod -aG sudo tobias

Während des Anlegens wird ein Passwort für den Benutzer abgefragt. Dieses Passwort benötigst du später, wenn du dich mit dem neuen Benutzer anmeldest oder sudo verwendest.

SSH-Schlüssel auf deinem Client erzeugen

Da wir aktuell nur ein Passwort für tobias haben, erzeugen wir auf deinem lokalen Rechner ein neues Schlüsselpaar, um den späteren Login sicherer zu machen.

Unter PowerShell, Linux, macOS oder WSL:

ssh-keygen -t ed25519 -C "tobias@degen-dev.de"
  • Mit ENTER bestätigen, um den Standardpfad (~/.ssh/id_ed25519) zu nutzen
  • Optional: eine Passphrase für zusätzlichen Schutz eingeben

Der öffentliche Schlüssel befindet sich danach in:

~/.ssh/id_ed25519.pub

Öffentlichen Schlüssel auf den Server hochladen

Melde dich weiterhin als root am Server an und kopiere den öffentlichen Schlüssel für den neuen Benutzer:

mkdir -p /home/tobias/.ssh
nano /home/tobias/.ssh/authorized_keys
  • Den Inhalt deiner lokalen Datei ~/.ssh/id_ed25519.pub hier einfügen
  • Datei speichern und schließen

Rechte anpassen:

chown -R tobias:tobias /home/tobias/.ssh
chmod 700 /home/tobias/.ssh
chmod 600 /home/tobias/.ssh/authorized_keys

Test: SSH-Login mit neuem Benutzer

Öffne ein zweites Terminal und teste den Login:

ssh tobias@host01.degen-dev.de

Wenn alles funktioniert, wirst du ggf. nur nach der Passphrase des Schlüssels gefragt – nicht nach dem Benutzerpasswort. Wenn der Login erfolgreich ist, kannst du die Root-Session schließen. Ab sofort arbeitest du mit:

sudo <befehl>

Beispiel:

sudo apt update
sudo apt install <paketname>

Root-Login per SSH deaktivieren

Wenn der Login mit dem neuen Benutzer funktioniert, kannst du den direkten Root-Login sperren:

sudo nano /etc/ssh/sshd_config

Ändere oder ergänze:

PermitRootLogin no

(Optional, nur wenn Schlüssel-Login funktioniert):

PasswordAuthentication no

SSH-Dienst neu starten:

sudo systemctl restart ssh

📌 Falls PasswordAuthentication no keine Wirkung zeigt
Wenn die Einstellung in der Hauptkonfigurationsdatei /etc/ssh/sshd_config nicht greift, überprüfe zusätzlich das Verzeichnis /etc/ssh/sshd_config.d/ auf weitere Konfigurationsdateien. Diese können über Include-Anweisungen in der sshd_config eingebunden werden. Prüfe, ob in einer dieser Dateien möglicherweise PasswordAuthentication yes gesetzt ist.

Falls weiterhin Passwort-Logins möglich sind, kannst du außerdem versuchen, folgende Optionen in der sshd_config zu ergänzen oder anzupassen:

UsePAM no
ChallengeResponseAuthentication no

Danach den SSH-Dienst neu starten:

sudo systemctl restart ssh

Tags: debian, linux, server, ssh

Ähnliche Beiträge

Es wurden keine Ergebnisse gefunden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.