Linux Server Lab

Praktische Übungen zur Linux-Serveradministration

Linux Server Lab

Praktische Übungen sind der beste Weg, Linux-Serveradministration zu lernen. Diese Seite bietet eine Sammlung von Übungen – von einfachen Grundlagen bis zu fortgeschrittenen Themen wie Docker und Sicherheit. Ideal für Einsteiger und angehende Administratoren, die praktische Erfahrung sammeln möchten.

Level 1: Grundlagen Level 2: Netzwerk & Dienste Level 3: Docker

1. Lab-Umgebung einrichten

Bevor es losgeht, brauchen Sie eine Umgebung zum Üben. Hier sind drei Möglichkeiten:

Option A: Virtuelle Maschine (VM)

Installieren Sie VirtualBox oder VMware Workstation Player (kostenlos).

  1. Laden Sie ein Ubuntu Server ISO herunter (ubuntu.com/download/server)
  2. Erstellen Sie eine neue VM mit 2 GB RAM, 20 GB Festplatte
  3. Installieren Sie Ubuntu Server (minimal, ohne GUI)
  4. Notieren Sie sich die IP-Adresse

Option B: Cloud (kostenlos)

AWS Free Tier, Google Cloud Free Tier oder Azure for Students

  1. Registrieren Sie sich für einen Cloud-Anbieter
  2. Starten Sie eine kostenlose Linux-Instanz (t2.micro, e2-micro)
  3. Verbinden Sie sich per SSH

Option C: Docker

Falls Docker installiert ist, können Sie einen Container starten:

$ docker run -it --name linux-lab ubuntu:22.04 bash

Das ist ideal für Befehls-Übungen, aber nicht für Systemd-Dienste.

2. Grundlagen (Level 1) – Dateisystem, Benutzer, Rechte

Diese Übungen sollten Sie als Erstes durchführen.

Übung 1.1: Dateisystem erkunden
  1. Finden Sie mit einem Befehl heraus, in welchem Verzeichnis Sie sich befinden.
  2. Wechseln Sie in das Verzeichnis /var/log.
  3. Listen Sie den Inhalt von /var/log auf (mit detaillierten Informationen).
  4. Zeigen Sie die letzten 10 Zeilen der Datei syslog (oder messages) an.
  5. Verfolgen Sie neue Einträge in der Logdatei live (mit tail -f). Brechen Sie mit Strg+C ab.
Lösungen:
# 1. Aktuelles Verzeichnis anzeigen
pwd

# 2. In /var/log wechseln
cd /var/log

# 3. Detaillierte Liste
ls -la

# 4. Letzte 10 Zeilen von syslog
tail /var/log/syslog

# 5. Live verfolgen
tail -f /var/log/syslog
Übung 1.2: Dateien und Verzeichnisse anlegen
  1. Erstellen Sie in Ihrem Home-Verzeichnis einen Ordner namens test.
  2. Erstellen Sie darin eine Datei hallo.txt mit dem Inhalt "Hallo Welt".
  3. Kopieren Sie die Datei nach hallo2.txt im selben Verzeichnis.
  4. Verschieben Sie hallo2.txt in den Ordner /tmp.
  5. Löschen Sie den Ordner test (mit Inhalt).
Lösungen:
# 1. Ordner erstellen
mkdir ~/test

# 2. Datei mit Inhalt erstellen
echo "Hallo Welt" > ~/test/hallo.txt

# 3. Kopieren
cp ~/test/hallo.txt ~/test/hallo2.txt

# 4. Verschieben nach /tmp
mv ~/test/hallo2.txt /tmp/

# 5. Ordner mit Inhalt löschen
rm -rf ~/test
Übung 1.3: Benutzer und Gruppen verwalten
  1. Erstellen Sie einen neuen Benutzer namens max.
  2. Setzen Sie ein Passwort für den Benutzer.
  3. Erstellen Sie eine Gruppe namens entwicklung.
  4. Fügen Sie den Benutzer max zur Gruppe entwicklung hinzu.
  5. Überprüfen Sie die Mitgliedschaft von max.
Lösungen:
# 1. Benutzer anlegen
sudo useradd -m max

# 2. Passwort setzen
sudo passwd max

# 3. Gruppe anlegen
sudo groupadd entwicklung

# 4. Benutzer zur Gruppe hinzufügen
sudo usermod -aG entwicklung max

# 5. Mitgliedschaft prüfen
groups max
Übung 1.4: Dateirechte ändern
  1. Erstellen Sie eine Datei script.sh mit folgendem Inhalt: #!/bin/bash echo "Hallo"
  2. Machen Sie die Datei für den Besitzer ausführbar (andere nur lesen).
  3. Ändern Sie die Rechte so, dass die Gruppe ebenfalls ausführen darf.
  4. Ändern Sie den Besitzer der Datei auf max und die Gruppe auf entwicklung.
Lösungen:
# 1. Datei erstellen
echo '#!/bin/bash' > script.sh
echo 'echo "Hallo"' >> script.sh

# 2. Ausführbar für Besitzer (rwx r-- r--)
chmod 744 script.sh

# 3. Gruppe auch ausführen (rwx r-x r--)
chmod 754 script.sh

# 4. Besitzer und Gruppe ändern
sudo chown max:entwicklung script.sh

3. Netzwerk & Dienste (Level 2)

Jetzt wird der Server zum richtigen Server – mit Netzwerkdiensten.

Übung 2.1: Netzwerkkonfiguration
  1. Finden Sie die IP-Adresse Ihres Servers heraus.
  2. Testen Sie die Erreichbarkeit von google.de (mit ping).
  3. Zeigen Sie die Routing-Tabelle an.
  4. Finden Sie heraus, welche Nameserver (DNS) konfiguriert sind.
  5. Prüfen Sie, welche Ports auf Ihrem Server geöffnet sind (mit netstat oder ss).
Lösungen:
# 1. IP-Adresse anzeigen
ip addr show
oder: hostname -I

# 2. Ping testen
ping -c 4 google.de

# 3. Routing-Tabelle
ip route show

# 4. DNS-Server
cat /etc/resolv.conf

# 5. Offene Ports
ss -tulpn
Übung 2.2: SSH-Server konfigurieren
  1. Installieren Sie den OpenSSH-Server (falls nicht vorhanden).
  2. Starten Sie den SSH-Dienst und aktivieren Sie den Autostart.
  3. Ändern Sie den SSH-Port von 22 auf 2222.
  4. Verbieten Sie Root-Login per SSH.
  5. Starten Sie den SSH-Dienst neu und testen Sie die Verbindung.
Lösungen:
# 1. SSH-Server installieren
sudo apt update && sudo apt install openssh-server

# 2. Dienst starten und aktivieren
sudo systemctl start ssh
sudo systemctl enable ssh

# 3. Port ändern
sudo nano /etc/ssh/sshd_config
Zeile: Port 2222

# 4. Root-Login verbieten
PermitRootLogin no

# 5. Neustart
sudo systemctl restart ssh
Übung 2.3: Webserver (Apache/Nginx) installieren
  1. Installieren Sie den Apache-Webserver.
  2. Stellen Sie sicher, dass der Dienst läuft und automatisch startet.
  3. Erstellen Sie eine eigene HTML-Seite unter /var/www/html/index.html.
  4. Testen Sie die Seite im Browser (http://IP-Adresse).
  5. Prüfen Sie die Zugriffslogs unter /var/log/apache2/access.log.
Lösungen:
# 1. Apache installieren
sudo apt install apache2

# 2. Status prüfen und Autostart
sudo systemctl status apache2
sudo systemctl enable apache2

# 3. Eigene HTML-Seite
echo "<h1>Mein Linux Server</h1>" | sudo tee /var/www/html/index.html

# 4. Im Browser testen
http://ihre-ip-adresse

# 5. Logs ansehen
sudo tail -f /var/log/apache2/access.log

4. Sicherheit (Level 2)

Firewall, Updates und grundlegende Sicherheitsmaßnahmen.

Übung 3.1: Firewall mit UFW (Uncomplicated Firewall)
  1. Installieren Sie UFW (falls nicht vorhanden).
  2. Erlauben Sie SSH (Port 22 oder 2222).
  3. Erlauben Sie HTTP (Port 80) für den Webserver.
  4. Aktivieren Sie die Firewall.
  5. Zeigen Sie den Status und die Regeln an.
Lösungen:
# 1. UFW installieren
sudo apt install ufw

# 2. SSH erlauben (angepassten Port verwenden)
sudo ufw allow 2222/tcp

# 3. HTTP erlauben
sudo ufw allow 80/tcp

# 4. Firewall aktivieren
sudo ufw enable

# 5. Status anzeigen
sudo ufw status verbose
Übung 3.2: System-Updates und Sicherheitspatches
  1. Aktualisieren Sie die Paketliste.
  2. Zeigen Sie verfügbare Updates an.
  3. Installieren Sie alle Updates (sicherheitskritische zuerst).
  4. Richten Sie automatische Sicherheitsupdates ein (unattended-upgrades).
Lösungen:
# 1. Paketliste aktualisieren
sudo apt update

# 2. Verfügbare Updates anzeigen
apt list --upgradable

# 3. Updates installieren
sudo apt upgrade -y

# 4. Automatische Sicherheitsupdates
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

5. Docker – Container-Grundlagen (Level 3)

Container sind heute Standard – erste Schritte mit Docker.

Übung 4.1: Docker installieren und erste Container
  1. Installieren Sie Docker (Anleitung für Ubuntu: docs.docker.com).
  2. Prüfen Sie die Docker-Installation mit docker --version.
  3. Starten Sie einen ersten Container: docker run hello-world.
  4. Starten Sie einen Nginx-Container im Hintergrund mit Portweiterleitung.
  5. Zeigen Sie laufende Container an.
Lösungen:
# 1. Docker installieren (Ubuntu)
sudo apt update
sudo apt install docker.io
sudo systemctl enable docker
sudo systemctl start docker

# 2. Version prüfen
docker --version

# 3. Hello-World
docker run hello-world

# 4. Nginx im Hintergrund
docker run -d -p 8080:80 --name mein-nginx nginx

# 5. Laufende Container
docker ps
Übung 4.2: Eigene Docker-Images bauen
  1. Erstellen Sie ein Verzeichnis mein-docker mit einer Dockerfile.
  2. Das Dockerfile soll auf nginx:alpine basieren und eine eigene HTML-Seite kopieren.
  3. Bauen Sie das Image mit docker build -t mein-nginx .
  4. Starten Sie einen Container aus Ihrem eigenen Image.
Lösungen:
# Dockerfile erstellen
cd ~
mkdir mein-docker
cd mein-docker
nano Dockerfile

# Inhalt der Dockerfile:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

# index.html erstellen
echo "<h1>Mein eigenes Nginx-Image</h1>" > index.html

# Image bauen
docker build -t mein-nginx .

# Container starten
docker run -d -p 8081:80 --name mein-eigener-nginx mein-nginx

6. Troubleshooting – Fehlersuche

Typische Probleme erkennen und lösen.

Problem: Dienst startet nicht

Szenario: Apache startet nicht nach Konfigurationsänderung.

Lösungsansätze:

  • Status prüfen: systemctl status apache2
  • Logs ansehen: journalctl -u apache2 -xe
  • Konfiguration testen: apache2ctl configtest

Problem: Keine Netzwerkverbindung

Szenario: Server ist nicht erreichbar.

Lösungsansätze:

  • IP-Konfiguration prüfen: ip addr show
  • Gateway testen: ping -c 3 $(ip route | grep default | awk '{print $3}')
  • DNS testen: ping -c 3 google.de
  • Firewall prüfen: sudo ufw status

Problem: Kein Speicherplatz

Szenario: "No space left on device" Fehler.

Lösungsansätze:

  • Festplattenauslastung prüfen: df -h
  • Große Dateien finden: find / -type f -size +100M 2>/dev/null
  • Log-Dateien bereinigen: sudo journalctl --vacuum-time=7d

7. Admin-Checkliste für neue Server

Eine Checkliste für die Grundkonfiguration eines neuen Linux-Servers.

  • System aktualisiert (sudo apt update && sudo apt upgrade)
  • Hostname gesetzt (sudo hostnamectl set-hostname server.example.com)
  • SSH konfiguriert (Port ändern, Root-Login deaktivieren, Schlüssel)
  • Firewall aktiviert (UFW / iptables) mit grundlegenden Regeln
  • Fail2ban installiert (Schutz vor Brute-Force-Angriffen)
  • Automatische Sicherheitsupdates aktiviert (unattended-upgrades)
  • NTP konfiguriert (Zeitsynchronisation)
  • Monitoring eingerichtet (z.B. netdata, prometheus node exporter)
  • Backup-Strategie definiert (Daten, Konfigurationen)
  • Log-Rotation konfiguriert (logrotate)

Weiterführende Themen

Linux Grundlagen

Alle wichtigen Linux-Kommandos und Grundlagen.

Zu Linux
Terminal-Befehle

Cheat Sheet für Bash, zsh und Co.

Zu Terminal-Befehlen
Netzwerkgrundlagen

TCP/IP, Routing, DNS – Grundlagen für Server-Administratoren.

Zu Netzwerken
Docker & Container

Vertiefung zu Containern und Orchestrierung.

Zu Docker