Skip to main content

1.10 Schnellreferenz – Diagnosebefehle für Windows, Linux und macOS

Diese Seite fasst die wichtigsten Diagnosebefehle aus Kapitel 1 als plattformübergreifendes Nachschlagewerk zusammen.

Sie ist für die schnelle Fehlersuche gedacht. Die ausführliche Vorgehensweise, Einschränkungen und Interpretation befinden sich auf den vorherigen Seiten.

Befehle nicht wahllos nacheinander ausführen. Zuerst Fehlerbild und Umfang bestimmen, flüchtige Informationen sichern und anschließend gezielt prüfen.


1. Kennzeichnungen

Kennzeichnung Bedeutung
[RO] Read-only: liest Informationen aus
[TEST] Führt eine aktive Prüfung aus
[FILE] Erstellt oder überschreibt eine Datei
[PRIV] Benötigt möglicherweise Administrator- oder Root-Rechte
[CHANGE] Verändert Konfiguration oder Betriebszustand
[DISRUPTIV] Kann Benutzer oder produktive Dienste beeinträchtigen
[SENSITIV] Ausgabe kann vertrauliche Daten enthalten

Auch [RO]-Befehle sind nicht vollständig spurlos. Sie starten Prozesse und können in Shell-Historien, Auditprotokollen oder Sicherheitslösungen erscheinen.


2. Platzhalter

Alle Angaben in spitzen Klammern müssen ersetzt werden.

Platzhalter Bedeutung
<Servername> Hostname oder FQDN des Zielservers
<IP-Adresse> IPv4- oder IPv6-Adresse
<Port> TCP- oder UDP-Port
<Dienstname> interner Dienstname
<Dienstlabel> launchd-Label unter macOS
<Prozessname> Name eines Prozesses
<PID> Prozess-ID
<Benutzername> Benutzerkonto
<Datei> vollständiger Dateipfad
<Pfad> Datei- oder Verzeichnispfad
<Zielpfad> freigegebener Speicherort
<Interface> Netzwerkschnittstelle
<DNS-Server-IP> Adresse des abzufragenden DNS-Servers

3. Plattformhinweise

Plattform Hinweise
Windows PowerShell möglichst als normale Benutzerin oder normaler Benutzer starten; erhöhte Rechte nur bei Bedarf
Linux Befehle unterscheiden sich nach Distribution, Init-System und installierten Paketen
macOS Viele Werkzeuge verwenden BSD-Syntax und unterscheiden sich von den Linux-Versionen
Alle Befehle mit Schreib-, Neustart- oder Aufzeichnungsfunktion vorher auf Auswirkungen prüfen

Lokale Hilfe anzeigen

Windows PowerShell Linux macOS
[RO] Get-Help <Befehl> -Full [RO] man <Befehl> [RO] man <Befehl>
[RO] Get-Command <Befehl> -Syntax [RO] <Befehl> --help [RO] <Befehl> -h oder man <Befehl>

4. Schneller Diagnoseablauf

Reihenfolge Prüfung Ziel
1 Uhrzeit und Zeitzone Protokolle korrekt vergleichen
2 Fehler exakt reproduzieren tatsächliches Symptom bestätigen
3 betroffene und funktionierende Systeme vergleichen Fehlerumfang eingrenzen
4 IP-Konfiguration prüfen lokale Netzwerkkonfiguration bestätigen
5 DNS prüfen Name und Zieladresse bestätigen
6 Routing und Gateway prüfen Netzwerkpfad bestätigen
7 Zielport prüfen Transportverbindung testen
8 Protokoll oder Anwendung prüfen HTTP, TLS oder andere Anwendungsebene
9 Dienst und Listener prüfen serverseitigen Zustand bestätigen
10 Protokolle prüfen technische Fehler und Zeitpunkt finden
11 Ressourcen prüfen CPU, RAM, Datenträger und I/O
12 letzte Änderungen prüfen Updates, Deployments und Konfiguration
13 Hypothesen mit Gegenprobe testen Ursache bestätigen oder widerlegen
14 Ausgangszustand sichern sichere Änderung und Rückfall ermöglichen
15 Lösung umsetzen und Ende-zu-Ende prüfen Funktion dauerhaft bestätigen

5. Datum, Uhrzeit und Zeitzone

Aufgabe Windows Linux macOS
Lokale Zeit [RO] Get-Date -Format o [RO] date --iso-8601=seconds [RO] date "+%Y-%m-%dT%H:%M:%S%z"
UTC-Zeit [RO] (Get-Date).ToUniversalTime().ToString("o") [RO] date -u "+%Y-%m-%dT%H:%M:%SZ" [RO] date -u "+%Y-%m-%dT%H:%M:%SZ"
Zeitzone [RO] Get-TimeZone [RO] timedatectl status [RO][PRIV] sudo systemsetup -gettimezone
Zeitquelle [RO] w32tm /query /source [RO] timedatectl timesync-status [TEST] sntp -d time.apple.com
Synchronisationsstatus [RO] w32tm /query /status [RO] timedatectl status [TEST] sntp -d time.apple.com
chrony-Status Nicht zutreffend [RO] chronyc tracking Nicht standardmäßig vorhanden
chrony-Quellen Nicht zutreffend [RO] chronyc sources -v Nicht standardmäßig vorhanden

Interpretation

Beobachtung Mögliche Bedeutung
Systemzeit weicht ab NTP-, Domänen-, Netzwerk- oder Konfigurationsproblem
Zeitzonen unterscheiden sich Ereignisse müssen vor dem Vergleich umgerechnet werden
Zeitquelle nicht erreichbar Firewall, DNS, Routing oder Zeitdienst prüfen
Kerberos- oder Zertifikatsfehler Systemzeit und Zeitzone zuerst prüfen

6. Hostname, Betriebssystem und Hardware

Aufgabe Windows Linux macOS
Hostname [RO] hostname [RO] hostname [RO] hostname
Systemübersicht [RO] Get-ComputerInfo [RO] hostnamectl [RO] system_profiler SPSoftwareDataType SPHardwareDataType
Betriebssystem [RO] Get-CimInstance Win32_OperatingSystem | Select-Object Caption,Version,BuildNumber [RO] cat /etc/os-release [RO] sw_vers
Kernel und Architektur [RO] systeminfo [RO] uname -a [RO] uname -a
Prozessor [RO] Get-CimInstance Win32_Processor [RO] lscpu [RO] sysctl -n machdep.cpu.brand_string
Hardwaremodell [RO] Get-CimInstance Win32_ComputerSystem [RO][PRIV] dmidecode -t system [RO] system_profiler SPHardwareDataType
Seriennummer [RO] Get-CimInstance Win32_BIOS | Select-Object SerialNumber [RO][PRIV] dmidecode -s system-serial-number [RO] system_profiler SPHardwareDataType

dmidecode ist nicht auf jeder Linux-Installation vorhanden und benötigt üblicherweise Root-Rechte.


7. Systemstart und Betriebsdauer

Aufgabe Windows Linux macOS
Letzter Start [RO] Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime [RO] uptime -s [RO] sysctl -n kern.boottime
Alternative [RO] systeminfo [RO] who -b [RO] last reboot
Betriebsdauer [RO] (Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime [RO] uptime [RO] uptime
Neustartverlauf Ereignisanzeige beziehungsweise Systemprotokoll [RO] last reboot [RO] last reboot
Aktueller Boot-Journal Ereignisanzeige [RO] journalctl -b Unified Log über Startzeit eingrenzen
Vorheriger Boot Ereignisanzeige [RO] journalctl -b -1 [RO] last reboot

8. Benutzeridentität und Sitzungen

Aufgabe Windows Linux macOS
Aktueller Benutzer [RO] whoami [RO] whoami [RO] whoami
Benutzer-ID und Gruppen [RO][SENSITIV] whoami /all [RO] id [RO] id
Bestimmter Benutzer Domänen- oder lokale Verwaltung verwenden [RO] id <Benutzername> [RO] id <Benutzername>
Angemeldete Benutzer [RO] quser [RO] who -a [RO] who
Sitzungen und Aktivität [RO] query user [RO] w [RO] w
Lokale Benutzer [RO] Get-LocalUser [RO] getent passwd [RO] dscl . -list /Users
Lokale Gruppen [RO] Get-LocalGroup [RO] getent group [RO] dscl . -list /Groups

Ausgaben können Benutzernamen, SIDs, Gruppen und andere personenbezogene oder sicherheitsrelevante Informationen enthalten.


9. Prozesse

Aufgabe Windows Linux macOS
Prozessübersicht [RO] Get-Process [RO][SENSITIV] ps auxww [RO][SENSITIV] ps auxww
PID, Elternprozess und Befehlszeile [RO][SENSITIV] Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,ExecutablePath,CommandLine [RO][SENSITIV] ps -ef --forest [RO][SENSITIV] ps -axo pid,ppid,user,lstart,state,%cpu,%mem,command
Einzelnen Prozess prüfen [RO] Get-Process -Id <PID> | Format-List * [RO] ps -p <PID> -o pid,ppid,user,lstart,stat,%cpu,%mem,command [RO] ps -p <PID> -o pid,ppid,user,lstart,state,%cpu,%mem,command
Nach Namen suchen [RO] Get-Process -Name <Prozessname> [RO] pgrep -a <Prozessname> [RO] pgrep -fl <Prozessname>
Höchste CPU-Nutzung [RO] Get-Process | Sort-Object CPU -Descending | Select-Object -First 20 [RO] ps aux --sort=-%cpu | head -n 20 [RO] top -l 1 -o cpu
Höchste Speichernutzung [RO] Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 20 [RO] ps aux --sort=-%mem | head -n 20 [RO] top -l 1 -o mem
Offene Dateien eines Prozesses Kein einheitlicher integrierter PowerShell-Befehl [RO][PRIV][SENSITIV] lsof -p <PID> [RO][PRIV][SENSITIV] lsof -p <PID>

10. Dienste

Aufgabe Windows Linux mit systemd macOS
Alle Dienste [RO] Get-Service [RO] systemctl list-units --type=service --all [RO] launchctl list
Bestimmten Dienst prüfen [RO] Get-Service -Name <Dienstname> [RO] systemctl status <Dienstname>.service --no-pager [RO][PRIV] launchctl print system/<Dienstlabel>
Benutzerdienst prüfen [RO] Get-Service -Name <Dienstname> [RO] systemctl --user status <Dienstname>.service [RO] launchctl print gui/$(id -u)/<Dienstlabel>
Fehlgeschlagene Dienste Status über Get-Service und Ereignisprotokoll [RO] systemctl --failed Prozess- und Unified-Log-Prüfung erforderlich
Laufende Dienste [RO] Get-Service | Where-Object Status -eq "Running" [RO] systemctl list-units --type=service --state=running [RO] launchctl list
Dienstkonfiguration [RO][SENSITIV] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" [RO] systemctl cat <Dienstname>.service [RO] plutil -p "<Pfad-zur-plist>"
Prozess-ID [RO] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" | Select-Object ProcessId [RO] systemctl show <Dienstname>.service -p MainPID [RO] launchctl print system/<Dienstlabel>
Startmodus [RO] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" | Select-Object StartMode [RO] systemctl is-enabled <Dienstname>.service Property-List mit plutil -p prüfen
Dienstkonto [RO][SENSITIV] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" | Select-Object StartName [RO] systemctl show <Dienstname>.service -p User -p Group [RO] plutil -p "<Pfad-zur-plist>"

11. Dienstabhängigkeiten

Aufgabe Windows Linux mit systemd macOS
Benötigte Dienste [RO] Get-Service -Name <Dienstname> -RequiredServices [RO] systemctl list-dependencies <Dienstname>.service --all keine allgemeine Abhängigkeitsdarstellung
Abhängige Dienste [RO] Get-Service -Name <Dienstname> -DependentServices [RO] systemctl list-dependencies <Dienstname>.service --reverse --all anwendungsspezifisch prüfen
Reihenfolge und Anforderungen [RO] sc.exe qc <Dienstname> [RO] systemctl show <Dienstname>.service -p Requires -p Wants -p After -p Before Property-List und Anwendungsdokumentation prüfen
Effektive Konfiguration [RO] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" [RO] systemctl cat <Dienstname>.service [RO] plutil -p "<Pfad-zur-plist>"

12. Arbeitsspeicher

Aufgabe Windows Linux macOS
Arbeitsspeicherübersicht [RO] Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize,FreePhysicalMemory [RO] free -h [RO] vm_stat
Prozessspeicher [RO] Get-Process | Sort-Object WorkingSet64 -Descending [RO] ps aux --sort=-%mem [RO] top -l 1 -o mem
Laufende Übersicht [RO] Get-Process oder Task-Manager [RO] top [RO] top

Bei Windows werden die Werte von TotalVisibleMemorySize und FreePhysicalMemory in KiB geliefert.


13. Datenträger und Dateisysteme

Aufgabe Windows Linux macOS
Volumes [RO] Get-Volume [RO] lsblk -f [RO] diskutil list
Freier Speicher [RO] Get-PSDrive -PSProvider FileSystem [RO] df -hT [RO] df -h
Inode-Belegung NTFS verwendet keine Unix-Inodes in dieser Form [RO] df -ih [RO] df -ih
Mounts [RO] Get-Volume [RO] findmnt [RO] mount
Physische Datenträger [RO] Get-PhysicalDisk [RO] lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS [RO] diskutil list
Datenträgerinformationen [RO] Get-Disk [RO] lsblk -f [RO] diskutil info <Datenträger>
I/O-Messung Performance Monitor oder passende Counter [RO][TEST] iostat -xz 1 5 [RO][TEST] iostat -w 1 -c 5

iostat gehört unter Linux häufig zum Paket sysstat.


14. IP-Konfiguration

Aufgabe Windows Linux macOS
Vollständige IP-Konfiguration [RO] ipconfig /all [RO] ip -details address show [RO] ifconfig -a
PowerShell-Netzwerkübersicht [RO] Get-NetIPConfiguration Nicht zutreffend Nicht zutreffend
Interfacezustand [RO] Get-NetAdapter [RO] ip -details link show [RO] ifconfig -a
NetworkManager-Geräte Nicht zutreffend [RO] nmcli device status Nicht zutreffend
NetworkManager-Verbindungen Nicht zutreffend [RO][SENSITIV] nmcli connection show Nicht zutreffend
Hardwareports [RO] Get-NetAdapter [RO] ip link show [RO] networksetup -listallhardwareports
Netzwerkdienste Netzwerkadapter über PowerShell NetworkManager oder systemd-networkd [RO] networksetup -listallnetworkservices

15. DHCP-Informationen am Client

Aufgabe Windows Linux macOS
DHCP-Server und Lease [RO] ipconfig /all abhängig vom Netzwerkmanager und DHCP-Client [RO] ipconfig getpacket <Interface>
NetworkManager-DHCP Nicht zutreffend [RO] nmcli device show <Interface> Nicht zutreffend
systemd-networkd-Lease Nicht zutreffend [RO] networkctl status <Interface> Nicht zutreffend
Interface-IP [RO] Get-NetIPAddress [RO] ip address show <Interface> [RO] ipconfig getifaddr <Interface>

DHCP-Lease-Dateien und deren Speicherorte unterscheiden sich nach Distribution und verwendetem Netzwerkdienst.


16. DNS-Konfiguration

Aufgabe Windows Linux macOS
DNS-Server [RO] Get-DnsClientServerAddress [RO] resolvectl status [RO][SENSITIV] scutil --dns
Resolverdatei ipconfig /all verwenden [RO] cat /etc/resolv.conf [RO] cat /etc/resolv.conf
Suchdomänen [RO] ipconfig /all [RO] resolvectl status [RO][SENSITIV] scutil --dns
DNS-Cache [RO][SENSITIV] Get-DnsClientCache kein einheitlicher systemweiter Cache-Dump kein einheitlicher systemweiter Cache-Dump
Alternative Cacheanzeige [RO][SENSITIV] ipconfig /displaydns abhängig vom verwendeten Resolver abhängig vom verwendeten Resolver

17. DNS-Auflösung

Aufgabe Windows Linux macOS
Standardabfrage [TEST] Resolve-DnsName <Servername> [TEST] getent ahosts <Servername> [TEST] dscacheutil -q host -a name <Servername>
Abfrage mit dig dig nur wenn installiert [TEST] dig <Servername> [TEST] dig <Servername>
Kurze Ausgabe [TEST] Resolve-DnsName <Servername> | Select-Object Name,Type,IPAddress [TEST] dig +short <Servername> [TEST] dig +short <Servername>
Bestimmten DNS-Server abfragen [TEST] Resolve-DnsName <Servername> -Server <DNS-Server-IP> [TEST] dig @<DNS-Server-IP> <Servername> [TEST] dig @<DNS-Server-IP> <Servername>
nslookup [TEST] nslookup <Servername> [TEST] nslookup <Servername> [TEST] nslookup <Servername>
Reverse Lookup [TEST] Resolve-DnsName <IP-Adresse> [TEST] dig -x <IP-Adresse> [TEST] dig -x <IP-Adresse>

Interpretation

Ergebnis Mögliche Bedeutung
Name wird nicht aufgelöst DNS-Server, Clientkonfiguration, Zone oder Netzwerk
Falsche IP-Adresse falscher Eintrag, Cache, Hosts-Datei oder Split-DNS
Verschiedene IPs Load Balancing, DNS-Rotation oder unterschiedliche Resolver
Bestimmter DNS-Server antwortet korrekt Standardresolver oder Clientkonfiguration prüfen
IP funktioniert, Name nicht DNS priorisieren

18. Hosts-Datei anzeigen

Windows Linux macOS
[RO] Get-Content "$env:SystemRoot\System32\drivers\etc\hosts" [RO] cat /etc/hosts [RO] cat /etc/hosts

Die Hosts-Datei kann DNS-Ergebnisse lokal überschreiben.


19. Routing

Aufgabe Windows Linux macOS
Routingtabelle [RO] route print [RO] ip route show table all [RO] netstat -rn
PowerShell-Routen [RO] Get-NetRoute Nicht zutreffend Nicht zutreffend
IPv4-Routen [RO] Get-NetRoute -AddressFamily IPv4 [RO] ip -4 route show table all [RO] netstat -rn -f inet
IPv6-Routen [RO] Get-NetRoute -AddressFamily IPv6 [RO] ip -6 route show table all [RO] netstat -rn -f inet6
Route zu einem Ziel [RO] Test-NetConnection <IP-Adresse> -DiagnoseRouting -InformationLevel Detailed [RO] ip route get <IP-Adresse> [RO] route -n get <IP-Adresse>
Standardroute [RO] Get-NetRoute -DestinationPrefix "0.0.0.0/0" [RO] ip route show default [RO] route -n get default

20. ARP- und Neighbor-Tabelle

Aufgabe Windows Linux macOS
ARP-Tabelle [RO] arp -a [RO] ip neigh show [RO] arp -an
PowerShell-Neighbor [RO] Get-NetNeighbor Nicht zutreffend Nicht zutreffend
Bestimmtes Interface [RO] Get-NetNeighbor -InterfaceAlias "<Interface>" [RO] ip neigh show dev <Interface> [RO] arp -an

Interpretation

Zustand Bedeutung
Reachable Nachbar wurde kürzlich bestätigt
Stale Eintrag ist vorhanden, aber nicht aktuell bestätigt
Incomplete oder Failed Adressauflösung ist fehlgeschlagen
Unterschiedliche MAC-Adressen Redundanz, Proxy ARP, IP-Konflikt oder Änderung prüfen

21. Proxykonfiguration

Aufgabe Windows Linux macOS
WinHTTP-Proxy [RO] netsh winhttp show proxy Nicht zutreffend Nicht zutreffend
Umgebungsvariablen [RO][SENSITIV] Get-ChildItem Env: | Where-Object Name -Match "proxy" [RO][SENSITIV] env | grep -i proxy [RO][SENSITIV] env | grep -i proxy
Systemproxy Internetoptionen und Richtlinien prüfen Desktop- oder Netzwerkmanager abhängig [RO] scutil --proxy
Direkter curl-Test ohne Proxy [TEST] curl.exe --noproxy "*" -v https://<Servername>/ [TEST] curl --noproxy "*" -v https://<Servername>/ [TEST] curl --noproxy "*" -v https://<Servername>/

Das Umgehen eines Unternehmensproxys darf nur erfolgen, wenn direkte Verbindungen erlaubt und der Test autorisiert ist.


22. Aktive TCP-Verbindungen

Aufgabe Windows Linux macOS
TCP-Verbindungen [RO][PRIV] Get-NetTCPConnection [RO][PRIV] ss -tanp [RO] netstat -anv -p tcp
Verbindungen mit PID [RO][PRIV] Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess [RO][PRIV] ss -tanp [RO][PRIV] lsof -nP -iTCP
Klassische Übersicht [RO][PRIV] netstat -ano [RO] netstat -antp sofern installiert [RO] netstat -anv -p tcp
Bestehende TCP-Verbindungen [RO] Get-NetTCPConnection -State Established [RO][PRIV] ss -tanp state established [RO][PRIV] lsof -nP -iTCP -sTCP:ESTABLISHED

23. UDP-Endpunkte

Windows Linux macOS
[RO][PRIV] Get-NetUDPEndpoint [RO][PRIV] ss -uanp [RO] netstat -anv -p udp
[RO][PRIV] netstat -ano -p udp [RO][PRIV] lsof -nP -iUDP [RO][PRIV] lsof -nP -iUDP

UDP besitzt keinen TCP-Verbindungszustand wie Established. Eine offene UDP-Schnittstelle bestätigt nicht, dass eine Anwendung auf Anfragen antwortet.


24. TCP-Listener

Aufgabe Windows Linux macOS
Alle Listener [RO][PRIV] Get-NetTCPConnection -State Listen [RO][PRIV] ss -lntp [RO][PRIV] lsof -nP -iTCP -sTCP:LISTEN
Bestimmter Port [RO][PRIV] Get-NetTCPConnection -State Listen -LocalPort <Port> [RO][PRIV] ss -lntp | grep ":<Port>" [RO][PRIV] lsof -nP -iTCP:<Port> -sTCP:LISTEN
PID zu Listener Eigenschaft OwningProcess verwenden Ausgabe von ss -lntp Ausgabe von lsof
Prozess zur PID [RO] Get-Process -Id <PID> [RO] ps -p <PID> -o pid,user,command [RO] ps -p <PID> -o pid,user,command

Ein vorhandener Listener bestätigt nur, dass ein Prozess den Port gebunden hat. Die Anwendung kann intern trotzdem fehlerhaft sein.


25. ICMP-Erreichbarkeit

Aufgabe Windows Linux macOS
Vier Ping-Versuche [TEST] ping -n 4 <IP-Adresse> [TEST] ping -c 4 <IP-Adresse> [TEST] ping -c 4 <IP-Adresse>
Zehn Versuche [TEST] ping -n 10 <IP-Adresse> [TEST] ping -c 10 <IP-Adresse> [TEST] ping -c 10 <IP-Adresse>
PowerShell-Test [TEST] Test-Connection -ComputerName <Servername> -Count 4 PowerShell nur wenn installiert PowerShell nur wenn installiert

Ein fehlgeschlagener Ping beweist keinen Serverausfall. ICMP kann blockiert sein, während TCP- oder UDP-Dienste funktionieren.


26. TCP-Port testen

Windows Linux macOS
[TEST] Test-NetConnection <Servername> -Port <Port> -InformationLevel Detailed [TEST] nc -vz -w 3 <Servername> <Port> [TEST] nc -vz -w 3 <Servername> <Port>
[TEST] Test-NetConnection <Servername> -Port <Port> -InformationLevel Quiet [TEST] timeout 5 bash -c '</dev/tcp/<Servername>/<Port>' sofern Bash dies unterstützt nc verwenden

Windows-Auswertung

Besonders relevantes Feld:

TcpTestSucceeded

Interpretation

Ergebnis Mögliche Bedeutung
Verbindung erfolgreich Netzwerkpfad und TCP-Listener grundsätzlich erreichbar
Connection refused Ziel erreichbar, aber kein Listener oder aktive Ablehnung
Timeout Filterung, Routing, Überlastung oder nicht antwortendes Ziel
Name nicht auflösbar DNS zuerst prüfen
Nur ein Client betroffen lokales System, lokales Netz oder lokale Sicherheitssoftware
Nur ein VLAN betroffen ACL, Routing, Firewall oder VLAN-Konfiguration

27. Netzwerkpfad verfolgen

Windows Linux macOS
[TEST] tracert <Servername> [TEST] tracepath <Servername> [TEST] traceroute <Servername>
[TEST] Test-NetConnection <Servername> -TraceRoute [TEST] traceroute <Servername> sofern installiert [TEST] traceroute <Servername>

Sternchen bedeuten nicht automatisch einen Fehler. Router können Traceroute-Anfragen ignorieren und Nutzverkehr trotzdem weiterleiten.


28. Lokalen und entfernten Dienst vergleichen

Testpunkt Windows Linux macOS
localhost [TEST] Test-NetConnection localhost -Port <Port> [TEST] nc -vz -w 3 localhost <Port> [TEST] nc -vz -w 3 localhost <Port>
eigene IP [TEST] Test-NetConnection <Eigene-IP> -Port <Port> [TEST] nc -vz -w 3 <Eigene-IP> <Port> [TEST] nc -vz -w 3 <Eigene-IP> <Port>
Servername [TEST] Test-NetConnection <Servername> -Port <Port> [TEST] nc -vz -w 3 <Servername> <Port> [TEST] nc -vz -w 3 <Servername> <Port>

Interpretation

localhost Eigene IP Remote Möglicher Fehlerbereich
erfolgreich erfolgreich fehlgeschlagen Netzwerkpfad oder Firewall
erfolgreich fehlgeschlagen fehlgeschlagen Bindung oder lokale Firewall
fehlgeschlagen fehlgeschlagen fehlgeschlagen Dienst oder Anwendung
erfolgreich erfolgreich erfolgreich Transportebene funktioniert

29. HTTP- und HTTPS-Test

Aufgabe Windows Linux macOS
Ausführlicher Test [TEST] curl.exe -v -o NUL https://<Servername>/ [TEST] curl -v -o /dev/null https://<Servername>/ [TEST] curl -v -o /dev/null https://<Servername>/
Nur Header [TEST] curl.exe -vI https://<Servername>/ [TEST] curl -vI https://<Servername>/ [TEST] curl -vI https://<Servername>/
Zeitbegrenzung [TEST] curl.exe --connect-timeout 5 --max-time 15 https://<Servername>/ [TEST] curl --connect-timeout 5 --max-time 15 https://<Servername>/ [TEST] curl --connect-timeout 5 --max-time 15 https://<Servername>/
HTTP-Fehler als curl-Fehler [TEST] curl.exe --fail https://<Servername>/ [TEST] curl --fail https://<Servername>/ [TEST] curl --fail https://<Servername>/

Einige Server unterstützen die HTTP-Methode HEAD nicht korrekt. Ein fehlgeschlagener curl -I-Test sollte deshalb mit einem normalen GET-Test verglichen werden.


30. HTTP-Zeiten messen

Windows PowerShell

[TEST] curl.exe -sS -o NUL -w 'code=%{http_code} remote=%{remote_ip} dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} first_byte=%{time_starttransfer} total=%{time_total}\n' --connect-timeout 5 --max-time 15 https://<Servername>/

Linux und macOS

[TEST] curl -sS -o /dev/null -w "code=%{http_code} remote=%{remote_ip} dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} first_byte=%{time_starttransfer} total=%{time_total}\n" --connect-timeout 5 --max-time 15 https://<Servername>/

Wert Bedeutung
http_code HTTP-Status
remote_ip verwendete Ziel-IP
time_namelookup Dauer der Namensauflösung
time_connect Dauer bis TCP-Verbindungsaufbau
time_appconnect Dauer bis TLS-Verbindungsaufbau
time_starttransfer Dauer bis zum ersten Byte
time_total Gesamtzeit

31. Bestimmtes HTTPS-Ziel ohne DNS-Änderung testen

Windows Linux macOS
[TEST] curl.exe --resolve "<Servername>:443:<IP-Adresse>" -v -o NUL https://<Servername>/ [TEST] curl --resolve "<Servername>:443:<IP-Adresse>" -v -o /dev/null https://<Servername>/ [TEST] curl --resolve "<Servername>:443:<IP-Adresse>" -v -o /dev/null https://<Servername>/

--resolve behält für den einzelnen curl-Aufruf:

  • Hostname,
  • HTTP-Host-Header,
  • TLS-SNI,
  • Zertifikatsprüfung.

Nur die zu verwendende Ziel-IP wird vorgegeben.


32. TLS prüfen

Aufgabe Windows Linux macOS
TLS-Verbindung [TEST] openssl s_client -connect <Servername>:443 -servername <Servername> -showcerts sofern OpenSSL installiert [TEST] openssl s_client -connect <Servername>:443 -servername <Servername> -showcerts </dev/null [TEST] openssl s_client -connect <Servername>:443 -servername <Servername> -showcerts </dev/null
OpenSSL-Version [RO] openssl version -a [RO] openssl version -a [RO] openssl version -a
Zertifikatdatei anzeigen [RO] openssl x509 -in "<Datei.pem>" -noout -text [RO] openssl x509 -in "<Datei.pem>" -noout -text [RO] openssl x509 -in "<Datei.pem>" -noout -text

Zu prüfen

  • Gültigkeitszeitraum,
  • Hostname und Subject Alternative Names,
  • Aussteller,
  • Zertifikatskette,
  • TLS-Version,
  • Cipher Suite,
  • Verifikationsergebnis.

33. HTTP-Status schnell interpretieren

Status Typische Bedeutung
200 Anfrage erfolgreich
301 oder 302 Weiterleitung
400 ungültige Anfrage
401 Authentifizierung erforderlich oder fehlgeschlagen
403 Zugriff verweigert
404 Ressource oder Pfad nicht gefunden
408 Anfrage-Timeout
429 zu viele Anfragen oder Rate Limit
500 interner Anwendungsfehler
502 Proxy oder Gateway erhält ungültige Backend-Antwort
503 Dienst oder Backend nicht verfügbar
504 Proxy oder Gateway wartet vergeblich auf Backend
000 bei curl keine gültige HTTP-Antwort empfangen

Die genaue Bedeutung kann durch die Anwendung erweitert oder verändert werden.


34. Windows-Ereignisprotokolle

Aufgabe Befehl
Systemprotokoll [RO] Get-WinEvent -LogName "System" -MaxEvents 100
Anwendungsprotokoll [RO] Get-WinEvent -LogName "Application" -MaxEvents 100
Warnungen und Fehler [RO] Get-WinEvent -FilterHashtable @{LogName="System"; Level=2,3; StartTime=(Get-Date).AddHours(-1)}
Kritische Fehler und Fehler [RO] Get-WinEvent -FilterHashtable @{LogName="System"; Level=1,2; StartTime=(Get-Date).AddHours(-1)}
Zeitfenster [RO] Get-WinEvent -FilterHashtable @{LogName="System"; StartTime=[datetime]"2026-07-30 14:00:00"; EndTime=[datetime]"2026-07-30 15:00:00"}
Bestimmte Ereignis-ID [RO] Get-WinEvent -FilterHashtable @{LogName="System"; Id=<Ereignis-ID>; StartTime=(Get-Date).AddHours(-1)}
Bestimmter Anbieter [RO] Get-WinEvent -FilterHashtable @{LogName="System"; ProviderName="<Anbieter>"; StartTime=(Get-Date).AddHours(-1)}
Übersicht formatieren [RO] Get-WinEvent -LogName "System" -MaxEvents 100 | Select-Object TimeCreated,Id,ProviderName,LevelDisplayName,Message

Windows-Ereignisstufen

Level Bedeutung
1 Kritisch
2 Fehler
3 Warnung
4 Information
5 Ausführlich

35. Windows-Dienstereignisse

Ereignis-ID Typische Bedeutung
7031 Dienst wurde unerwartet beendet
7034 Dienst wurde unerwartet beendet
7036 Dienstzustand wurde geändert
7040 Starttyp wurde geändert
7045 neuer Dienst wurde installiert

Abfrage

[RO] Get-WinEvent -FilterHashtable @{LogName="System"; ProviderName="Service Control Manager"; Id=7031,7034,7036,7040,7045; StartTime=(Get-Date).AddHours(-1)} | Select-Object TimeCreated,Id,Message


36. Windows-Ereignisprotokolle exportieren

Protokoll Befehl
System [FILE][PRIV] wevtutil epl System "<Zielpfad>\System.evtx"
Application [FILE][PRIV] wevtutil epl Application "<Zielpfad>\Application.evtx"
Security [FILE][PRIV][SENSITIV] wevtutil epl Security "<Zielpfad>\Security.evtx"
PowerShell Operational [FILE][PRIV][SENSITIV] wevtutil epl "Microsoft-Windows-PowerShell/Operational" "<Zielpfad>\PowerShell-Operational.evtx"

Vor dem Export sollte ein neuer Zielordner verwendet werden. Vorhandene Beweismittel dürfen nicht unkontrolliert überschrieben werden.


37. Linux-Journal

Aufgabe Befehl
Aktueller Boot [RO] journalctl -b
Vorheriger Boot [RO] journalctl -b -1
Letzte Stunde [RO] journalctl --since "1 hour ago"
Zeitfenster [RO] journalctl --since "2026-07-30 14:00:00" --until "2026-07-30 15:00:00"
Bestimmter Dienst [RO] journalctl -u <Dienstname>.service --since "1 hour ago"
Kernelmeldungen [RO] journalctl -k -b
Warnungen und schwerer [RO] journalctl -p warning --since "1 hour ago"
Nur Fehler [RO] journalctl -p err --since "1 hour ago"
ISO-Zeitstempel [RO] journalctl -o short-iso-precise --since "1 hour ago"
Ohne Pager [RO] journalctl --since "1 hour ago" --no-pager
Klassische Kernelmeldungen [RO][PRIV] dmesg --ctime

38. Linux-Journal exportieren

Aufgabe Befehl
Aktueller Boot [FILE] journalctl -b --no-pager --output=short-iso-precise > "<Zielpfad>/journal-current-boot.log"
Vorheriger Boot [FILE] journalctl -b -1 --no-pager --output=short-iso-precise > "<Zielpfad>/journal-previous-boot.log"
Zeitfenster [FILE] journalctl --since "2026-07-30 14:00:00" --until "2026-07-30 15:00:00" --no-pager --output=short-iso-precise > "<Zielpfad>/journal-time-window.log"
Dienst [FILE] journalctl -u <Dienstname>.service --since "1 hour ago" --no-pager --output=short-iso-precise > "<Zielpfad>/<Dienstname>.log"
Kernelmeldungen [FILE][PRIV] dmesg --ctime > "<Zielpfad>/dmesg.log"

Die Umleitung mit > überschreibt eine vorhandene Datei. Deshalb sollte ein neuer Zielordner verwendet werden.


39. macOS Unified Log

Aufgabe Befehl
Letzte Stunde [RO][SENSITIV] log show --last 1h --style compact
Zeitfenster [RO][SENSITIV] log show --start "2026-07-30 14:00:00" --end "2026-07-30 15:00:00" --style compact
Fehler und Faults [RO][SENSITIV] log show --last 1h --predicate 'messageType == error OR messageType == fault' --style compact
Bestimmter Prozess [RO][SENSITIV] log show --last 1h --predicate 'process == "<Prozessname>"' --style compact
Prozessfehler [RO][SENSITIV] log show --last 1h --predicate 'process == "<Prozessname>" AND (messageType == error OR messageType == fault)' --style compact
Live-Ansicht [RO][SENSITIV] log stream --style compact

Export

[FILE][SENSITIV] log show --last 1h --style compact > "<Zielpfad>/macOS-unified-log.txt"

Grafische Werkzeuge

  • Konsole
  • Aktivitätsanzeige → Weitere Optionen → Systemdiagnose

40. Windows-Updates und Installationsverlauf

Aufgabe Befehl
Installierte Hotfixes [RO] Get-HotFix | Sort-Object InstalledOn -Descending
Hotfixdetails [RO] Get-HotFix | Select-Object InstalledOn,HotFixID,Description,InstalledBy
Windows-Update-Ereignisse [RO] Get-WinEvent -LogName "Microsoft-Windows-WindowsUpdateClient/Operational" -MaxEvents 100
Updateereignisse im Zeitfenster [RO] Get-WinEvent -FilterHashtable @{LogName="Microsoft-Windows-WindowsUpdateClient/Operational"; StartTime=[datetime]"2026-07-30 14:00:00"; EndTime=[datetime]"2026-07-30 15:00:00"}
Lesbare Updateprotokolldatei [FILE] Get-WindowsUpdateLog -LogPath "<Zielpfad>\WindowsUpdate.log"

Get-HotFix zeigt nicht zwingend jede installierte Aktualisierung. Zusätzlich sollten Windows-Updateverlauf und Patchmanagement geprüft werden.


41. Linux-Paketverlauf

Distribution Aufgabe Befehl
Debian/Ubuntu APT-Verlauf [RO] less /var/log/apt/history.log
Debian/Ubuntu DPKG-Verlauf [RO] less /var/log/dpkg.log
Debian/Ubuntu Paketänderungen [RO] grep -E " install | upgrade | remove " /var/log/dpkg.log
Debian/Ubuntu rotierte Logs [RO] zgrep -hE " install | upgrade | remove " /var/log/dpkg.log*
RHEL/Rocky/Alma/Fedora DNF-Verlauf [RO] dnf history list
RHEL/Rocky/Alma/Fedora Transaktionsdetails [RO] dnf history info <Transaktions-ID>
RHEL/Rocky/Alma/Fedora letzte Transaktion [RO] dnf history info last
RPM-basiert Pakete nach Installationszeit [RO] rpm -qa --last
SUSE/openSUSE Zypper-Verlauf [RO] less /var/log/zypp/history
Arch Linux Pacman-Verlauf [RO] less /var/log/pacman.log
Arch Linux Änderungen filtern [RO] grep -E "\[ALPM\] (installed|upgraded|removed)" /var/log/pacman.log

42. macOS-Installationsverlauf

Aufgabe Befehl
Softwareupdateverlauf [RO] softwareupdate --history
Installationsverlauf [RO] system_profiler SPInstallHistoryDataType
Installierte Anwendungen [RO] system_profiler SPApplicationsDataType

Grafischer Weg:

Systeminformationen → Software → Installationen


43. Geplante Aufgaben und Automatisierung

Aufgabe Windows Linux macOS
Geplante Aufgaben [RO] Get-ScheduledTask [RO] crontab -l [RO] launchctl list
Laufzeitinformationen [RO] Get-ScheduledTask | Get-ScheduledTaskInfo | Sort-Object LastRunTime -Descending [RO] systemctl list-timers --all [RO] launchctl list
Aufgaben mit auffälligem Ergebnis [RO] Get-ScheduledTask | Get-ScheduledTaskInfo | Where-Object LastTaskResult -ne 0 Cron- und Dienstprotokolle prüfen Unified Log prüfen
Task-Scheduler-Protokoll [RO] Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational" -MaxEvents 100 Nicht zutreffend Nicht zutreffend
Systemweite Cronjobs Nicht zutreffend [RO] ls -la /etc/cron.d /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly Nicht zutreffend
Debian/Ubuntu-Cronlog Nicht zutreffend [RO] journalctl -u cron --since "1 hour ago" Nicht zutreffend
RHEL-Cronlog Nicht zutreffend [RO] journalctl -u crond --since "1 hour ago" Nicht zutreffend
LaunchDaemons Nicht zutreffend Nicht zutreffend [RO] ls -la /Library/LaunchDaemons
Systemweite LaunchAgents Nicht zutreffend Nicht zutreffend [RO] ls -la /Library/LaunchAgents
Benutzer-LaunchAgents Nicht zutreffend Nicht zutreffend [RO] ls -la ~/Library/LaunchAgents

Ein von 0 abweichendes Task-Scheduler-Ergebnis ist ein Hinweis, muss aber anhand der jeweiligen Aufgabe und Anwendung interpretiert werden.


44. Dateiinformationen

Aufgabe Windows Linux macOS
Dateiinformationen [RO] Get-Item "<Datei>" | Select-Object FullName,Length,CreationTime,LastWriteTime [RO] stat "<Datei>" [RO] stat -x "<Datei>"
Dateityp Erweiterung und Anwendung prüfen [RO] file "<Datei>" [RO] file "<Datei>"
Programmversion [RO] (Get-Item "<Datei>").VersionInfo Paketmanager oder Programmoption --version Programmoption --version oder Systeminformationen
Dateiinhalt [RO] Get-Content "<Datei>" [RO] less "<Datei>" [RO] less "<Datei>"
Rohinhalt [RO] Get-Content "<Datei>" -Raw [RO] cat "<Datei>" [RO] cat "<Datei>"

Bei großen oder binären Dateien sollte nicht unkontrolliert der gesamte Inhalt auf dem Terminal ausgegeben werden.


45. Dateien und Konfigurationen vergleichen

Aufgabe Windows Linux macOS
Textdateien vergleichen [RO] Compare-Object (Get-Content "<Datei-A>") (Get-Content "<Datei-B>") [RO] diff -u "<Datei-A>" "<Datei-B>" [RO] diff -u "<Datei-A>" "<Datei-B>"
Binäre Gleichheit [RO] Get-FileHash "<Datei>" -Algorithm SHA256 [RO] sha256sum "<Datei>" [RO] shasum -a 256 "<Datei>"
Git-Arbeitszustand [RO] git status [RO] git status [RO] git status
Git-Änderungen [RO] git diff [RO] git diff [RO] git diff
Letzte Commits [RO] git log --oneline --decorate -n 20 [RO] git log --oneline --decorate -n 20 [RO] git log --oneline --decorate -n 20
Verlauf einer Datei [RO] git log -p -- "<Datei>" [RO] git log -p -- "<Datei>" [RO] git log -p -- "<Datei>"

46. Prüfsummen

Aufgabe Windows Linux macOS
SHA-256 einer Datei [RO] Get-FileHash "<Datei>" -Algorithm SHA256 [RO] sha256sum "<Datei>" [RO] shasum -a 256 "<Datei>"
Prüfsumme prüfen neu berechnen und vergleichen [RO] sha256sum -c "<SHA256SUMS-Datei>" [RO] shasum -a 256 -c "<SHA256SUMS-Datei>"
Ordner-Manifest [FILE] Get-ChildItem "<Diagnoseordner>" -File -Recurse | Get-FileHash -Algorithm SHA256 | Export-Csv "<Diagnoseordner>-SHA256.csv" -NoTypeInformation -Encoding UTF8 [FILE] (cd "<Diagnoseordner>" && find . -type f -print0 | sort -z | xargs -0 -r sha256sum) > "<Diagnoseordner>-SHA256SUMS.txt" [FILE] find "<Diagnoseordner>" -type f -exec shasum -a 256 {} \; > "<Diagnoseordner>-SHA256SUMS.txt"

Eine Prüfsumme dokumentiert Dateiintegrität ab dem Zeitpunkt der Berechnung, aber nicht automatisch Herkunft oder Authentizität.


47. Dateiberechtigungen

Aufgabe Windows Linux macOS
ACL anzeigen [RO][SENSITIV] Get-Acl "<Pfad>" | Format-List [RO][SENSITIV] getfacl "<Pfad>" [RO][SENSITIV] ls -lde "<Pfad>"
Klassische Ansicht [RO][SENSITIV] icacls "<Pfad>" [RO] ls -ld "<Pfad>" [RO] ls -lde "<Pfad>"
Benutzergruppen [RO][SENSITIV] whoami /all [RO] id <Benutzername> [RO] id <Benutzername>
Vollständigen Pfad prüfen Pfadabschnitte einzeln mit Get-Acl prüfen [RO] namei -l "<Pfad>" Pfadabschnitte einzeln mit ls -lde prüfen
Besitzer und Gruppe [RO] Get-Acl "<Pfad>" | Select-Object Owner [RO] stat "<Pfad>" [RO] stat -x "<Pfad>"

48. Active Directory und Gruppenrichtlinien

Aufgabe Windows
Benutzer- und Gruppeninformationen [RO][SENSITIV] whoami /all
Resultierende Richtlinien kompakt [RO] gpresult /r
HTML-Bericht [FILE] gpresult /h "<Zielpfad>\gpresult.html"
Gruppenrichtlinienprotokoll [RO] Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" -MaxEvents 100
Sicheren Domänenkanal prüfen [TEST] Test-ComputerSecureChannel -Verbose
Bevorzugten Domänencontroller prüfen [TEST] Test-ComputerSecureChannel -Server "<Domänencontroller>" -Verbose
Sicherheitsereignisse [RO][PRIV][SENSITIV] Get-WinEvent -LogName "Security" -MaxEvents 100

Test-ComputerSecureChannel ist für Domänenmitgliedscomputer vorgesehen. Auf Domänencontrollern ist das Cmdlet laut Microsoft nicht zur zuverlässigen Prüfung geeignet.

Der Parameter -Repair wäre eine Änderung und ist kein reiner Test.


49. Konfigurationssyntax prüfen

Format oder Dienst Windows Linux macOS
JSON mit PowerShell [TEST] Get-Content "<Datei.json>" -Raw | ConvertFrom-Json | Out-Null PowerShell nur wenn installiert PowerShell nur wenn installiert
JSON mit Python [TEST] python3 -m json.tool "<Datei.json>" > NUL [TEST] python3 -m json.tool "<Datei.json>" > /dev/null [TEST] python3 -m json.tool "<Datei.json>" > /dev/null
JSON mit jq [TEST] jq empty "<Datei.json>" [TEST] jq empty "<Datei.json>" [TEST] jq empty "<Datei.json>"
Property List Nicht zutreffend Nicht zutreffend [TEST] plutil -lint "<Datei.plist>"
systemd-Unit Nicht zutreffend [TEST] systemd-analyze verify "<Datei.service>" Nicht zutreffend
NGINX [TEST][PRIV] nginx -t sofern installiert [TEST][PRIV] nginx -t [TEST][PRIV] nginx -t sofern installiert
Apache anwendungsspezifische Installation [TEST][PRIV] apachectl configtest [TEST][PRIV] apachectl configtest
OpenSSH-Server [TEST][PRIV] sshd -t sofern installiert [TEST][PRIV] sshd -t [TEST][PRIV] sshd -t

Ein erfolgreicher Syntax-Test bestätigt nicht, dass Netzwerkziele, Zertifikate, Berechtigungen und Abhängigkeiten funktionieren.


50. Terminal- und Diagnosesitzung protokollieren

Aufgabe Windows PowerShell Linux macOS
Aufzeichnung starten [FILE][SENSITIV] Start-Transcript -Path "<Zielpfad>\Testprotokoll.txt" -IncludeInvocationHeader -NoClobber [FILE][SENSITIV] script "<Zielpfad>/Testprotokoll.txt" [FILE][SENSITIV] script "<Zielpfad>/Testprotokoll.txt"
Aufzeichnung beenden [FILE] Stop-Transcript exit oder Strg + D exit oder Strg + D
Ausgabe anzeigen und speichern [FILE] <Befehl> | Tee-Object -FilePath "<Zielpfad>\Ausgabe.txt" [FILE] <Befehl> 2>&1 | tee "<Zielpfad>/Ausgabe.txt" [FILE] <Befehl> 2>&1 | tee "<Zielpfad>/Ausgabe.txt"
Ausgabe und Fehler speichern [FILE] <Befehl> *> "<Zielpfad>\Ausgabe.txt" [FILE] <Befehl> > "<Zielpfad>/Ausgabe.txt" 2>&1 [FILE] <Befehl> > "<Zielpfad>/Ausgabe.txt" 2>&1

Transkripte können Befehle, Benutzernamen, Pfade, interne Systeme und andere sensible Informationen enthalten.


51. Rückgabewerte prüfen

Plattform Befehl Bedeutung
PowerShell-Cmdlet [RO] $? Erfolg der unmittelbar vorherigen PowerShell-Operation
PowerShell mit externem Programm [RO] $LASTEXITCODE Exit-Code des letzten nativen Programms
Windows CMD [RO] echo %ERRORLEVEL% Exit-Code des letzten Programms
Linux [RO] echo $? Exit-Code des letzten Befehls
macOS [RO] echo $? Exit-Code des letzten Befehls

Der Wert muss unmittelbar nach dem betreffenden Befehl gesichert werden.

Ein Exit-Code 0 bedeutet nur, dass das Werkzeug Erfolg meldet. Die gewünschte Benutzer- oder Anwendungsfunktion kann trotzdem fehlschlagen.


52. PowerShell-Versionen und Werkzeugversionen

Aufgabe Windows Linux macOS
PowerShell-Version [RO] $PSVersionTable [RO] pwsh -Version sofern installiert [RO] pwsh -Version sofern installiert
curl-Version [RO] curl.exe --version [RO] curl --version [RO] curl --version
OpenSSL-Version [RO] openssl version -a [RO] openssl version -a [RO] openssl version -a
Git-Version [RO] git --version [RO] git --version [RO] git --version
Python-Version [RO] python --version oder python3 --version [RO] python3 --version [RO] python3 --version

Unterschiedliche Versionen können verschiedene Optionen, Protokolle oder Standardwerte verwenden.


53. Paketaufzeichnung

Paketaufzeichnungen können vertrauliche Nutzdaten, Hostnamen, IP-Adressen, Sitzungsinformationen und personenbezogene Daten enthalten. Vorher müssen Berechtigung, Speicherort, Zeitraum und Datenschutz geklärt sein.

Windows mit pktmon

Aufgabe Befehl
Aufzeichnung starten [FILE][TEST][PRIV][SENSITIV] pktmon start --capture --pkt-size 0 --file-name "<Zielpfad>\capture.etl"
Aufzeichnung beenden [TEST][PRIV] pktmon stop
In PCAPNG umwandeln [FILE][SENSITIV] pktmon etl2pcap "<Zielpfad>\capture.etl" --out "<Zielpfad>\capture.pcapng"

Linux mit tcpdump

[FILE][TEST][PRIV][SENSITIV] sudo tcpdump -i any -nn -s 0 -w "<Zielpfad>/capture.pcap"

macOS mit tcpdump

[FILE][TEST][PRIV][SENSITIV] sudo tcpdump -i <Interface> -nn -s 0 -w "<Zielpfad>/capture.pcap"

Beenden mit Strg + C.


54. Dienständerungen – nur nach Sicherung und Freigabe

Die folgenden Befehle verändern den Betriebszustand und gehören nicht an den Anfang der Diagnose.

Aufgabe Windows Linux macOS
Neustart nur anzeigen [TEST] Restart-Service -Name <Dienstname> -WhatIf keine vollständige systemctl-Simulation keine vollständige launchctl-Simulation
Dienst starten [CHANGE][PRIV] Start-Service -Name <Dienstname> -Confirm [CHANGE][PRIV] sudo systemctl start <Dienstname>.service [CHANGE][PRIV] sudo launchctl kickstart system/<Dienstlabel>
Konfiguration neu laden anwendungsspezifisch [CHANGE][PRIV] sudo systemctl reload <Dienstname>.service anwendungsspezifisch
Dienst neu starten [CHANGE][DISRUPTIV][PRIV] Restart-Service -Name <Dienstname> -Confirm [CHANGE][DISRUPTIV][PRIV] sudo systemctl restart <Dienstname>.service [CHANGE][DISRUPTIV][PRIV] sudo launchctl kickstart -k system/<Dienstlabel>
Nur laufenden Dienst neu starten Status vorher prüfen [CHANGE][DISRUPTIV][PRIV] sudo systemctl try-restart <Dienstname>.service Status vorher prüfen
Zustand danach [RO] Get-Service -Name <Dienstname> [RO] systemctl status <Dienstname>.service --no-pager [RO][PRIV] launchctl print system/<Dienstlabel>

Ein Reload ist nur möglich, wenn der Dienst dies unterstützt.


55. Konfigurationsdatei sichern

Windows

$backupFile = Join-Path "<Zielpfad>" "config-$(Get-Date -Format 'yyyyMMdd-HHmmss').bak"
Copy-Item "<Konfigurationsdatei>" $backupFile
Get-FileHash -Path "<Konfigurationsdatei>", $backupFile -Algorithm SHA256

Linux

backup_file="<Zielpfad>/config-$(date +%Y%m%d-%H%M%S).bak"
cp --preserve=all -- "<Konfigurationsdatei>" "$backup_file"
sha256sum "<Konfigurationsdatei>" "$backup_file"

macOS

backup_file="<Zielpfad>/config-$(date +%Y%m%d-%H%M%S).bak"
cp -p "<Konfigurationsdatei>" "$backup_file"
shasum -a 256 "<Konfigurationsdatei>" "$backup_file"

Für komplexe Anwendungen, Datenbanken, Verzeichnisdienste und Cluster muss die vom Hersteller vorgesehene Backup- oder Exportfunktion verwendet werden.


56. Einfache Konfigurationsdatei zurückspielen

Nur verwenden, wenn Sicherung, Dateirechte, Besitzer, Metadaten und Anwendungsvorgaben geprüft wurden.

Windows Linux macOS
[CHANGE][PRIV] Copy-Item "<Sicherungsdatei>" "<Konfigurationsdatei>" -Force [CHANGE][PRIV] sudo cp --preserve=all -- "<Sicherungsdatei>" "<Konfigurationsdatei>" [CHANGE][PRIV] sudo cp -p "<Sicherungsdatei>" "<Konfigurationsdatei>"

Danach prüfen:

  • Inhalt,
  • Prüfsumme,
  • Besitzer,
  • Gruppe,
  • Berechtigungen,
  • ACL,
  • Syntax,
  • Dienststatus,
  • Benutzerfunktion.

57. Häufige Ergebniskombinationen

Beobachtung Wahrscheinlicher Prüfbereich
Zugriff per IP funktioniert, per Name nicht DNS, Hosts-Datei, Suchdomäne
DNS liefert unterschiedliche IPs Split-DNS, Load Balancing, Cache
Ping scheitert, TCP funktioniert ICMP wahrscheinlich blockiert
Ping funktioniert, TCP scheitert Port, Listener oder Firewall
TCP erfolgreich, TLS scheitert Zertifikat, TLS-Version, Cipher oder SNI
TLS erfolgreich, HTTP 500 Anwendung oder Backend
HTTP 401 Authentifizierung
HTTP 403 Autorisierung oder Sicherheitsrichtlinie
HTTP 502 oder 504 Proxy, Load Balancer oder Backend
localhost funktioniert, Remotezugriff nicht Listener-Bindung, Firewall oder Netzwerkpfad
localhost funktioniert nicht Dienst oder Anwendung
nur ein Benutzer betroffen Konto, Rolle, Berechtigung oder Profil
nur ein Client betroffen Clientkonfiguration, lokaler Dienst oder Sicherheitssoftware
nur ein VLAN betroffen VLAN, ACL, Routing, DHCP oder Gateway
alle Clients betroffen Server, Dienst oder gemeinsame Abhängigkeit
Dienststatus „Running“, aber Port fehlt Bindungs-, Konfigurations- oder Prozessproblem
Port vorhanden, Anwendung antwortet nicht Anwendung hängt oder Abhängigkeit fehlt
Neustart behebt Fehler vorübergehend Cache, Speicherleck, Prozesszustand oder Verbindung
Datenträger frei, Schreiben scheitert Inodes, Quota, Berechtigung oder Read-only-Mount

58. Häufige Fehlermeldungen bei Netzwerkverbindungen

Meldung Mögliche Bedeutung
Connection refused Ziel erreichbar, aber kein Listener oder aktive Ablehnung
Connection timed out Paketverlust, Filterung, Routing oder nicht antwortendes Ziel
No route to host Route, Gateway, Interface oder Netz nicht erreichbar
Network is unreachable keine geeignete Route oder Schnittstelle
Name or service not known Namensauflösung fehlgeschlagen
Temporary failure in name resolution DNS-Server oder Resolver vorübergehend nicht verfügbar
Hostname mismatch Zertifikat passt nicht zum aufgerufenen Hostnamen
Certificate expired Zertifikat ist abgelaufen
Permission denied Dateirechte, ACL, Rolle oder Sicherheitsrichtlinie
Address already in use Port oder Socket ist bereits gebunden
No space left on device Speicherplatz oder Inodes erschöpft
Too many open files Datei- oder Prozesslimit erreicht

59. Was vor einem Neustart gesichert werden sollte

Priorität Information
1 Fehlermeldung und Screenshot
2 Uhrzeit und Zeitzone
3 laufende Prozesse
4 Dienstzustand
5 aktive Netzwerkverbindungen
6 Listener
7 IP-Konfiguration und Routing
8 ARP-, Neighbor- und DNS-Cache
9 angemeldete Benutzer
10 CPU-, RAM- und Datenträgerzustand
11 aktuelle Protokolle
12 letzte Änderungen
13 Konfiguration und Prüfsummen

60. Was nicht unüberlegt ausgeführt werden sollte

Maßnahme Grund
Computer neu starten flüchtige Informationen gehen verloren
Dienst sofort neu starten ursprünglicher Prozesszustand geht verloren
Prozess beenden Verbindungen, Speicher und offene Dateien verschwinden
DNS-Cache leeren diagnostisch relevante Cacheeinträge gehen verloren
ARP-Tabelle leeren Zuordnungen zwischen IP und MAC gehen verloren
Protokolle löschen Belege gehen verloren
Firewall vollständig deaktivieren Sicherheitsrisiko und unklarer Test
Update installieren Ausgangszustand wird verändert
Konfiguration zurücksetzen Fehlerursache kann nicht mehr nachvollzogen werden
Snapshot unkontrolliert zurückspielen Daten- und Konsistenzrisiko
mehrere Änderungen gleichzeitig Wirkung kann nicht zugeordnet werden

61. Minimaler Erstsnapshot – Windows

Aufgabe Befehl
Zeit [RO] Get-Date -Format o
Betriebssystem [RO] Get-CimInstance Win32_OperatingSystem
letzter Start [RO] Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime
Benutzer [RO][SENSITIV] whoami /all
Prozesse [RO][SENSITIV] Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,CommandLine
Dienste [RO] Get-Service
IP-Konfiguration [RO] ipconfig /all
Routing [RO] route print
ARP [RO] arp -a
DNS-Cache [RO][SENSITIV] ipconfig /displaydns
TCP-Verbindungen [RO][PRIV] netstat -ano
Volumes [RO] Get-Volume
Fehlerprotokoll [RO] Get-WinEvent -FilterHashtable @{LogName="System"; Level=1,2; StartTime=(Get-Date).AddHours(-1)}

62. Minimaler Erstsnapshot – Linux

Aufgabe Befehl
Zeit [RO] date --iso-8601=seconds
Betriebssystem [RO] cat /etc/os-release
Kernel [RO] uname -a
Betriebsdauer [RO] uptime
Benutzer [RO] who -a
Prozesse [RO][SENSITIV] ps auxww
Dienste [RO] systemctl --failed
IP-Konfiguration [RO] ip -details address show
Routing [RO] ip route show table all
Neighbor [RO] ip neigh show
DNS [RO] resolvectl status
Sockets [RO][PRIV] ss -tulpn
Speicher [RO] free -h
Dateisysteme [RO] df -hT
Journal [RO] journalctl -b -p warning --no-pager
Kernelmeldungen [RO][PRIV] dmesg --ctime

63. Minimaler Erstsnapshot – macOS

Aufgabe Befehl
Zeit [RO] date "+%Y-%m-%dT%H:%M:%S%z"
Betriebssystem [RO] sw_vers
Kernel [RO] uname -a
Betriebsdauer [RO] uptime
Benutzer [RO] who
Prozesse [RO][SENSITIV] ps auxww
Dienste [RO] launchctl list
IP-Konfiguration [RO] ifconfig -a
Routing [RO] netstat -rn
ARP [RO] arp -an
DNS [RO][SENSITIV] scutil --dns
TCP-Verbindungen [RO] netstat -anv -p tcp
Speicher [RO] vm_stat
Dateisysteme [RO] df -h
Protokollfehler [RO][SENSITIV] log show --last 1h --predicate 'messageType == error OR messageType == fault' --style compact

64. Abschlussprüfung nach einer Lösung

Ebene Windows Linux macOS
Zeitpunkt Get-Date -Format o date --iso-8601=seconds date "+%Y-%m-%dT%H:%M:%S%z"
Dienststatus Get-Service -Name <Dienstname> systemctl status <Dienstname>.service launchctl print system/<Dienstlabel>
Listener Get-NetTCPConnection -State Listen -LocalPort <Port> ss -lntp | grep ":<Port>" lsof -nP -iTCP:<Port> -sTCP:LISTEN
TCP-Test Test-NetConnection <Servername> -Port <Port> nc -vz -w 3 <Servername> <Port> nc -vz -w 3 <Servername> <Port>
HTTP-Test curl.exe https://<Servername>/ curl https://<Servername>/ curl https://<Servername>/
neue Fehler Get-WinEvent journalctl log show
Benutzerfunktion ursprünglichen Ablauf wiederholen ursprünglichen Ablauf wiederholen ursprünglichen Ablauf wiederholen
Sicherheit unerlaubten Zugriff negativ testen unerlaubten Zugriff negativ testen unerlaubten Zugriff negativ testen
Monitoring zentrale Überwachung prüfen zentrale Überwachung prüfen zentrale Überwachung prüfen

65. Wichtigste Regeln

  • Erst beobachten, dann verändern.
  • Fehlermeldung vollständig dokumentieren.
  • Uhrzeit und Zeitzone prüfen.
  • Betroffene und funktionierende Systeme vergleichen.
  • Ping nicht mit Dienstverfügbarkeit verwechseln.
  • TCP-Porttest nicht mit funktionierender Anwendung verwechseln.
  • Dienststatus „Running“ nicht mit Dienstgesundheit verwechseln.
  • Zeitliche Korrelation nicht automatisch als Ursache behandeln.
  • Pro Test möglichst nur eine Variable verändern.
  • Erwartetes Ergebnis vor dem Test definieren.
  • Widersprechende Belege aktiv suchen.
  • Vor Neustart flüchtige Informationen sichern.
  • Vor Änderungen Konfiguration und Rückfallweg sichern.
  • Nach der Lösung denselben Test erneut ausführen.
  • Positive, negative und Regressionstests durchführen.
  • Workaround und dauerhafte Lösung getrennt dokumentieren.
  • Offene Maßnahmen mit Verantwortlichkeit und Termin versehen.

Ergebnis dieser Seite

Diese Seite bildet die Schnellreferenz für Kapitel 1. Sie enthält die wichtigsten Befehle für:

  • Windows,
  • Linux,
  • macOS,
  • Systemzustand,
  • Prozesse und Dienste,
  • Netzwerk und DNS,
  • Routing und Verbindungen,
  • HTTP und TLS,
  • Protokolle,
  • Updates,
  • geplante Aufgaben,
  • Berechtigungen,
  • Konfigurationsvergleiche,
  • Beweissicherung,
  • Änderungen und Abschlussprüfungen.

Damit ist Kapitel 1 – Grundlagen der systematischen Fehleranalyse abgeschlossen.


Offizielle Hersteller-, Standard- und Projektdokumentation