1.10 Schnellreferenz – Diagnosebefehle für Windows, Linux und macOS 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 Interpretationen 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. Die Bereiche ab Punkt 3 können über die jeweilige Überschrift auf- und zugeklappt werden. 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 vor der Ausführung ersetzt werden. Platzhalter Bedeutung Hostname oder FQDN des Zielservers IPv4- oder IPv6-Adresse TCP- oder UDP-Port interner Dienstname launchd-Label unter macOS Name eines Prozesses Prozess-ID Benutzerkonto vollständiger Dateipfad Datei- oder Verzeichnispfad freigegebener Speicherort Netzwerkschnittstelle Adresse des abzufragenden DNS-Servers 3. Plattformhinweise Plattform Hinweise Windows PowerShell möglichst mit normalen Benutzerrechten 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 -Full [RO] man [RO] man [RO] Get-Command -Syntax [RO] --help [RO] -h oder man 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 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 vor dem Vergleich umrechnen 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 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 lokale oder Domänenverwaltung verwenden [RO] id [RO] id 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 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 | Format-List * [RO] ps -p -o pid,ppid,user,lstart,stat,%cpu,%mem,command [RO] ps -p -o pid,ppid,user,lstart,state,%cpu,%mem,command Nach Namen suchen [RO] Get-Process -Name [RO] pgrep -a [RO] pgrep -fl 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 [RO][PRIV][SENSITIV] lsof -p 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 [RO] systemctl status .service --no-pager [RO][PRIV] launchctl print system/ Benutzerdienst prüfen [RO] Get-Service -Name [RO] systemctl --user status .service [RO] launchctl print gui/$(id -u)/ Fehlgeschlagene Dienste Status und Ereignisprotokoll prüfen [RO] systemctl --failed Prozess und Unified Log prüfen 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=''" [RO] systemctl cat .service [RO] plutil -p "" Prozess-ID [RO] Get-CimInstance Win32_Service -Filter "Name=''" | Select-Object ProcessId [RO] systemctl show .service -p MainPID [RO] launchctl print system/ Startmodus [RO] Get-CimInstance Win32_Service -Filter "Name=''" | Select-Object StartMode [RO] systemctl is-enabled .service Property-List mit plutil -p prüfen Dienstkonto [RO][SENSITIV] Get-CimInstance Win32_Service -Filter "Name=''" | Select-Object StartName [RO] systemctl show .service -p User -p Group [RO] plutil -p "" 11. Dienstabhängigkeiten Aufgabe Windows Linux mit systemd macOS Benötigte Dienste [RO] Get-Service -Name -RequiredServices [RO] systemctl list-dependencies .service --all keine allgemeine Abhängigkeitsdarstellung Abhängige Dienste [RO] Get-Service -Name -DependentServices [RO] systemctl list-dependencies .service --reverse --all anwendungsspezifisch prüfen Reihenfolge und Anforderungen [RO] sc.exe qc [RO] systemctl show .service -p Requires -p Wants -p After -p Before Property-List und Dokumentation prüfen Effektive Konfiguration [RO] Get-CimInstance Win32_Service -Filter "Name=''" [RO] systemctl cat .service [RO] plutil -p "" 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 TotalVisibleMemorySize und FreePhysicalMemory in KiB ausgegeben. 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 nicht in dieser Unix-Form anwendbar [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 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 Adapter ü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 NetworkManager-DHCP Nicht zutreffend [RO] nmcli device show Nicht zutreffend systemd-networkd Nicht zutreffend [RO] networkctl status Nicht zutreffend Interface-IP [RO] Get-NetIPAddress [RO] ip address show [RO] ipconfig getifaddr DHCP-Lease-Dateien und 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 Resolver abhängig vom Resolver 17. DNS-Auflösung Aufgabe Windows Linux macOS Standardabfrage [TEST] Resolve-DnsName [TEST] getent ahosts [TEST] dscacheutil -q host -a name Abfrage mit dig dig nur wenn installiert [TEST] dig [TEST] dig Kurze Ausgabe [TEST] Resolve-DnsName | Select-Object Name,Type,IPAddress [TEST] dig +short [TEST] dig +short Bestimmten DNS-Server abfragen [TEST] Resolve-DnsName -Server [TEST] dig @ [TEST] dig @ nslookup [TEST] nslookup [TEST] nslookup [TEST] nslookup Reverse Lookup [TEST] Resolve-DnsName [TEST] dig -x [TEST] dig -x 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 IP-Adressen 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 -DiagnoseRouting -InformationLevel Detailed [RO] ip route get [RO] route -n get 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 "" [RO] ip neigh show dev [RO] arp -an Interpretation Zustand Bedeutung Reachable Nachbar wurde kürzlich bestätigt Stale Eintrag vorhanden, aber nicht aktuell bestätigt Incomplete oder Failed Adressauflösung 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 curl ohne Proxy [TEST] curl.exe --noproxy "*" -v https:/// [TEST] curl --noproxy "*" -v https:/// [TEST] curl --noproxy "*" -v https:/// 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 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 . Ein offener UDP-Endpunkt bestätigt nicht, dass eine Anwendung 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 [RO][PRIV] ss -lntp | grep ":" [RO][PRIV] lsof -nP -iTCP: -sTCP:LISTEN PID zu Listener Eigenschaft OwningProcess verwenden Ausgabe von ss -lntp Ausgabe von lsof Prozess zur PID [RO] Get-Process -Id [RO] ps -p -o pid,user,command [RO] ps -p -o pid,user,command Ein 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 [TEST] ping -c 4 [TEST] ping -c 4 Zehn Versuche [TEST] ping -n 10 [TEST] ping -c 10 [TEST] ping -c 10 PowerShell-Test [TEST] Test-Connection -ComputerName -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 -Port -InformationLevel Detailed [TEST] nc -vz -w 3 [TEST] nc -vz -w 3 [TEST] Test-NetConnection -Port -InformationLevel Quiet nc verwenden 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 [TEST] tracepath [TEST] traceroute [TEST] Test-NetConnection -TraceRoute [TEST] traceroute sofern installiert [TEST] traceroute 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 [TEST] nc -vz -w 3 localhost [TEST] nc -vz -w 3 localhost eigene IP [TEST] Test-NetConnection -Port [TEST] nc -vz -w 3 [TEST] nc -vz -w 3 Servername [TEST] Test-NetConnection -Port [TEST] nc -vz -w 3 [TEST] nc -vz -w 3 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:/// [TEST] curl -v -o /dev/null https:/// [TEST] curl -v -o /dev/null https:/// Nur Header [TEST] curl.exe -vI https:/// [TEST] curl -vI https:/// [TEST] curl -vI https:/// Zeitbegrenzung [TEST] curl.exe --connect-timeout 5 --max-time 15 https:/// [TEST] curl --connect-timeout 5 --max-time 15 https:/// [TEST] curl --connect-timeout 5 --max-time 15 https:/// HTTP-Fehler als curl-Fehler [TEST] curl.exe --fail https:/// [TEST] curl --fail https:/// [TEST] curl --fail https:/// Einige Server unterstützen die HTTP-Methode HEAD nicht korrekt. Ein fehlgeschlagener curl -I -Test sollte daher 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:/// 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:/// 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 ":443:" -v -o NUL https:/// [TEST] curl --resolve ":443:" -v -o /dev/null https:/// [TEST] curl --resolve ":443:" -v -o /dev/null https:/// --resolve behält für diesen curl-Aufruf: Hostname, HTTP-Host-Header, TLS-SNI, Zertifikatsprüfung. Nur die Ziel-IP wird vorgegeben. 32. TLS prüfen Aufgabe Windows Linux macOS TLS-Verbindung [TEST] openssl s_client -connect :443 -servername -showcerts sofern OpenSSL installiert [TEST] openssl s_client -connect :443 -servername -showcerts :443 -servername -showcerts " -noout -text [RO] openssl x509 -in "" -noout -text [RO] openssl x509 -in "" -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"} Ereignis-ID [RO] Get-WinEvent -FilterHashtable @{LogName="System"; Id=; StartTime=(Get-Date).AddHours(-1)} Anbieter [RO] Get-WinEvent -FilterHashtable @{LogName="System"; ProviderName=""; StartTime=(Get-Date).AddHours(-1)} Übersicht [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 "\System.evtx" Application [FILE][PRIV] wevtutil epl Application "\Application.evtx" Security [FILE][PRIV][SENSITIV] wevtutil epl Security "\Security.evtx" PowerShell Operational [FILE][PRIV][SENSITIV] wevtutil epl "Microsoft-Windows-PowerShell/Operational" "\PowerShell-Operational.evtx" Vor dem Export sollte ein neuer Zielordner verwendet werden. Vorhandene Dateien 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 .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 > "/journal-current-boot.log" Vorheriger Boot [FILE] journalctl -b -1 --no-pager --output=short-iso-precise > "/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 > "/journal-time-window.log" Dienst [FILE] journalctl -u .service --since "1 hour ago" --no-pager --output=short-iso-precise > "/.log" Kernelmeldungen [FILE][PRIV] dmesg --ctime > "/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 == ""' --style compact Prozessfehler [RO][SENSITIV] log show --last 1h --predicate 'process == "" 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 > "/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 Updateereignisse [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 "\WindowsUpdate.log" Get-HotFix zeigt nicht zwingend jede 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 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 Auffällige Ergebnisse [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-Ergebnis muss anhand der jeweiligen Aufgabe interpretiert werden. 44. Dateiinformationen Aufgabe Windows Linux macOS Dateiinformationen [RO] Get-Item "" | Select-Object FullName,Length,CreationTime,LastWriteTime [RO] stat "" [RO] stat -x "" Dateityp Erweiterung und Anwendung prüfen [RO] file "" [RO] file "" Programmversion [RO] (Get-Item "").VersionInfo Paketmanager oder --version --version oder Systeminformationen Dateiinhalt [RO] Get-Content "" [RO] less "" [RO] less "" Rohinhalt [RO] Get-Content "" -Raw [RO] cat "" [RO] cat "" Bei großen oder binären Dateien sollte nicht der gesamte Inhalt unkontrolliert ausgegeben werden. 45. Dateien und Konfigurationen vergleichen Aufgabe Windows Linux macOS Textdateien vergleichen [RO] Compare-Object (Get-Content "") (Get-Content "") [RO] diff -u "" "" [RO] diff -u "" "" Binäre Gleichheit [RO] Get-FileHash "" -Algorithm SHA256 [RO] sha256sum "" [RO] shasum -a 256 "" 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 -- "" [RO] git log -p -- "" [RO] git log -p -- "" 46. Prüfsummen Aufgabe Windows Linux macOS SHA-256 einer Datei [RO] Get-FileHash "" -Algorithm SHA256 [RO] sha256sum "" [RO] shasum -a 256 "" Prüfsumme prüfen neu berechnen und vergleichen [RO] sha256sum -c "" [RO] shasum -a 256 -c "" Ordner-Manifest [FILE] Get-ChildItem "" -File -Recurse | Get-FileHash -Algorithm SHA256 | Export-Csv "-SHA256.csv" -NoTypeInformation -Encoding UTF8 [FILE] (cd "" && find . -type f -print0 | sort -z | xargs -0 -r sha256sum) > "-SHA256SUMS.txt" [FILE] find "" -type f -exec shasum -a 256 {} \; > "-SHA256SUMS.txt" Eine Prüfsumme dokumentiert die Dateiintegrität ab dem Zeitpunkt ihrer Berechnung, aber nicht automatisch Herkunft oder Authentizität. 47. Dateiberechtigungen Aufgabe Windows Linux macOS ACL anzeigen [RO][SENSITIV] Get-Acl "" | Format-List [RO][SENSITIV] getfacl "" [RO][SENSITIV] ls -lde "" Klassische Ansicht [RO][SENSITIV] icacls "" [RO] ls -ld "" [RO] ls -lde "" Benutzergruppen [RO][SENSITIV] whoami /all [RO] id [RO] id Vollständigen Pfad prüfen Pfadabschnitte mit Get-Acl prüfen [RO] namei -l "" Pfadabschnitte mit ls -lde prüfen Besitzer und Gruppe [RO] Get-Acl "" | Select-Object Owner [RO] stat "" [RO] stat -x "" 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 "\gpresult.html" Gruppenrichtlinienprotokoll [RO] Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" -MaxEvents 100 Sicheren Domänenkanal prüfen [TEST] Test-ComputerSecureChannel -Verbose Bestimmten Domänencontroller prüfen [TEST] Test-ComputerSecureChannel -Server "" -Verbose Sicherheitsereignisse [RO][PRIV][SENSITIV] Get-WinEvent -LogName "Security" -MaxEvents 100 Test-ComputerSecureChannel ist für Domänenmitgliedscomputer vorgesehen. 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 "" -Raw | ConvertFrom-Json | Out-Null PowerShell nur wenn installiert PowerShell nur wenn installiert JSON mit Python [TEST] python3 -m json.tool "" > NUL [TEST] python3 -m json.tool "" > /dev/null [TEST] python3 -m json.tool "" > /dev/null JSON mit jq [TEST] jq empty "" [TEST] jq empty "" [TEST] jq empty "" Property List Nicht zutreffend Nicht zutreffend [TEST] plutil -lint "" systemd-Unit Nicht zutreffend [TEST] systemd-analyze verify "" Nicht zutreffend NGINX [TEST][PRIV] nginx -t sofern installiert [TEST][PRIV] nginx -t [TEST][PRIV] nginx -t sofern installiert Apache installationsabhängig [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 "\Testprotokoll.txt" -IncludeInvocationHeader -NoClobber [FILE][SENSITIV] script "/Testprotokoll.txt" [FILE][SENSITIV] script "/Testprotokoll.txt" Aufzeichnung beenden [FILE] Stop-Transcript exit oder Strg + D exit oder Strg + D Anzeigen und speichern [FILE] | Tee-Object -FilePath "\Ausgabe.txt" [FILE] 2>&1 | tee "/Ausgabe.txt" [FILE] 2>&1 | tee "/Ausgabe.txt" Ausgabe und Fehler speichern [FILE] *> "\Ausgabe.txt" [FILE] > "/Ausgabe.txt" 2>&1 [FILE] > "/Ausgabe.txt" 2>&1 Transkripte können Benutzernamen, Pfade und andere sensible Informationen enthalten. 51. Rückgabewerte prüfen Plattform Befehl Bedeutung PowerShell-Cmdlet [RO] $? Erfolg der 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 Benutzer- oder Anwendungsfunktion kann trotzdem fehlschlagen. 52. 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 und Sitzungsinformationen enthalten. Berechtigung, Speicherort, Zeitraum und Datenschutz müssen vorher geklärt sein. Windows mit pktmon Aufgabe Befehl Aufzeichnung starten [FILE][TEST][PRIV][SENSITIV] pktmon start --capture --pkt-size 0 --file-name "\capture.etl" Aufzeichnung beenden [TEST][PRIV] pktmon stop In PCAPNG umwandeln [FILE][SENSITIV] pktmon etl2pcap "\capture.etl" --out "\capture.pcapng" Linux mit tcpdump [FILE][TEST][PRIV][SENSITIV] sudo tcpdump -i any -nn -s 0 -w "/capture.pcap" macOS mit tcpdump [FILE][TEST][PRIV][SENSITIV] sudo tcpdump -i -nn -s 0 -w "/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 -WhatIf keine vollständige systemctl-Simulation keine vollständige launchctl-Simulation Dienst starten [CHANGE][PRIV] Start-Service -Name -Confirm [CHANGE][PRIV] sudo systemctl start .service [CHANGE][PRIV] sudo launchctl kickstart system/ Konfiguration neu laden anwendungsspezifisch [CHANGE][PRIV] sudo systemctl reload .service anwendungsspezifisch Dienst neu starten [CHANGE][DISRUPTIV][PRIV] Restart-Service -Name -Confirm [CHANGE][DISRUPTIV][PRIV] sudo systemctl restart .service [CHANGE][DISRUPTIV][PRIV] sudo launchctl kickstart -k system/ Nur laufenden Dienst neu starten Status vorher prüfen [CHANGE][DISRUPTIV][PRIV] sudo systemctl try-restart .service Status vorher prüfen Zustand danach [RO] Get-Service -Name [RO] systemctl status .service --no-pager [RO][PRIV] launchctl print system/ Ein Reload funktioniert nur, wenn der jeweilige Dienst diese Funktion unterstützt. 55. Konfigurationsdatei sichern Windows $backupFile = Join-Path "" "config-$(Get-Date -Format 'yyyyMMdd-HHmmss').bak" Copy-Item "" $backupFile Get-FileHash -Path "", $backupFile -Algorithm SHA256 Linux backup_file="/config-$(date +%Y%m%d-%H%M%S).bak" cp --preserve=all -- "" "$backup_file" sha256sum "" "$backup_file" macOS backup_file="/config-$(date +%Y%m%d-%H%M%S).bak" cp -p "" "$backup_file" shasum -a 256 "" "$backup_file" Für komplexe Anwendungen, Datenbanken, Verzeichnisdienste und Cluster muss die 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 "" "" -Force [CHANGE][PRIV] sudo cp --preserve=all -- "" "" [CHANGE][PRIV] sudo cp -p "" "" 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 oder Suchdomäne DNS liefert unterschiedliche IPs Split-DNS, Load Balancing oder 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 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 ist schwerer nachvollziehbar 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 systemctl status .service launchctl print system/ Listener Get-NetTCPConnection -State Listen -LocalPort ss -lntp | grep ":" lsof -nP -iTCP: -sTCP:LISTEN TCP-Test Test-NetConnection -Port nc -vz -w 3 nc -vz -w 3 HTTP-Test curl.exe https:/// curl https:/// curl https:/// 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 Microsoft Learn – PowerShell-Dokumentation Microsoft Learn – Test-NetConnection Microsoft Learn – Resolve-DnsName Microsoft Learn – Get-WinEvent Microsoft Learn – wevtutil Microsoft Learn – Get-Service Microsoft Learn – Restart-Service Microsoft Learn – Get-FileHash Microsoft Learn – Start-Transcript Microsoft Learn – Windows-Update-Protokolldateien Microsoft Learn – Packet Monitor freedesktop.org – systemctl freedesktop.org – journalctl freedesktop.org – systemd-analyze Linux man-pages – ip(8) Linux man-pages – ss(8) Linux man-pages – script(1) Apple Support – Protokollmeldungen in der Konsole Apple Support – Systemdiagnose in der Aktivitätsanzeige Apple Support – Scriptverwaltung mit launchd Apple Support – Installationsverlauf anzeigen curl – Offizielle Befehlsreferenz OpenSSL – s_client RFC Editor – RFC 9110: HTTP Semantics RFC Editor – RFC 3227: Evidence Collection and Archiving