Zum Inhalt springen

Aufgabe 04 - Erster Kontakt: Server und Shell

Zu Zen-Modus wechseln

Sie nehmen Ihren eigenen Server in Betrieb, verschaffen sich einen Überblick über das System und beginnen die Betriebsdokumentation, die Sie das ganze Jahr begleitet (siehe Kapitel Server aufsetzen und härten). Der Lerneffekt liegt nicht im Absetzen der Befehle, sondern darin, aus deren Ausgabe ein Bild des Systems zu gewinnen und dieses Bild aufzuschreiben.

  • Kapitel Server aufsetzen und härten, Abschnitte Einen Server mieten bis Logs lesen.
  • Einen eigenen VPS bei Hetzner Cloud oder die von der Schule bereitgestellte Umgebung, ein Terminal und Git.
  • Das Repository aus Aufgabe 03.
  • Sie melden sich per SSH an einem Server an und bewegen sich in der Shell.
  • Sie ermitteln den Zustand eines Systems aus der Kommandozeile: Version, Ressourcen, Dienste, Logs.
  • Sie dokumentieren Eingriffe an einem Server so, dass sie nachvollziehbar und wiederholbar sind.
  • Reproduktion: Befehle nach Anleitung absetzen und Ausgaben wiedergeben (Teil A).
  • Reorganisation und Transfer: Programme über Pipes verketten und daraus eine Antwort gewinnen (Teil B).
  • Reflexion, Problemlösung und Urteilsbildung: den Systemzustand zusammenführen und offene Ports beurteilen (Teil C).

Die Übung ist auf etwa zwei Stunden ausgelegt.

  1. Melden Sie sich mit ssh an Ihrem Server an. Notieren Sie, was beim ersten Verbindungsaufbau zum Host-Schlüssel gefragt wurde, was Sie geantwortet haben und was Ihre Antwort bewirkt hat.

  2. Ermitteln Sie vier Angaben über das System und notieren Sie jeweils Befehl und Ergebnis: Betriebssystem und Version (cat /etc/os-release), Kernel (uname -a), Laufzeit seit dem letzten Neustart (uptime), Ihre Kennung und Gruppen (id).

  3. Bestimmen Sie den freien Plattenplatz (df -h) und den freien Arbeitsspeicher (free -h). Notieren Sie beide Werte mit dem heutigen Datum. Am Jahresende vergleichen Sie sie erneut.

  4. Sehen Sie sich ls -la /etc, ls -la /var/log und ls -la /var/www an. Beschreiben Sie in je einem Satz, was in diesen Verzeichnissen liegt.

  5. Tragen Sie die Eckdaten Ihrer Maschine als ersten Eintrag in docs/betrieb.md ein: IP-Adresse, Betriebssystem und Version, Servertyp, Standort, Datum der Inbetriebnahme.

  1. Legen Sie die Verzeichnisstruktur ~/uebungen/04/ mit einem einzigen Befehl an.

  2. Schreiben Sie die Liste aller laufenden Prozesse mit einer Umleitung in die Datei ~/uebungen/04/prozesse.txt.

  3. Zählen Sie mit einer Pipe aus drei Programmen, wie viele Zeilen dieser Datei das Wort root enthalten. Notieren Sie den Befehl und erklären Sie in je einem Satz, was jedes der drei Programme beiträgt.

  4. Finden Sie mit grep -r heraus, in welcher Datei unter /etc der SSH-Port konfiguriert ist. Notieren Sie Datei und Zeilennummer. Ändern Sie nichts.

  5. Setzen Sie einen Befehl ab, der fehlschlägt, etwa ls /gibtsnicht. Rufen Sie danach echo $? auf und erklären Sie den ausgegebenen Wert in zwei Sätzen. Rufen Sie dasselbe nach einem erfolgreichen Befehl auf und notieren Sie den Unterschied.

  1. Legen Sie eine Datei ~/uebungen/04/geheim.txt an. Setzen Sie die Rechte so, dass nur Sie sie lesen und schreiben dürfen und sonst niemand. Notieren Sie den verwendeten Zahlenwert und belegen Sie das Ergebnis mit der Ausgabe von ls -l.

  2. Ermitteln Sie mit systemctl status ssh, seit wann der SSH-Dienst läuft und unter welcher Kennung. Auf Fedora und RHEL heißt der Dienst sshd.

  3. Lesen Sie mit journalctl die letzten 50 Zeilen des SSH-Dienstes. Suchen Sie darin Ihre eigene Anmeldung aus Teil A und notieren Sie die Logzeile.

  4. Erklären Sie in drei bis vier Sätzen den Unterschied zwischen systemctl restart und systemctl reload und nennen Sie zu jedem einen Fall, in dem Sie es verwenden würden.

  5. Erstellen Sie mit systemctl list-units --type=service --state=running eine Liste der laufenden Dienste. Suchen Sie sich einen heraus, dessen Zweck Sie nicht kennen. Finden Sie mit systemctl status, man und der Paketbeschreibung heraus, was er tut, und beschreiben Sie ihn in zwei Sätzen.

  6. Ermitteln Sie mit ss -tulpn die belegten Netzwerkports. Legen Sie eine Tabelle mit den Spalten Port, Dienst, aus dem Internet erwartbar? an und füllen Sie sie aus. Diese Tabelle ist der Ausgangswert für Aufgabe 08, heben Sie sie auf.

  7. Beurteilen Sie in vier bis fünf Sätzen: Welche der offenen Ports würden Sie auf einem Server im Internet erwarten, welche nicht, und warum ist jeder offene Port eine Entscheidung, die man begründen muss?

  1. Warum melden Sie sich mit einem Schlüsselpaar an und nicht mit einem Passwort? Was passiert mit dem privaten Schlüssel?
  2. Wozu fragt SSH beim ersten Verbindungsaufbau nach dem Fingerprint des Servers?
  3. Was bedeuten die Rechte -rw-r----- für Eigentümer, Gruppe und alle anderen?
  4. Was bedeutet das Recht x bei einem Verzeichnis?
  5. Warum läuft ein Webserver unter einer eigenen Benutzerkennung und nicht als root?
  6. In welcher Reihenfolge gehen Sie vor, wenn ein Dienst nicht startet?
  7. Warum gehört eine geänderte Datei aus /etc in ein Git-Repository?

In docs/betrieb.md stehen die Eckdaten der Maschine und die Eingriffe dieser Übung. Eine Datei protokoll.md enthält die Befehle und Ausgaben aus den Teilen A bis C, die Porttabelle und die Beurteilung aus Teil C Punkt 7.