IT-SICHERHEIT WS1617 BENJAMIN KUHNERT Darmstadt, 25. Oktober 2016
Inhaltsverzeichnis 1 Allgemeine Hinweise 2 2 Linux Shell Grundlagen 4 2.1 Die Differenz von Option und Argument.......................... 4 2.2 Aufgaben.......................................... 5 2.3 Reflexion........................................... 6 3 Erweiterte Ver- und Bearbeitung von Textdateien 7 3.1 Aufgaben.......................................... 7 3.2 Reflexion........................................... 8 c Benjamin Kuhnert 1 Linux Tutorium I WS1617
1 Allgemeine Hinweise Neben dem Wissen selbst benötigst du auch geeignete Methoden (Vorgehensweisen), um sich einer Problemstellung nähern zu können. Zu Beginn deines Studiums hast du bereits erste Erfahrungen sammeln können. Mit den folgenden Aufgabenstellungen hast du die Möglichkeit, Defizite aufzuarbeiten oder bereits Gelerntes zu vertiefen. Aufgabenstruktur Die Aufgaben folgen dieser Struktur: Lernziel: Was soll erreicht werden? Aufgaben: Just do it! Reflexion: Überprüfung deines Lernerfolgs. Beispiele für die Darstellung von verschiedenen Informationen Befehle oder Bezeichnungen wie z. B. ls -l werden durch eine besondere Schreibweise hervorgehoben. Lernziele: Du kannst...... ein Lernziel erreichen. Dies könnte eine wichtige Information für dich sein. Aufgabe 1: Dies ist eine Aufgabenstellung.??? Frage: Alles klar? Bestimmte Aktionen können durch Tastenkürzel durchgeführt werden wie z. B. die Tabulator-Taste oder Umschalt-Taste. Pfadangaben werden wie folgt abgebildet: /home /itsec /myfile.txt c Benjamin Kuhnert 2 Linux Tutorium I WS1617
Dies ist ein Befehl in der Shell: find. -name *. tmp -exec rm {} \; Viel Erfolg und viel Spaß! c Benjamin Kuhnert 3 Linux Tutorium I WS1617
2 Linux Shell Grundlagen Lernziele: Du kannst...... kennst nützliche Tastenkürzel.... kennst den Unterschied zwischen Option und Argument.... kennst grundlegende Shellbefehle.... auf Verzeichnisebene navigieren.... Verzeichnisse und Dateien erstellen und löschen.... kannst Textdateien erstellen. 2.1 Die Differenz von Option und Argument Viele Shellbefehle lassen sich durch den Nutzer gezielt steuern. Es wird differenziert zwischen Option und Argument. Doch worin besteht nun der Unterschied? Ein Beispiel: Du möchtest den Inhalt des Verzeichnisses /root anzeigen lassen, aber die Ausgabenform von Spalten- zu Zeilen anpassen: ls -l /root Der Shellbefehl, also das Programm welches gestartet wird, ist ls. Die Option -l, welche erkennbar an dem führenden - ist, aktiviert die Listenausgabe. Das Argument /root, welches daran erkennbar ist, das es am Ende des Befehls steht, ist die eigentliche Eingabe für den Befehl, die dieser verarbeiten soll. Zusammengefasst beginnt ein Shellbefehl daher mit dem Programmnamen, den Optionen und wird durch Argumente abgeschlossen. Bevor du startest Zu Beginn der Aufgaben solltest du dich auf der KaliVM im Verzeichnis /root befinden. Starte eine Shell und überprüfe deinen aktuellen Pfad mit der Eingabe von pwd. Die Ausgabe sollte /root entsprechen. Alle Aufgaben sollten nur innerhalb einer Shell gelöst werden - die Verwendung eines Dateimanagers ist deshalb nicht erlaubt. Bevor du durchstarten kannst, solltest du dir ein paar Tastenkürzel 1 merken, die dir die Arbeit mit der Shell vereinfachen: Shell beenden: Ctrl + d (d wie done) Autovervollständigung: Shellinhalt löschen: Ctrl + l (l wie löschen) 1 Weitere Kürzel findest du im Linux Primer auf der da/sec Webseite unter https://www.dasec.h-da.de/teaching/ it-sicherheit-im-ws-20162017/. c Benjamin Kuhnert 4 Linux Tutorium I WS1617
Befehlshistorie durchblättern: Pfeiltasten oder, bzw. Ctrl + p (p wie previous) oder Ctrl + n (n wie next) Zum Anfang einer Zeile: Ctrl + a (a wie Anfang) Zum Ende einer Zeile: Ctrl + e (e wie Ende) 2.2 Aufgaben Aufgabe 1: Wechsle in das Verzeichnis /bin und lasse dir dessen Inhalt ausgeben.??? Frage: Welche Befehle hast du im ersten Praktikum bereits verwendet? Aufgabe 2: Wechsle nun mit einem einzigen Befehl zurück in das Verzeichnis /root.??? Frage: Mit welchem Befehl lässt sich ohne Angabe von Pfaden zurück in das Home-Verzeichnis des aktuell angemeldeten Nutzers wechseln? Aufgabe 3: Lasse die folgende Ausgaben auf dem Bildschirm ausgeben. Die erste und letzte Zeile sind nicht Teil der Ausgabe. Deine Shell nach dem Befehl diese Zeilen enthalten. Löse die Aufgabe mit nur einer Zeile: root@kali :~# echo... IT - Security 2016 Tutorium root@kali :~# W Aufgabe 4: Erstelle eine leere Datei mit dem Namen itsec.txt und vergewissere dich, das die Dateigröße genau 0 Byte groß ist. Aufgabe 5: Erstelle ein Verzeichnis mit dem Namen archiv und kopiere die in Aufgabe 4 erstellte Datei in das zuvor erstellte Verzeichnis. Verwende den Shellbefehl stat um die Zeitstempel der Originaldatei und der Kopie herauszufinden.??? Frage: Was fällt dir beim Vergleich der Zeitstempel auf???? Frage: Mit welcher Option lässt sich eine Kopie der Datei erstellen, sodass Original und Kopie die gleichen Zeitstempel (ausgenommen Change) enthalten? Aufgabe 6: Lösche nun das Verzeichnis, welches in Aufgabe 5 erstellt wurde. Aufgabe 7: Erstelle nur unter Zuhilfenahme des Shellbefehls echo eine Datei student.txt, welche deinen Namen enthält. Ermittle die Anzahl der Zeichen, die dein im Argument angegebene Namen enthält und lasse dir die Größe der Datei mit Hilfe von stat (Size) ausgeben.??? Frage: Was fällt dir durch den Vergleich von der Dateigröße und der Anzahl deiner ermittelten Zeichen auf? c Benjamin Kuhnert 5 Linux Tutorium I WS1617
Aufgabe 8: Lasse dir mit Hilfe des Shellbefehls xxd -g 1 student.txt die Bytes der Datei anzeigen. In der Mitte der Ausgabe sind jeweils die Bytes (in diesem Fall je Zeichen ein Byte) und die Ausgabe von druckbaren Zeichen auf der rechten Seite dargestellt.??? Frage: Welches ist das Zeichen, was nicht zu deinem Namen aus Aufgabe 7 gehört? Aufgabe 9: Korrigiere das Größenproblem und finde eine Option für den Shellbefehl echo, der verhindert, das die Datei nicht die korrekte Größe entspricht. Die Datei soll exakt die Anzahl der Zeichen deines Namens enthalten. Prüfe dein Ergebnis mit xxd. 2.3 Reflexion Shellbefehle beginnen mit dem Programmnamen, gefolgt von den Optionen und werden durch Argumente abgeschlossen. Häufig sind Optionen und Argumente Zusatzinformationen und sind beide deshalb optionale Angaben. Standardoptionen von Shellbefehlen können für die korrekte Lösung von Praktikumsaufgaben problematisch sein. Nutze den Shellbefehl man um die gewünschten Optionen herauszufinden. c Benjamin Kuhnert 6 Linux Tutorium I WS1617
3 Erweiterte Ver- und Bearbeitung von Textdateien Lernziele: Du kannst...... Textdateien schreiben und ausgeben.... Ausgaben von Befehlen verknüpfen und verarbeiten.... Ausgaben nach Suchkriterien filtern.... Ausgaben mit OpenSSL verschlüsseln und hashen. 3.1 Aufgaben Aufgabe 1: Erstelle eine Verzeichnisstruktur, die dem folgenden Aufbau entspricht: root@kali :~# ls -l archiv / total 16 drwxr - xr - x 2 root root 4096 Oct 21 14:34 books drwxr - xr - x 2 root root 4096 Oct 21 14:34 music drwxr - xr - x 2 root root 4096 Oct 21 14:34 videos Aufgabe 2: Erstelle in jedem Unterverzeichnis eine Textdatei content.csv Inhalt, sodass jedes der drei Unterverzeichnissen eine Datei enthält. mit dem folgenden id; name ; description Aufgabe 3: Erstelle im Verzeichnis archiv books in der Datei content.csv vier zusätzliche Textzeilen, die der Formatierung in der ersten Zeile entsprechen. Erstelle durch wiederholtes Aufrufen des echo Befehls doppelte Zeilen. Hierzu ein Beispiel: id; name ; description 0; C++ Programmieren ; Handbuch zur Programmiersprache 1; Kombinatorik ; Mathematik für Informatik 0; C++ Programmieren ; Handbuch zur Programmiersprache 1; Kombinatorik ; Mathematik für Informatik Aufgabe 4: Gib die Datei im Verzeichnis archiv books auf dem Bildschirm aus. Aufgabe 5: Die Ausgabe von Shellbefehlen lässt sich an andere Programme weiterreichen. Das Zeichen (pipe) leitet die Ausgabe eines Programms an die Eingabe eines anderen Programms weiter. Dadurch lassen sich komplexe Abläufe einfach realisieren. Lasse die Datei mit Hilfe des Befehls aus Aufgabe 4 verarbeiten, indem du folgendes Aufrufschema nutzt: root@kali :~/ archiv # cat books / content. csv sort??? Frage: Was hat die Verkettung der beiden Befehle bewirkt? Aufgabe 6: Füge am Ende des Befehls aus Aufgabe 5 uniq (Pipe und uniq) an.??? Frage: Wie wurde die Ausgabe beeinflusst? c Benjamin Kuhnert 7 Linux Tutorium I WS1617
Aufgabe 7: Suche in der Datei im Verzeichnis archiv books mit dem Suchbegriff Mathe um die id zu ermitteln. Nutze hierbei nur die Befehle cat, sort und grep. Doppelte Ausgaben sollen vermieden werden. Ein Beispiel zur Verwendung von grep ist wie folgt: root@kali :~/ archiv # echo -e " Wo ist der Text?\ nnicht hier!" grep " SUCH - STRING " Aufgabe 8: Den Befehl OpenSSL hast du bereits kennengelernt. Mit der Option sha256 zu diesem Befehl lässt sich ein Hashwert von Eingabedaten erzeugen. Erzeuge nun den Hashwert der Datei im Verzeichnis archiv books, indem du cat und OpenSSL verwendest. Aufgabe 9: Verschlüssele die Datei im Verzeichnis archiv books mit der Option aes-256-cbc und leite die Ausgabe in eine neue Datei um. Aufgabe 10: Entschlüssele die in Aufgabe 9 verschlüsselte Datei und Suche mit Hilfe von grep nach der Zahl 0 3.2 Reflexion Die Ausgabe von Shellbefehlen lässt sich durch das Pipe-Zeichen an weitere Programme weiterreichen. Damit kannst du komplexe Verarbeitungsschritte in einer Zeile realisieren. Grep ist ein mächtiges Werkzeug um Informationen in Dateien zu finden. Neben einfachen Suchbegriffen unterstützt es auch komplexe Ausdrücke, mit denen sich Muster in Daten finden lassen. c Benjamin Kuhnert 8 Linux Tutorium I WS1617