Technische Daten im Terminal sicher finden und untersuchen
Du kennst bereits die grundlegende Orientierung auf einem Linux-System. Jetzt lernst du, Linux als Werkzeug für technische Analyse zu verwenden: Dateien einordnen, große Datenbestände kontrolliert betrachten, gezielt suchen, Ergebnisse reduzieren, zählen und sichern.
Dateisystem und Pfade sicher lesen
Technische Analyse beginnt oft damit, den richtigen Datenbestand zu finden. Deshalb musst du verstehen, wie Linux Dateien und Verzeichnisse strukturiert.
Das gemeinsame Wurzelverzeichnis
Linux verwendet normalerweise keine Laufwerksbuchstaben wie C: oder D:. Die Verzeichnisstruktur beginnt am Root-Verzeichnis /.
/
├── home
├── etc
├── var
│ └── log
├── tmp
└── data
├── case01
├── case02
└── capturesWichtige Verzeichnisse einordnen
/home enthält typischerweise Benutzerverzeichnisse, /etc häufig Konfigurationen, /var/log oft Logdateien. Analyseumgebungen verwenden zusätzlich häufig eigene Datenpfade wie /data.
/home/analyst Benutzerbereich /etc Konfigurationen /var/log Logs /tmp temporäre Daten /data Analyse- und Falldaten
Absolute und relative Pfade
Ein absoluter Pfad beginnt immer bei /. Ein relativer Pfad beginnt an deinem aktuellen Standort.
ABSOLUT /data/case01/network.log RELATIV bei aktuellem Verzeichnis /data case01/network.log
., .. und ~
. aktuelles Verzeichnis .. übergeordnetes Verzeichnis ~ eigenes Home-Verzeichnis cd .. cd ~
Diese drei Schreibweisen begegnen dir sehr häufig und helfen bei der Navigation ohne lange Pfade.
Dateien nach Typ, Größe und Sichtbarkeit einordnen
Bevor du Daten analysierst, solltest du wissen, womit du es zu tun hast.
Mehr Informationen mit ls -l
-rw-r----- 1 analyst analysts 18342 Sep 15 09:14 connections.log drwxr-x--- 2 analyst analysts 4096 Sep 15 09:20 captures
Du erkennst unter anderem Dateityp, Rechte, Eigentümer, Größe, Änderungszeit und Namen.
Größen lesbar anzeigen
ls -lh stellt Größen verständlicher dar.
18K connections.log 902K dns.log 47M traffic.log 1.8G capture.pcap
Bei großen Dateien solltest du nicht automatisch den gesamten Inhalt ausgeben.
Versteckte Dateien
Einträge, deren Name mit einem Punkt beginnt, werden häufig ausgeblendet. Mit ls -a werden sie sichtbar.
.profile .bashrc .config
Dateityp mit file prüfen
Eine Dateiendung ist nur ein Hinweis. Mit file kann Linux versuchen, den tatsächlichen Typ einzuordnen.
file traffic.pcap file export.dat
Nicht jede Datei wird mit cat geöffnet
Für technische Massendaten brauchst du Werkzeuge, mit denen du gezielt statt vollständig liest.
cat nur für kleine Dateien
cat notes.txt ist für kurze Inhalte praktisch. Eine Datei mit hunderttausenden Zeilen würde jedoch vollständig durch das Terminal laufen.
Große Dateien mit less
less connections.log Pfeile navigieren Leertaste weiterblättern b zurückblättern /BEGRIFF suchen n nächster Treffer q beenden
Damit kannst du große Textdateien kontrolliert untersuchen.
Mit head den Aufbau erkennen
head -n 5 connections.log timestamp source destination port protocol 10:14:21 192.168.10.24 203.0.113.25 443 TCP
Die ersten Zeilen verraten oft, wie eine Datei aufgebaut ist und welche Felder enthalten sind.
Mit tail die jüngsten Einträge prüfen
tail system.log tail -f system.log CTRL + C laufende Anzeige beenden
tail -f eignet sich, um zu beobachten, ob eine Logdatei neue Einträge erhält.
Mit grep große Datenmengen reduzieren
Eine technische Datei kann hunderttausende Zeilen enthalten. Entscheidend ist deshalb nicht, alles zu lesen, sondern gezielt relevante Zeilen zu finden.
Nach einer IP-Adresse suchen
grep "203.0.113.25" connections.log
Aus einer großen Datei werden nur die Zeilen ausgegeben, die die gesuchte Zeichenfolge enthalten.
Nach Begriffen, Ports oder Domains suchen
grep "ERROR" system.log grep "failed" authentication.log grep "443" connections.log grep "example.org" dns.log
Suche verfeinern
grep -i "error" system.log → ignoriert Groß- und Kleinschreibung grep -n "ERROR" system.log → zeigt Zeilennummern grep -c "ERROR" system.log → zählt Trefferzeilen
Von 500.000 Zeilen zu 42 Treffern
wc -l connections.log 500000 connections.log grep -c "203.0.113.25" connections.log 42
Genau diese Reduktion ist ein grundlegendes Prinzip technischer Massendatenauswertung.
Aus Einzelbefehlen wird eine Verarbeitungskette
Mit einer Pipe wird die Ausgabe eines Befehls direkt an den nächsten Befehl weitergegeben.
Die Pipe |
grep "203.0.113.25" connections.log | grep "443" Datei ↓ Filter 1: IP-Adresse ↓ Filter 2: Port 443 ↓ Endergebnis
Sortieren mit sort
sort hosts.txt server03 server01 server01 → server01 server02 server02 server01 server03
Mehrfachvorkommen mit uniq
sort hosts.txt | uniq server01 server02 server03
uniq arbeitet am zuverlässigsten mit bereits sortierten Daten.
Häufigkeiten mit uniq -c
sort hosts.txt | uniq -c 3 server01 1 server02 7 server03
Damit wird aus einer Liste bereits eine einfache Aggregation.
Zeilen mit wc -l zählen
wc -l connections.log 548213 connections.log
Die Anzahl von Zeilen hilft dir, die Größenordnung eines Datenbestandes einzuschätzen.
Wenn der Speicherort oder der Prozess unbekannt ist
Nicht immer weißt du, wo eine Datei liegt oder ob ein bestimmtes Programm läuft.
Dateien mit find suchen
find /data -name "connections.log" /data/case01/logs/connections.log
Dateitypen mit Platzhaltern finden
find /data -name "*.log" find /data -name "*.pcap" find /data -name "*.pcapng"
Das Sternchen steht als Platzhalter für beliebige Zeichen.
Prozesse mit ps anzeigen
ps aux USER PID COMMAND analyst 1204 bash zeek 2317 zeek root 845 sshd
Prozessliste filtern
ps aux | grep zeek
Auch hier bleibt die Logik gleich: Datenquelle erzeugt Ausgabe, Pipe übergibt sie an einen Filter.
Fehlermeldungen lesen statt raten
Fehlermeldungen gehören zur Arbeit im Terminal. Sie helfen dir, das Problem einzugrenzen.
No such file or directory
Mögliche Ursachen sind ein falscher Dateiname, ein falsches Verzeichnis oder ein falscher Pfad.
pwd ls find /data -name "network.log"
Permission denied
Die Datei oder Funktion kann vorhanden sein, aber dein Benutzer besitzt möglicherweise nicht die notwendigen Rechte.
Command not found
Häufig ist ein Befehl falsch geschrieben oder das angeforderte Programm ist auf dem System nicht verfügbar.
Ergebnisse mit > speichern
grep "ERROR" system.log > errors.txt
Die Ausgabe wird in eine Datei geschrieben. Bestehender Inhalt kann dabei überschrieben werden.
Ergebnisse mit >> anhängen
grep "WARNING" system.log >> findings.txt
Neue Ergebnisse werden an eine bestehende Datei angehängt.
Vier typische Fehler beim Arbeiten mit Linux-Daten
Öffne alle vier Karten.
Vom Datenbestand zum gesicherten Ergebnis
Klicke dich durch den vollständigen Arbeitsablauf.
Ein vollständiger Linux-Analyseauftrag
Im Verzeichnis /data/spice/case08 liegen technische Daten. Gesucht wird die IP-Adresse 198.51.100.42. Zusätzlich soll geprüft werden, welche Treffer Port 443 enthalten.
Zum Fall wechseln
cd /data/spice/case08
Dateien und Größen prüfen
ls -lh 24M connections.log 7M dns.log 340K notes.txt
Dateiaufbau prüfen
head -n 5 connections.log
IP-Adresse suchen
grep "198.51.100.42" connections.log
Treffer zählen
grep -c "198.51.100.42" connections.log
Zusätzlich auf Port 443 filtern
grep "198.51.100.42" connections.log | grep "443"
Treffer sichern
grep "198.51.100.42" connections.log > case08_findings.txt
Befehle und Arbeitsschritte sicher zuordnen
Ordne alle zwölf Aufgaben korrekt zu.
Navigation und Dateien
Lesen und Beobachten
Suchen und reduzieren
Finden und sichern
Wissenscheck – Modul 8
Für den vollständigen Modulabschluss müssen alle zwölf Antworten korrekt sein.
Vom Terminal zur technischen Datenanalyse
Du kannst dich nun nicht nur auf einem Linux-System orientieren, sondern einen einfachen technischen Datenbestand strukturiert untersuchen.