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.
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).
- Laden Sie ein Ubuntu Server ISO herunter (ubuntu.com/download/server)
- Erstellen Sie eine neue VM mit 2 GB RAM, 20 GB Festplatte
- Installieren Sie Ubuntu Server (minimal, ohne GUI)
- Notieren Sie sich die IP-Adresse
Option B: Cloud (kostenlos)
AWS Free Tier, Google Cloud Free Tier oder Azure for Students
- Registrieren Sie sich für einen Cloud-Anbieter
- Starten Sie eine kostenlose Linux-Instanz (t2.micro, e2-micro)
- Verbinden Sie sich per SSH
Option C: Docker
Falls Docker installiert ist, können Sie einen Container starten:
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.
- Finden Sie mit einem Befehl heraus, in welchem Verzeichnis Sie sich befinden.
- Wechseln Sie in das Verzeichnis
/var/log. - Listen Sie den Inhalt von
/var/logauf (mit detaillierten Informationen). - Zeigen Sie die letzten 10 Zeilen der Datei
syslog(odermessages) an. - Verfolgen Sie neue Einträge in der Logdatei live (mit
tail -f). Brechen Sie mit Strg+C ab.
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
- Erstellen Sie in Ihrem Home-Verzeichnis einen Ordner namens
test. - Erstellen Sie darin eine Datei
hallo.txtmit dem Inhalt "Hallo Welt". - Kopieren Sie die Datei nach
hallo2.txtim selben Verzeichnis. - Verschieben Sie
hallo2.txtin den Ordner/tmp. - Löschen Sie den Ordner
test(mit Inhalt).
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
- Erstellen Sie einen neuen Benutzer namens
max. - Setzen Sie ein Passwort für den Benutzer.
- Erstellen Sie eine Gruppe namens
entwicklung. - Fügen Sie den Benutzer
maxzur Gruppeentwicklunghinzu. - Überprüfen Sie die Mitgliedschaft von
max.
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
- Erstellen Sie eine Datei
script.shmit folgendem Inhalt:#!/bin/bash echo "Hallo" - Machen Sie die Datei für den Besitzer ausführbar (andere nur lesen).
- Ändern Sie die Rechte so, dass die Gruppe ebenfalls ausführen darf.
- Ändern Sie den Besitzer der Datei auf
maxund die Gruppe aufentwicklung.
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.
- Finden Sie die IP-Adresse Ihres Servers heraus.
- Testen Sie die Erreichbarkeit von google.de (mit ping).
- Zeigen Sie die Routing-Tabelle an.
- Finden Sie heraus, welche Nameserver (DNS) konfiguriert sind.
- Prüfen Sie, welche Ports auf Ihrem Server geöffnet sind (mit netstat oder ss).
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
- Installieren Sie den OpenSSH-Server (falls nicht vorhanden).
- Starten Sie den SSH-Dienst und aktivieren Sie den Autostart.
- Ändern Sie den SSH-Port von 22 auf 2222.
- Verbieten Sie Root-Login per SSH.
- Starten Sie den SSH-Dienst neu und testen Sie die Verbindung.
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
- Installieren Sie den Apache-Webserver.
- Stellen Sie sicher, dass der Dienst läuft und automatisch startet.
- Erstellen Sie eine eigene HTML-Seite unter
/var/www/html/index.html. - Testen Sie die Seite im Browser (http://IP-Adresse).
- Prüfen Sie die Zugriffslogs unter
/var/log/apache2/access.log.
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.
- Installieren Sie UFW (falls nicht vorhanden).
- Erlauben Sie SSH (Port 22 oder 2222).
- Erlauben Sie HTTP (Port 80) für den Webserver.
- Aktivieren Sie die Firewall.
- Zeigen Sie den Status und die Regeln an.
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
- Aktualisieren Sie die Paketliste.
- Zeigen Sie verfügbare Updates an.
- Installieren Sie alle Updates (sicherheitskritische zuerst).
- Richten Sie automatische Sicherheitsupdates ein (unattended-upgrades).
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.
- Installieren Sie Docker (Anleitung für Ubuntu: docs.docker.com).
- Prüfen Sie die Docker-Installation mit
docker --version. - Starten Sie einen ersten Container:
docker run hello-world. - Starten Sie einen Nginx-Container im Hintergrund mit Portweiterleitung.
- Zeigen Sie laufende Container an.
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
- Erstellen Sie ein Verzeichnis
mein-dockermit einerDockerfile. - Das Dockerfile soll auf
nginx:alpinebasieren und eine eigene HTML-Seite kopieren. - Bauen Sie das Image mit
docker build -t mein-nginx . - Starten Sie einen Container aus Ihrem eigenen Image.
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
Alle wichtigen Linux-Kommandos und Grundlagen.
Zu LinuxCheat Sheet für Bash, zsh und Co.
Zu Terminal-BefehlenTCP/IP, Routing, DNS – Grundlagen für Server-Administratoren.
Zu NetzwerkenVertiefung zu Containern und Orchestrierung.
Zu Docker