8. Betriebssystem- und Serveranalyse
- 8.1 Windows-Prozesse und Dienste gezielt untersuchen
- 8.2 Active Directory, Gruppenrichtlinien und Kerberos analysieren
- 8.3 Datei-, Freigabe-, Rechte- und Druckdienste analysieren
- 8.4 Linux-Server – Dienste, Prozesse, Protokolle, Ressourcen und Speicher
- 8.5 macOS – Prozesse, Dienste, Protokolle, Ressourcen und Speicher analysieren
8.1 Windows-Prozesse und Dienste gezielt untersuchen
Kurzbeschreibung
Wenn ein Windows-System langsam reagiert, eine Anwendung nicht startet, ein Dienst ausfällt oder ein Prozess ungewöhnliche Ressourcen verbraucht, muss der verursachende Prozess einschließlich seiner Abhängigkeiten untersucht werden.
Windows-Bordmittel und die Microsoft-Sysinternals-Werkzeuge ermöglichen unter anderem die Analyse von:
- Prozessen und untergeordneten Prozessen,
- Diensten,
- Threads,
- CPU- und Arbeitsspeichernutzung,
- geöffneten Dateien und Handles,
- geladenen DLLs,
- Registry-Zugriffen,
- Dateisystemzugriffen,
- Netzwerkverbindungen,
- Autostarteinträgen,
- Programmabstürzen,
- nicht mehr reagierenden Anwendungen.
Ein auffälliger Prozess ist nicht automatisch die eigentliche Ursache. Er kann selbst auf eine Datei, eine Sperre, einen Treiber, eine Datenbank, das Netzwerk oder einen anderen Dienst warten.
1. Typische Symptome
- Anwendung startet nicht.
- Anwendung reagiert nicht mehr.
- Dienst beendet sich unerwartet.
- Dienst bleibt im Zustand „Wird gestartet“ oder „Wird beendet“.
- CPU-Auslastung ist dauerhaft hoch.
- Arbeitsspeicherverbrauch wächst kontinuierlich.
- Datenträger wird durch einen Prozess stark ausgelastet.
- Datei kann nicht gelöscht, verschoben oder überschrieben werden.
- Anwendung meldet „Zugriff verweigert“.
- Prozess öffnet ungewöhnlich viele Dateien oder Registry-Schlüssel.
- Netzwerkverbindung wird von einem unbekannten Prozess hergestellt.
- Programm funktioniert nur mit Administratorrechten.
- Fehler tritt nur nach der Anmeldung oder nach einem Neustart auf.
- Systemstart oder Benutzeranmeldung dauert ungewöhnlich lange.
- Anwendung stürzt ohne eindeutige Fehlermeldung ab.
- Ereignisanzeige enthält Anwendungs-, Dienst- oder Treiberfehler.
- Prozesse werden mehrfach oder unerwartet gestartet.
- Anwendung funktioniert nach einem Prozessneustart nur vorübergehend.
2. Mögliche Auswirkungen
- einzelne Anwendung nicht verfügbar,
- Hintergrunddienst ausgefallen,
- mehrere Benutzer betroffen,
- Serverdienst nicht erreichbar,
- Leistungsprobleme des gesamten Systems,
- blockierte Dateien oder Verzeichnisse,
- Datenverlust durch einen Programmabsturz,
- fehlgeschlagene Sicherung oder Synchronisation,
- fehlerhafte Anmeldung oder Benutzerprofilinitialisierung,
- Sicherheitsrisiko durch unbekannten Prozess,
- Produktionsausfall bei geschäftskritischen Diensten.
3. Sicherheits- und Betriebswarnung
Sysinternals-Werkzeuge können tiefgehende Informationen über Prozesse, Benutzer, Dateien und Netzwerkverbindungen anzeigen. Diagnoseergebnisse können enthalten:
- Benutzernamen,
- interne Pfade,
- Servernamen,
- IP-Adressen,
- Befehlszeilenargumente,
- Zugriffstoken,
- geladene Module,
- Registry-Inhalte,
- personenbezogene Daten.
Besondere Vorsicht gilt bei:
- Beenden eines Prozesses,
- Stoppen oder Neustarten eines Dienstes,
- Schließen eines Handles,
- Deaktivieren eines Autostarteintrags,
- Erstellen eines vollständigen Speicherabbilds,
- länger laufender Process-Monitor-Aufzeichnung,
- Aktivieren zusätzlicher Debugprotokollierung.
Ein vollständiges Speicherabbild kann sensible Daten wie Kennwörter, Tokens, Schlüssel oder Anwendungsdaten enthalten. Dump-, ETL- und PML-Dateien müssen deshalb geschützt gespeichert und nach Abschluss der Analyse kontrolliert gelöscht werden.
Werkzeuge sollten nur aus der offiziellen Microsoft-Quelle bezogen werden. Vor dem Einsatz auf einem Produktivsystem sind Auswirkung, benötigter Speicherplatz und mögliche Leistungseinflüsse zu prüfen.
4. Werkzeugauswahl
| Fragestellung | Geeignetes Werkzeug |
|---|---|
| Welcher Prozess benötigt CPU oder RAM? | Task-Manager, Ressourcenmonitor, PowerShell, Process Explorer |
| Welcher Dienst gehört zu einem Prozess? | Task-Manager, tasklist /svc, Process Explorer |
| Welcher Prozess hat eine Datei geöffnet? | Ressourcenmonitor, Handle, Process Explorer |
| Welche DLLs hat ein Prozess geladen? | Process Explorer, ListDLLs |
| Warum erhält eine Anwendung „Zugriff verweigert“? | Process Monitor, AccessChk |
| Welcher Prozess stellt eine Netzwerkverbindung her? | TCPView, Get-NetTCPConnection |
| Was wird beim Systemstart automatisch geladen? | Autoruns |
| Warum stürzt eine Anwendung ab? | Ereignisanzeige, Zuverlässigkeitsverlauf, ProcDump, WinDbg |
| Warum reagiert ein Prozess nicht mehr? | Process Explorer, ProcDump, Wait-Chain-Analyse |
| Welcher Prozess erzeugt Registry- oder Dateisystemzugriffe? | Process Monitor |
| Warum ist das System zeitweise langsam? | Leistungsüberwachung, WPR und WPA |
| Wie hängen Prozesse zusammen? | Process Explorer |
| Welche Prozesse sind signiert? | Process Explorer, Sigcheck |
| Welche Berechtigung besitzt ein Benutzer oder Dienst? | AccessChk, whoami |
5. Benötigte Informationen
Vor der Diagnose sollten mindestens folgende Informationen vorliegen:
Computer:
Betriebssystem und Build:
betroffene Anwendung:
betroffener Dienst:
Prozessname:
Prozess-ID:
Benutzerkonto des Prozesses:
Beginn des Problems:
exakte Fehlermeldung:
Fehlercode oder Event-ID:
reproduzierbar:
letzter funktionierender Zeitpunkt:
letzte Änderung:
betroffene Benutzer:
Auswirkung:
bereits durchgeführte Maßnahmen:
Zusätzlich hilfreich:
- Installations- oder Updatezeitpunkt,
- Anwendungsversion,
- Dienstkonto,
- erwartete Netzwerkziele,
- erwartete Dateien und Registry-Pfade,
- funktionierendes Vergleichssystem,
- Baseline der normalen Ressourcennutzung.
6. Ausgangszustand sichern
Vor einem Neustart oder dem Beenden eines Prozesses sollten flüchtige Informationen dokumentiert werden.
Get-Date
Get-ComputerInfo |
Select-Object WindowsProductName,
WindowsVersion,
OsBuildNumber,
OsLastBootUpTime
Laufende Prozesse sichern:
Get-Process |
Sort-Object ProcessName |
Select-Object ProcessName,
Id,
CPU,
WorkingSet64,
Handles,
Threads
Laufende Dienste sichern:
Get-Service |
Where-Object Status -eq 'Running' |
Sort-Object Name
Aktive TCP-Verbindungen sichern:
Get-NetTCPConnection |
Select-Object LocalAddress,
LocalPort,
RemoteAddress,
RemotePort,
State,
OwningProcess
Ereignisse der letzten zwei Stunden:
Get-WinEvent -FilterHashtable @{
LogName = 'System', 'Application'
StartTime = (Get-Date).AddHours(-2)
} |
Select-Object TimeCreated,
LogName,
Id,
LevelDisplayName,
ProviderName,
Message
Die Ausgabe kann bei Bedarf kontrolliert in Dateien exportiert werden. Dabei sind Datenschutz und Speicherort zu beachten.
7. Sichere Schnellprüfung
- Exakte Fehlermeldung und Uhrzeit dokumentieren.
- Prozess- und Dienststatus prüfen.
- CPU, Arbeitsspeicher, Handles und Threads vergleichen.
- System- und Anwendungsereignisse zum Fehlerzeitpunkt untersuchen.
- Mit Process Explorer Prozessbaum und Eigenschaften prüfen.
- Mit Process Monitor nur den betroffenen Prozess aufzeichnen.
- Netzwerkverbindungen mit TCPView oder PowerShell prüfen.
- Erst nach gesicherter Diagnose eine kontrollierte Maßnahme durchführen.
8. Prozesse mit PowerShell untersuchen
Alle Prozesse anzeigen:
Get-Process
Prozesse nach CPU-Gesamtzeit sortieren:
Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 15 ProcessName,
Id,
CPU,
WorkingSet64,
Handles,
Threads
Prozesse nach Arbeitsspeicher sortieren:
Get-Process |
Sort-Object WorkingSet64 -Descending |
Select-Object -First 15 ProcessName,
Id,
WorkingSet64,
PagedMemorySize64,
VirtualMemorySize64
Prozesse mit vielen Handles:
Get-Process |
Sort-Object Handles -Descending |
Select-Object -First 15 ProcessName,
Id,
Handles
Bestimmten Prozess untersuchen:
Get-Process -Id <PID> |
Format-List *
Prozess mit CIM einschließlich Befehlszeile und Elternprozess:
Get-CimInstance Win32_Process |
Where-Object ProcessId -eq <PID> |
Select-Object Name,
ProcessId,
ParentProcessId,
ExecutablePath,
CommandLine,
CreationDate
Der Wert CPU bei Get-Process ist die seit dem Prozessstart verbrauchte Prozessorzeit und keine momentane prozentuale CPU-Auslastung.
9. Prozess-ID und Dienst zuordnen
Eine Prozess-ID kann sich nach jedem Neustart des Prozesses ändern. Bei der Dokumentation müssen deshalb PID, Zeitpunkt und Prozessstart zusammen betrachtet werden.
Windows-Befehl:
tasklist /svc
Bestimmte PID suchen:
tasklist /svc /fi "PID eq <PID>"
Dienste einschließlich Prozess-ID:
Get-CimInstance Win32_Service |
Select-Object Name,
DisplayName,
State,
StartMode,
ProcessId,
StartName
Dienst zu einer PID suchen:
Get-CimInstance Win32_Service |
Where-Object ProcessId -eq <PID> |
Select-Object Name,
DisplayName,
State,
StartMode,
StartName
Mehrere Windows-Dienste können innerhalb desselben svchost.exe-Prozesses ausgeführt werden. Der Prozessname allein reicht deshalb nicht zur eindeutigen Zuordnung.
10. Dienste untersuchen
Alle Dienste:
Get-Service |
Sort-Object Status, Name
Automatisch startende, aber nicht laufende Dienste:
Get-CimInstance Win32_Service |
Where-Object {
$_.StartMode -eq 'Auto' -and
$_.State -ne 'Running'
} |
Select-Object Name,
DisplayName,
State,
StartMode,
StartName,
ExitCode
Bestimmten Dienst prüfen:
Get-Service -Name <Dienstname>
Ausführliche Dienstkonfiguration:
sc.exe qc <Dienstname>
Aktuellen Dienststatus:
sc.exe queryex <Dienstname>
Abhängigkeiten anzeigen:
Get-Service -Name <Dienstname> -DependentServices
Get-Service -Name <Dienstname> -RequiredServices
Zu prüfen sind:
- Starttyp,
- aktueller Status,
- Dienstkonto,
- ausführbare Datei,
- Abhängigkeiten,
- Rücksetzungs- und Wiederherstellungsoptionen,
- Exit-Code,
- wiederholte Neustarts,
- Zeitüberschreitungen beim Start,
- benötigte Dateien und Netzwerkziele.
Ein Dienst darf nicht allein deshalb gestartet werden, weil sein Starttyp auf „Automatisch“ steht. Verzögert gestartete Dienste, Triggerstart, Clustersteuerung oder bewusst deaktivierte Komponenten müssen berücksichtigt werden.
11. Ereignisanzeige untersuchen
Wichtige Protokollbereiche:
- Windows-Protokolle → Anwendung
- Windows-Protokolle → System
- Windows-Protokolle → Sicherheit
- Anwendungs- und Dienstprotokolle
- Microsoft → Windows → Windows Error Reporting
- Microsoft → Windows → Diagnostics-Performance
- herstellerspezifische Anwendungsprotokolle
Fehler und Warnungen der letzten zwei Stunden:
Get-WinEvent -FilterHashtable @{
LogName = 'System', 'Application'
Level = 2, 3
StartTime = (Get-Date).AddHours(-2)
} |
Select-Object TimeCreated,
LogName,
Id,
ProviderName,
LevelDisplayName,
Message
Ereignisse eines bestimmten Anbieters:
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
ProviderName = '<Provider>'
StartTime = (Get-Date).AddHours(-2)
}
Ereignisse eines bestimmten Zeitraums:
$Start = Get-Date '2026-08-02 09:00:00'
$Ende = Get-Date '2026-08-02 10:00:00'
Get-WinEvent -FilterHashtable @{
LogName = 'System', 'Application'
StartTime = $Start
EndTime = $Ende
}
Wichtige Grundregel:
Zuerst nach Zeitpunkt, betroffener Komponente und technischer Wirkung filtern. Nicht jeder Fehler oder jede Warnung in der Ereignisanzeige gehört zur untersuchten Störung.
12. Dienstfehler im Systemprotokoll
Der Service Control Manager protokolliert Start-, Stopp- und Dienstfehler im Systemprotokoll.
Beispielhafte Abfrage:
Get-WinEvent -FilterHashtable @{
LogName = 'System'
ProviderName = 'Service Control Manager'
StartTime = (Get-Date).AddHours(-4)
} |
Select-Object TimeCreated,
Id,
LevelDisplayName,
Message
Häufig relevante Ereignisarten betreffen:
- unerwartet beendete Dienste,
- fehlgeschlagene Dienststarts,
- Zeitüberschreitungen,
- ungültige Dienstkonten,
- fehlende Dateien,
- fehlerhafte Abhängigkeiten.
Event-IDs dürfen nicht ohne Prüfung von Provider, Windows-Version und vollständigem Ereignistext interpretiert werden.
13. Process Explorer verwenden
Process Explorer zeigt Prozesse hierarchisch in einem Prozessbaum an.
Wichtige Informationen:
- Eltern- und Kindprozesse,
- Benutzerkonto,
- Integritätsstufe,
- Befehlszeile,
- ausführbare Datei,
- digitale Signatur,
- Prozessstart,
- CPU-Auslastung,
- private Bytes,
- Working Set,
- Threads,
- Handles,
- geladene DLLs,
- TCP/IP-Aktivität,
- Sicherheits-Token.
Empfohlene Vorgehensweise:
- Process Explorer als Administrator starten, wenn erhöhte Prozesse untersucht werden müssen.
-
View → Show Process Treeverwenden. - Unter
View → Select Columnsbenötigte Spalten aktivieren. - Betroffenen Prozess markieren.
- Eigenschaften des Prozesses öffnen.
- Image, Performance, Threads, TCP/IP und Security prüfen.
- Prozesspfad und digitale Signatur kontrollieren.
- Eltern- und Kindprozesse dokumentieren.
- Auffällige Threads oder Handles untersuchen.
- Prozess erst nach Sicherung der Ergebnisse verändern.
Hilfreiche Markierungen im Prozessbaum können auf unterschiedliche Prozessarten oder Lebenszyklen hinweisen. Die Farbdarstellung ist konfigurierbar und darf nicht ohne Prüfung der eingestellten Farblegende interpretiert werden.
14. Threads untersuchen
Ein Prozess kann insgesamt unauffällig erscheinen, obwohl ein einzelner Thread dauerhaft einen CPU-Kern beansprucht.
In Process Explorer:
- Prozess öffnen.
- Registerkarte
Threadsauswählen. - Threads nach CPU-Auslastung sortieren.
- Thread-ID und Startadresse dokumentieren.
- bei verfügbaren Symbolen den Stack untersuchen.
- geladenes Modul oder zugehörige DLL bestimmen.
Mögliche Befunde:
| Befund | Mögliche Bedeutung |
|---|---|
| ein Thread dauerhaft stark ausgelastet | Endlosschleife oder Single-Thread-Engpass |
| viele Threads entstehen fortlaufend | Thread-Leak oder fehlerhafte Parallelisierung |
| Thread wartet lange | Datei, Netzwerk, Lock oder externe Komponente |
| Startadresse gehört zu Drittanbieter-DLL | Anwendung oder Erweiterung untersuchen |
| Startadresse gehört zu Sicherheitssoftware | Scan oder Filtertreiber als mögliche Beteiligung prüfen |
| Prozess hat ungewöhnlich viele Threads | Worker-Konfiguration, Deadlock oder fehlerhafte Anwendung |
Das Beenden eines einzelnen Threads kann den Prozess beschädigen und ist keine sichere Standardmaßnahme.
15. Nicht reagierende Anwendungen und Wait Chains
Eine Anwendung kann als „Keine Rückmeldung“ erscheinen, wenn ihr Oberflächenthread nicht rechtzeitig auf Windows-Nachrichten reagiert.
Mögliche Ursachen:
- lang laufende Berechnung,
- blockierte Dateioperation,
- Netzwerk-Timeout,
- Datenbankabfrage,
- gegenseitige Sperre,
- blockierter untergeordneter Prozess,
- nicht reagierende Erweiterung,
- Treiberproblem.
Im Ressourcenmonitor kann über die CPU-Ansicht bei einem Prozess die Warteschlange beziehungsweise Wait Chain analysiert werden.
Ein möglicher Deadlock liegt vor, wenn mehrere Threads oder Prozesse gegenseitig auf Ressourcen warten. Die Wait-Chain-Analyse liefert einen Hinweis, aber nicht immer einen vollständigen Ursachennachweis.
Vor dem Beenden eines wartenden Prozesses sollten Dump, Ereignisse und Anwendungslogs gesichert werden.
16. Geöffnete Dateien und Handles untersuchen
Eine Datei kann nicht gelöscht oder umbenannt werden, wenn ein Prozess ein passendes Handle geöffnet hält.
Process Explorer:
-
Find → Find Handle or DLLöffnen. - Teil des Datei- oder Verzeichnisnamens eingeben.
- gefundenen Prozess und Handle-Typ prüfen.
- Anwendung möglichst regulär schließen.
- erst danach einen kontrollierten Prozess- oder Dienstneustart erwägen.
Handle als Kommandozeilenwerkzeug:
handle.exe "<Dateiname-oder-Pfad>"
Nach PID filtern:
handle.exe -p <PID>
Das direkte Schließen eines Handles kann:
- Datenverlust verursachen,
- eine Anwendung zum Absturz bringen,
- einen inkonsistenten Zustand erzeugen,
- eine Transaktion oder Sperrlogik beschädigen.
Ein Handle sollte deshalb nicht als erste Maßnahme erzwungen geschlossen werden.
17. Geladene DLLs untersuchen
Process Explorer kann im unteren Fensterbereich Handles oder geladene DLLs anzeigen.
Umschalten:
View → Lower Pane View → DLLs
Zu prüfen sind:
- vollständiger DLL-Pfad,
- Hersteller,
- digitale Signatur,
- Version,
- Ladezeitpunkt,
- unerwartete Verzeichnisse,
- unterschiedliche Versionen derselben Bibliothek,
- nicht signierte Erweiterungen.
ListDLLs:
listdlls.exe <Prozessname>
Nach einer bestimmten DLL suchen:
listdlls.exe -d <DLL-Name>
Eine unbekannte oder nicht signierte DLL ist nicht automatisch Schadsoftware. Sie muss anhand von Pfad, Hersteller, Signatur, Hash, Installationszusammenhang und Sicherheitsprüfung bewertet werden.
18. Process Monitor verwenden
Process Monitor zeichnet in Echtzeit unter anderem folgende Ereignisse auf:
- Dateisystemzugriffe,
- Registry-Zugriffe,
- Prozess- und Threadaktivität,
- Laden von DLLs,
- bestimmte Profilierungsereignisse.
Da sehr viele Ereignisse entstehen können, muss die Aufzeichnung gefiltert und zeitlich begrenzt werden.
Empfohlener Ablauf:
- Process Monitor starten.
- Aufzeichnung zunächst anhalten.
- vorhandene Ereignisse leeren.
- Filter für den betroffenen Prozess setzen.
- nur benötigte Ereignisklassen aktivieren.
- Aufzeichnung starten.
- Fehler genau einmal reproduzieren.
- Aufzeichnung sofort anhalten.
- Ereignisse rund um den Fehlerzeitpunkt untersuchen.
- Aufzeichnung geschützt speichern oder nach Abschluss löschen.
Beispielhafte Filter:
Process Name is <Anwendung.exe> then Include
oder:
PID is <PID> then Include
Zusätzliche Filter können beispielsweise betreffen:
Result is ACCESS DENIED
Result is NAME NOT FOUND
Result is PATH NOT FOUND
Operation is CreateFile
Operation is RegOpenKey
19. Process-Monitor-Ergebnisse bewerten
Häufige Ergebnisse:
| Ergebnis | Bedeutung |
|---|---|
SUCCESS |
Operation wurde erfolgreich ausgeführt |
NAME NOT FOUND |
Objekt mit diesem Namen wurde nicht gefunden |
PATH NOT FOUND |
Teil des Pfades wurde nicht gefunden |
ACCESS DENIED |
Zugriff wurde durch Berechtigung oder Sicherheitsmechanismus verweigert |
SHARING VIOLATION |
Objekt wird in nicht kompatibler Weise verwendet |
BUFFER OVERFLOW |
häufig normaler Teil einer Größenabfrage |
NO MORE FILES |
Verzeichnisaufzählung ist beendet |
REPARSE |
Pfad wurde über einen Reparse Point weitergeleitet |
Nicht jeder rote oder fehlgeschlagene Eintrag ist ein Fehler. Anwendungen prüfen häufig mehrere mögliche Pfade, Registry-Schlüssel oder Dateinamen, bevor sie den tatsächlich vorhandenen Eintrag verwenden.
Ein relevanter Befund entsteht erst, wenn:
- der Zeitpunkt mit dem Symptom übereinstimmt,
- das Objekt für die Funktion benötigt wird,
- keine erfolgreiche Ausweichoperation folgt,
- das Ergebnis technisch zum Fehler passt,
- der Fehler reproduzierbar ist.
20. „Zugriff verweigert“ untersuchen
Mögliche Ursachen:
- fehlende NTFS-Berechtigung,
- fehlende Freigabeberechtigung,
- fehlendes Benutzerrecht,
- niedrige Integritätsstufe,
- UAC,
- Dienstkonto ohne erforderliche Rechte,
- Datei durch Sicherheitssoftware blockiert,
- Controlled Folder Access,
- Zugriff auf geschützten Registry-Bereich,
- Netzwerkzugriff unter einem anderen Konto,
- Anwendung verwendet einen falschen Pfad.
Aktuelle Identität:
whoami
Gruppen und Sicherheitskennungen:
whoami /groups
Privilegien:
whoami /priv
Effektive NTFS-Berechtigungen sollten mit den Windows-Sicherheitseinstellungen oder einem kontrollierten Werkzeug geprüft werden.
AccessChk-Beispiel:
accesschk.exe -nobanner -v "<Benutzer>" "<Pfad>"
Die genaue Syntax ist vor dem produktiven Einsatz anhand der aktuellen Microsoft-Dokumentation zu prüfen.
Die dauerhafte Ausführung einer Anwendung als Administrator ist keine fachgerechte Standardlösung. Stattdessen muss die konkret fehlende Berechtigung identifiziert und nach dem Minimalprinzip vergeben werden.
21. Netzwerkverbindungen einem Prozess zuordnen
PowerShell:
Get-NetTCPConnection |
Sort-Object State, RemoteAddress |
Select-Object LocalAddress,
LocalPort,
RemoteAddress,
RemotePort,
State,
OwningProcess
Verbindungen eines bestimmten Prozesses:
Get-NetTCPConnection |
Where-Object OwningProcess -eq <PID>
Prozess zuordnen:
Get-Process -Id <PID>
TCPView zeigt:
- lokale Adresse,
- lokalen Port,
- entfernte Adresse,
- entfernten Port,
- Verbindungsstatus,
- zugehörigen Prozess,
- Prozess-ID.
Zu prüfen sind:
- erwartetes Ziel,
- erwarteter Port,
- wiederholte Verbindungsversuche,
- viele Verbindungen im selben Zustand,
- Verbindung zu nicht erwarteten Systemen,
- Verbindung nur über IPv4 oder IPv6,
- kurzzeitig entstehende Verbindungen,
- Portkonflikte.
Eine unbekannte Verbindung ist nicht automatisch bösartig. DNS, CDN, Update-, Telemetrie-, Lizenz- und Cloud-Dienste können externe Ziele verwenden. Der Zusammenhang muss geprüft werden.
22. Listener und Portkonflikte untersuchen
Lauschende TCP-Ports:
Get-NetTCPConnection -State Listen |
Sort-Object LocalPort |
Select-Object LocalAddress,
LocalPort,
OwningProcess
Prozess zu einem Port suchen:
Get-NetTCPConnection -LocalPort <Port> |
Select-Object LocalAddress,
LocalPort,
State,
OwningProcess
Mit klassischem Windows-Befehl:
netstat -ano
Mögliche Befunde:
| Befund | Mögliche Bedeutung |
|---|---|
| erwarteter Port fehlt | Dienst läuft nicht oder bindet nicht |
Port nur an 127.0.0.1 gebunden |
nur lokaler Zugriff möglich |
| Port an unerwartete Adresse gebunden | Konfiguration prüfen |
| andere PID verwendet den Port | Portkonflikt |
viele Verbindungen in SYN_SENT |
Ziel oder Netzwerk antwortet nicht |
viele Verbindungen in TIME_WAIT |
hohe Verbindungsrate oder fehlendes Connection-Reuse |
viele Verbindungen in CLOSE_WAIT |
Anwendung schließt empfangene Verbindungen nicht korrekt |
| Listener vorhanden, Zugriff scheitert | Firewall, TLS, Anwendung oder Rückweg prüfen |
23. Autostarts mit Autoruns untersuchen
Autoruns zeigt deutlich mehr Autostartorte als der Task-Manager.
Zu den möglichen Kategorien gehören:
- Benutzeranmeldung,
- Dienste,
- Treiber,
- geplante Aufgaben,
- Explorer-Erweiterungen,
- Browserkomponenten,
- Winlogon-Komponenten,
- AppInit- und Image-Hijack-Einträge,
- Codecs,
- Office-Erweiterungen.
Empfohlene Vorgehensweise:
- Autoruns als Administrator starten.
- vollständige Erfassung abwarten.
- Microsoft-Einträge bei Bedarf ausblenden, ohne sie zu löschen.
- nach nicht vorhandenen Dateien suchen.
- Publisher und Signatur prüfen.
- Eintrag, Pfad und Kategorie dokumentieren.
- verdächtigen Eintrag zunächst deaktivieren statt löschen.
- Neustart- oder Anmeldetest kontrolliert durchführen.
- bei ausbleibender Wirkung Eintrag wieder aktivieren.
Ein nicht signierter Autostarteintrag ist nicht automatisch Schadsoftware. Herkunft, Pfad, Hash, Installationszeitpunkt und Sicherheitsmeldungen müssen gemeinsam bewertet werden.
24. Digitale Signaturen mit Sigcheck prüfen
Beispiel:
sigcheck.exe -nobanner -a -h "<Pfad-zur-Datei>"
Mögliche Prüfpunkte:
- digitale Signatur vorhanden,
- Signatur gültig,
- Herausgeber erwartet,
- Zeitstempel vorhanden,
- Dateiversion,
- Produktname,
- kryptografischer Hash,
- Pfad der Datei.
Eine gültige Signatur beweist, dass die Datei seit der Signierung nicht unbemerkt verändert wurde und zu welchem Zertifikat sie gehört. Sie beweist nicht automatisch, dass die Software erwünscht, fehlerfrei oder für den konkreten Einsatzzweck sicher ist.
Online-Prüfungen oder Uploads zu externen Diensten dürfen nur unter Beachtung von Datenschutz, Geheimhaltung und Unternehmensrichtlinien durchgeführt werden.
25. Abstürze und Hänger mit ProcDump erfassen
ProcDump kann Speicherabbilder unter bestimmten Bedingungen erzeugen, beispielsweise bei:
- Prozessabsturz,
- unbehandelter Ausnahme,
- hoher CPU-Auslastung,
- nicht reagierendem Fenster,
- bestimmten Leistungsindikatoren.
Manuelles vollständiges Speicherabbild:
procdump.exe -accepteula -ma <PID> "<Zielverzeichnis>"
Dump bei unbehandelter Ausnahme:
procdump.exe -accepteula -e -ma <Prozessname.exe> "<Zielverzeichnis>"
Dump bei nicht reagierendem Fenster:
procdump.exe -accepteula -h -ma <Prozessname.exe> "<Zielverzeichnis>"
Vor dem Einsatz muss geprüft werden:
- ausreichend freier Speicherplatz,
- geschütztes Zielverzeichnis,
- mögliche Größe des Dumps,
- Datenschutz,
- Auswirkung auf den Prozess,
- erforderliche Freigabe,
- geeignetes Analysewerkzeug,
- sichere Übermittlung an Hersteller oder Entwicklung.
Ein Dump ist noch keine Fehlerdiagnose. Er muss mit Symbolen und geeigneten Debugwerkzeugen analysiert werden.
26. Windows Performance Recorder und Analyzer
Für komplexe oder nur zeitweise auftretende Leistungsprobleme können Windows Performance Recorder und Windows Performance Analyzer eingesetzt werden.
WPR erfasst ETW-Ereignisse. WPA stellt die erfassten Daten als Tabellen und Diagramme dar.
Typische Analysebereiche:
- CPU-Nutzung,
- CPU-Nutzung nach Prozess und Thread,
- Datenträger-I/O,
- Datei-I/O,
- DPC und ISR,
- Kontextwechsel,
- Prozesslebenszyklus,
- Start- und Anmeldeleistung,
- Netzwerkaktivität,
- Arbeitsspeicherverhalten.
Grundsätzlicher Ablauf:
- geeignetes WPR-Profil auswählen.
- Speicherplatz und Aufzeichnungsmodus prüfen.
- Aufzeichnung starten.
- Problem reproduzieren.
- Aufzeichnung unmittelbar danach stoppen.
- ETL-Datei geschützt speichern.
- Datei mit WPA öffnen.
- Zeitraum des Fehlers markieren.
- Prozess, Thread und Ressource korrelieren.
- Aufzeichnung nach Abschluss kontrolliert archivieren oder löschen.
Eine ETW-Aufzeichnung kann groß werden und das System zusätzlich belasten. Profil, Dauer und Detailgrad müssen deshalb begrenzt werden.
27. Prozesse sicher beenden oder neu starten
Ein Prozess darf erst beendet werden, wenn geklärt wurde:
- welche Anwendung oder welcher Dienst betroffen ist,
- ob Daten gespeichert wurden,
- ob Transaktionen laufen,
- ob andere Dienste den Prozess verwenden,
- ob der Prozess automatisch neu startet,
- ob ein Cluster oder Watchdog zuständig ist,
- ob ein Dump benötigt wird,
- welche Benutzer betroffen sind,
- wie der Rückweg aussieht.
Kontrolliertes Beenden ohne Erzwingen:
Stop-Process -Id <PID> -WhatIf
-WhatIf zeigt nur die geplante Aktion.
Erst nach Prüfung:
Stop-Process -Id <PID>
Erzwungenes Beenden:
Stop-Process -Id <PID> -Force
-Force erhöht das Risiko von Datenverlust oder inkonsistenten Zuständen und sollte nur bei begründetem Bedarf verwendet werden.
Bei Diensten ist ein kontrollierter Dienstneustart in der Regel besser als das direkte Beenden des zugehörigen Prozesses:
Restart-Service -Name <Dienstname> -WhatIf
Danach:
Restart-Service -Name <Dienstname>
28. Befundmatrix
| Befund | Bedeutung | Nächster Test |
|---|---|---|
| Prozess beansprucht dauerhaft einen Kern | einzelner Thread möglicherweise ausgelastet | Threads und Stack in Process Explorer prüfen |
| Working Set hoch, aber stabil | möglicherweise normaler Cache | Private Bytes und zeitliche Entwicklung prüfen |
| Private Bytes wachsen dauerhaft | mögliches Speicherleck | Verlauf erfassen und Dump erstellen |
| Handle-Anzahl wächst dauerhaft | mögliches Handle-Leak | Handle-Typen und geöffnete Objekte prüfen |
| Thread-Anzahl wächst dauerhaft | mögliches Thread-Leak | Threaderzeugung und Anwendung untersuchen |
viele ACCESS DENIED unmittelbar vor Fehler |
Berechtigungsproblem möglich | Identität und effektive Rechte prüfen |
NAME NOT FOUND, danach SUCCESS |
normale Suchlogik möglich | erfolgreichen Zielpfad bestimmen |
PATH NOT FOUND ohne erfolgreichen Ersatz |
fehlender Pfad oder fehlerhafte Konfiguration | Anwendungskonfiguration prüfen |
| Datei ist gesperrt | Prozess hält Handle offen | Handle-Suche durchführen |
| Dienst beendet sich wiederholt | Anwendung, Abhängigkeit oder Dienstkonto | Ereignisse und Anwendungslog prüfen |
| Dienst bleibt bei „Wird gestartet“ | Initialisierung oder Abhängigkeit hängt | Wait Chain, Netzwerk und Logs prüfen |
| Port wird von anderer PID verwendet | Portkonflikt | Prozess und Konfiguration identifizieren |
viele Verbindungen in CLOSE_WAIT |
Anwendung schließt Verbindungen nicht | Anwendung und Verbindungspool prüfen |
| unbekannte DLL geladen | Erweiterung oder mögliche Manipulation | Pfad, Signatur, Hash und Herkunft prüfen |
| Fehler nur nach Anmeldung | Autostart oder Benutzerkonfiguration | Autoruns und Benutzerprofil prüfen |
| Fehler nur nach Update | Versions- oder Kompatibilitätsproblem | Änderungsverlauf und Herstellerhinweise |
| Prozess stürzt ohne sichtbare Meldung ab | Ausnahme oder externe Beendigung | Ereignisse, WER und ProcDump |
| Problem nur unter Dienstkonto | Berechtigung oder Benutzerumgebung | Identität, Rechte und Pfade vergleichen |
| Anwendung funktioniert nur erhöht | fehlende Berechtigung oder falscher Speicherort | Process Monitor und AccessChk |
| mehrere Prozesse gleichzeitig auffällig | gemeinsame Abhängigkeit | Storage, Netzwerk, Sicherheitssoftware |
| nach Neustart vorübergehend behoben | Zustand zurückgesetzt, Ursache unbekannt | Langzeitmessung und Dump-Trigger |
29. Typische Ursachen und passende Maßnahmen
Ursache: fehlerhafter oder blockierter Prozess
Nachweis:
- Prozess reagiert nicht,
- Wait Chain zeigt Blockierung,
- Dump oder Log bestätigt den Fehler.
Mögliche Maßnahme:
- Diagnosezustand sichern,
- Anwendung kontrolliert schließen,
- betroffenen Dienst oder Prozess neu starten,
- Herstelleranalyse durchführen.
Rollback:
- nicht anwendbar, wenn nur der Prozess neu gestartet wurde;
- gegebenenfalls auf vorherige Anwendungsversion zurückwechseln.
Verifikation:
- ursprüngliche Funktion testen,
- Ressourcen und Logs kontrollieren,
- Wiederauftreten überwachen.
Ursache: fehlende Berechtigung
Nachweis:
- Process Monitor zeigt relevanten Zugriff mit
ACCESS DENIED, - Benutzer- oder Dienstkonto besitzt das benötigte Recht nicht.
Mögliche Maßnahme:
- genau erforderliche Berechtigung nach dem Minimalprinzip ergänzen,
- Dienstkonto oder Pfadkonfiguration korrigieren.
Rollback:
- hinzugefügte Berechtigung dokumentiert entfernen.
Verifikation:
- Anwendung unter dem vorgesehenen Konto testen,
- keine unnötigen Rechte vergeben.
Ursache: fehlende Datei oder fehlerhafter Pfad
Nachweis:
- Process Monitor zeigt relevanten Zugriff mit
NAME NOT FOUNDoderPATH NOT FOUND, - kein erfolgreicher alternativer Zugriff folgt.
Mögliche Maßnahme:
- Anwendung reparieren,
- Konfigurationspfad korrigieren,
- Datei aus vertrauenswürdiger Quelle wiederherstellen.
Rollback:
- ursprüngliche Konfiguration sichern und wiederherstellen können.
Verifikation:
- Datei wird erfolgreich geöffnet,
- Anwendung funktioniert,
- keine neuen Fehler entstehen.
Ursache: fehlerhafte Erweiterung oder DLL
Nachweis:
- Problem tritt nur mit bestimmter Erweiterung auf,
- Process Explorer oder Dump verweist auf das Modul,
- Deaktivierung im Test beseitigt den Fehler.
Mögliche Maßnahme:
- Erweiterung aktualisieren,
- kompatible Version installieren,
- Erweiterung kontrolliert deaktivieren.
Rollback:
- vorherige Version oder Konfiguration wiederherstellen.
Verifikation:
- Anwendung mehrfach starten und Funktion testen.
Ursache: fehlerhafter Autostarteintrag
Nachweis:
- Problem beginnt bei Anmeldung oder Systemstart,
- Autoruns zeigt zugehörigen Eintrag,
- kontrollierte Deaktivierung beseitigt das Symptom.
Mögliche Maßnahme:
- fehlerhafte Software reparieren oder aktualisieren,
- nicht benötigten Eintrag deaktivieren.
Rollback:
- Eintrag in Autoruns wieder aktivieren.
Verifikation:
- Neustart und erneute Anmeldung testen.
Ursache: Portkonflikt
Nachweis:
- erwarteter Port gehört einer anderen PID,
- Dienstprotokoll meldet fehlgeschlagene Bindung.
Mögliche Maßnahme:
- doppelte Anwendung beenden,
- Portkonfiguration kontrolliert ändern,
- Startreihenfolge korrigieren.
Rollback:
- vorherige Portkonfiguration wiederherstellen.
Verifikation:
- Listener prüfen,
- tatsächlichen Anwendungsport testen.
Ursache: Ressourcen- oder Handle-Leak
Nachweis:
- Speicher-, Handle- oder Threadanzahl wächst über längere Zeit,
- Wachstum korreliert mit dem Symptom,
- Dump oder Herstelleranalyse bestätigt die Ursache.
Mögliche Maßnahme:
- Anwendung aktualisieren,
- Konfiguration korrigieren,
- bis zur dauerhaften Fehlerbehebung kontrolliertes Wartungsfenster planen.
Rollback:
- vorherige Anwendungsversion wiederherstellen, sofern freigegeben.
Verifikation:
- Langzeitmessung wiederholen,
- Baseline mit neuem Verlauf vergleichen.
30. Nachkontrolle
Nach einer Maßnahme sind dieselben Kriterien erneut zu prüfen:
- Prozess läuft erwartungsgemäß.
- Dienststatus ist korrekt.
- Anwendung reagiert.
- CPU-Auslastung ist plausibel.
- Arbeitsspeicher wächst nicht unkontrolliert.
- Handles und Threads bleiben stabil.
- benötigte Dateien können geöffnet werden.
- erforderliche Ports sind gebunden.
- Netzwerkverbindungen erreichen die vorgesehenen Ziele.
- keine neuen Fehler erscheinen in den Protokollen.
- Benutzerfunktion wurde praktisch getestet.
- abhängige Dienste funktionieren.
- temporäre Filter, Traces und Debugfunktionen wurden beendet.
- Dump-, PML- und ETL-Dateien wurden geschützt gespeichert oder gelöscht.
- deaktivierte Autostarts wurden abschließend bewertet.
- Monitoring zeigt wieder den Normalzustand.
31. Dokumentation
Beispiel:
Symptom:
Der Dienst „Beispieldienst“ wurde nach dem Start innerhalb
weniger Sekunden wieder beendet.
Zeitpunkt:
02.08.2026, 09:42 Uhr MESZ
Nachweis:
Das Anwendungsprotokoll zeigte den Fehler zum gleichen Zeitpunkt.
Process Monitor zeigte unmittelbar davor einen relevanten Zugriff
auf C:\ProgramData\Beispiel\config.json mit ACCESS DENIED.
Ursache:
Das verwendete Dienstkonto besaß nach einer Änderung keine
Leseberechtigung mehr für die Konfigurationsdatei.
Maßnahme:
Die erforderliche Leseberechtigung wurde ausschließlich für
das vorgesehene Dienstkonto wiederhergestellt.
Rollback:
Dokumentierte Berechtigungsänderung kann entfernt werden.
Verifikation:
Dienst startet erfolgreich.
Anwendungsport ist erreichbar.
Keine neuen Fehler im Ereignisprotokoll.
Funktionstest erfolgreich.
Prävention:
Berechtigungen des Anwendungsverzeichnisses werden künftig
vor und nach Änderungen automatisiert verglichen.
32. Entscheidungsbaum
Windows-Anwendung oder Dienst funktioniert nicht
↓
Läuft der erwartete Prozess?
├── Nein
│ ↓
│ Dienststatus, Ereignisse, Autostart,
│ Datei, Dienstkonto und Abhängigkeiten prüfen
│
└── Ja
↓
Reagiert der Prozess?
├── Nein
│ ↓
│ Wait Chain, Threads, Dump und Abhängigkeiten prüfen
│
└── Ja
↓
Sind Ressourcen auffällig?
├── Ja
│ ↓
│ CPU, RAM, Handles, Threads und I/O untersuchen
│
└── Nein
↓
Fehler bei Datei oder Registry?
├── Ja
│ ↓
│ Process Monitor, Pfade und Berechtigungen prüfen
│
└── Nein
↓
Netzwerk oder externer Dienst beteiligt?
├── Ja
│ ↓
│ TCPView, Port, DNS und Zielsystem prüfen
│
└── Nein
↓
Anwendungslog, Erweiterungen, DLLs und Dump untersuchen
33. Typische Prüfungsfragen
Warum ist ein Prozess mit hoher CPU-Auslastung nicht automatisch die Fehlerursache?
Antwort anzeigen
Die CPU-Auslastung kann für die ausgeführte Aufgabe normal sein oder als Folge eines anderen Problems entstehen. Zeitpunkt, Threadaktivität, Anwendungssymptom und weitere Abhängigkeiten müssen gemeinsam untersucht werden.
Worin unterscheiden sich Task-Manager und Process Explorer?
Antwort anzeigen
Der Task-Manager bietet eine grundlegende Übersicht über Prozesse, Leistung, Benutzer und Autostarts. Process Explorer zeigt zusätzlich unter anderem Prozesshierarchie, Befehlszeilen, Signaturen, Handles, DLLs, Threads, Sicherheitsinformationen und detaillierte Prozesseigenschaften.
Wofür wird Process Monitor verwendet?
Antwort anzeigen
Process Monitor zeichnet Datei-, Registry-, Prozess-, Thread- und DLL-Aktivitäten auf. Damit können beispielsweise fehlende Dateien, fehlerhafte Pfade und verweigerte Zugriffe untersucht werden.
Warum ist NAME NOT FOUND in Process Monitor nicht automatisch ein Fehler?
Antwort anzeigen
Anwendungen prüfen häufig mehrere mögliche Namen oder Pfade. Wenn anschließend ein alternativer Zugriff erfolgreich ist, kann der fehlgeschlagene Versuch zum normalen Programmablauf gehören.
Warum sollte ein blockierendes Handle nicht sofort geschlossen werden?
Antwort anzeigen
Das erzwungene Schließen kann Datenverlust, Programmabstürze oder inkonsistente Anwendungszustände verursachen. Zuerst muss die zugehörige Anwendung identifiziert und möglichst regulär beendet werden.
Warum kann ein vollständiges Speicherabbild sicherheitsrelevant sein?
Antwort anzeigen
Der Prozessspeicher kann Kennwörter, Tokens, Schlüssel, personenbezogene Daten und vertrauliche Anwendungsinhalte enthalten. Dumps müssen daher wie sensible Daten behandelt werden.
Warum darf ein Programm nicht dauerhaft nur als Administrator ausgeführt werden, um „Zugriff verweigert“ zu umgehen?
Antwort anzeigen
Dadurch erhält das Programm weitreichendere Rechte als erforderlich. Stattdessen muss die konkret fehlende Berechtigung identifiziert und nach dem Minimalprinzip vergeben werden.
Wofür wird Autoruns eingesetzt?
Antwort anzeigen
Autoruns zeigt zahlreiche automatische Startpunkte von Windows, beispielsweise Anmeldeeinträge, Dienste, Treiber, geplante Aufgaben und Erweiterungen. Es hilft bei Problemen, die nach dem Start oder der Anmeldung auftreten.
Was ist der Unterschied zwischen WPR und WPA?
Antwort anzeigen
Windows Performance Recorder zeichnet ETW-Ereignisse auf. Windows Performance Analyzer öffnet und analysiert die erzeugten ETL-Dateien mithilfe von Tabellen und Diagrammen.
Warum sollte vor dem Neustart eines Prozesses ein Dump erstellt werden?
Antwort anzeigen
Der Neustart beseitigt den aktuellen Prozesszustand. Ein Dump kann Informationen über Threads, Aufrufstapel, Speicher und Sperren erhalten, die für die Ursachenanalyse benötigt werden.
34. Prüfungsfallen
- hohe CPU-Auslastung sofort als Ursache bewerten.
- Prozessname mit Dienstname gleichsetzen.
- PID ohne Zeitpunkt dokumentieren.
- gesamte CPU-Zeit mit momentaner CPU-Auslastung verwechseln.
- nur den Task-Manager verwenden.
- Prozesshierarchie nicht beachten.
- unbekannten Prozess sofort als Schadsoftware einstufen.
- nicht signierte Datei automatisch als schädlich bewerten.
- digitale Signatur als vollständigen Sicherheitsnachweis ansehen.
- Process Monitor ohne Filter lange laufen lassen.
- jeden roten Process-Monitor-Eintrag als Fehler interpretieren.
-
NAME NOT FOUNDautomatisch als Ursache bewerten. - ein Handle ohne Risikoprüfung schließen.
- einen Prozess ohne Dump oder Protokollsicherung beenden.
- Dienstprozess direkt beenden, obwohl ein kontrollierter Dienstneustart möglich ist.
- Anwendung dauerhaft als Administrator starten.
- Autostarteintrag sofort löschen statt kontrolliert deaktivieren.
- Dump-Dateien ungeschützt speichern.
- unbekannte interne Dateien ungeprüft zu einem externen Dienst hochladen.
- Port prüfen, aber zugehörige PID nicht ermitteln.
- Listener mit tatsächlicher Anwendungsfunktion verwechseln.
- Prozess untersuchen, aber externe Abhängigkeiten übersehen.
- mehrere Änderungen gleichzeitig durchführen.
- nach einer Maßnahme keine Vergleichsmessung durchführen.
- temporäre Traces oder Debugfunktionen aktiv lassen.
35. Checkliste
- exakte Fehlermeldung wurde dokumentiert.
- Fehlerzeitpunkt und Zeitzone wurden erfasst.
- betroffene Anwendung wurde bestimmt.
- Prozessname und PID wurden bestimmt.
- Prozessstartzeit wurde berücksichtigt.
- Eltern- und Kindprozesse wurden geprüft.
- Benutzer- oder Dienstkonto wurde bestimmt.
- Prozess- und Dienststatus wurden geprüft.
- Dienstabhängigkeiten wurden geprüft.
- CPU-Auslastung wurde geprüft.
- einzelne Threads wurden berücksichtigt.
- Arbeitsspeicher wurde geprüft.
- Private Bytes und Working Set wurden unterschieden.
- Handle-Anzahl wurde geprüft.
- Thread-Anzahl wurde geprüft.
- Datenträgeraktivität wurde geprüft.
- Ereignisanzeige wurde zeitlich gefiltert.
- Anwendungsprotokoll wurde geprüft.
- Systemprotokoll wurde geprüft.
- vollständiger Ereignistext wurde gelesen.
- Prozesspfad wurde geprüft.
- Befehlszeile wurde geprüft.
- digitale Signatur wurde geprüft.
- geladene DLLs wurden bei Bedarf geprüft.
- offene Handles wurden bei Bedarf geprüft.
- Process Monitor wurde gefiltert eingesetzt.
- fehlgeschlagene Zugriffe wurden technisch bewertet.
- Benutzer- und Dienstberechtigungen wurden geprüft.
- Netzwerkverbindungen wurden der PID zugeordnet.
- Listener und Portkonflikte wurden geprüft.
- Autostarts wurden bei passendem Fehlerbild geprüft.
- letzte Änderungen wurden berücksichtigt.
- funktionierendes Vergleichssystem wurde genutzt.
- vor einem Neustart wurden flüchtige Daten gesichert.
- Dump-Erstellung wurde bei Absturz oder Hänger geprüft.
- Schutzbedarf von Dump-, PML- und ETL-Dateien wurde beachtet.
- genau eine kontrollierte Maßnahme wurde durchgeführt.
- Rückweg wurde festgelegt.
- Benutzerfunktion wurde nach der Maßnahme getestet.
- Prozesse, Dienste und Protokolle wurden erneut geprüft.
- temporäre Diagnosefunktionen wurden beendet.
- Ursache, Maßnahme und Ergebnis wurden dokumentiert.
- vorbeugende Maßnahme wurde festgelegt.
36. Schnellreferenz
| Beobachtung | Nächstes Werkzeug |
|---|---|
| Prozess verbraucht viel CPU | Process Explorer, Leistungsüberwachung |
| nur ein Kern ausgelastet | Process Explorer → Threads |
| Arbeitsspeicher wächst | PowerShell, Process Explorer, ProcDump |
| Handles wachsen | Process Explorer, Handle |
| Datei ist gesperrt | Process Explorer oder Handle |
| DLL-Konflikt vermutet | Process Explorer oder ListDLLs |
| Zugriff verweigert | Process Monitor, AccessChk |
| Datei oder Pfad fehlt | Process Monitor |
| Dienst startet nicht | Ereignisanzeige, sc.exe, PowerShell |
| Dienst hängt beim Start | Ereignisanzeige, Wait Chain, ProcDump |
| Prozess reagiert nicht | Ressourcenmonitor, Process Explorer, ProcDump |
| Anwendung stürzt ab | Ereignisanzeige, WER, ProcDump |
| unbekannte Netzwerkverbindung | TCPView |
| erwarteter Port fehlt | Get-NetTCPConnection, TCPView |
| Port ist bereits belegt | Get-NetTCPConnection, netstat -ano |
| Fehler nach Anmeldung | Autoruns |
| langsamer Systemstart | Autoruns, WPR und WPA |
| unbekannte Datei | Sigcheck |
| zeitweises Leistungsproblem | WPR und WPA |
| Problem nur unter Dienstkonto | whoami, AccessChk, Process Monitor |
| Anwendung funktioniert nur erhöht | Process Monitor und Berechtigungsprüfung |
Merksatz
Windows-Prozesse und Dienste werden nicht allein anhand ihres Namens oder eines einzelnen Messwerts bewertet. Entscheidend sind Prozesshierarchie, Benutzerkonto, Threads, Speicher, Handles, Dateien, Registry-Zugriffe, Netzwerkverbindungen, Ereignisse und externe Abhängigkeiten. Vor dem Beenden oder Neustarten wird der flüchtige Zustand gesichert. Anschließend wird genau eine kontrollierte Maßnahme durchgeführt und ihre Wirkung erneut geprüft.
Quellen und weiterführende Dokumentation
Offizielle Microsoft-Dokumentation
- Microsoft Learn – Sysinternals
- Microsoft Learn – Sysinternals Utilities
- Microsoft Learn – Sysinternals Suite
- Microsoft Learn – Process Explorer
- Microsoft Learn – Process Monitor
- Microsoft Learn – Autoruns
- Microsoft Learn – TCPView
- Microsoft Learn – Handle
- Microsoft Learn – ListDLLs
- Microsoft Learn – AccessChk
- Microsoft Learn – Sigcheck
- Microsoft Learn – ProcDump
- Microsoft Learn – Get-Process
- Microsoft Learn – Get-Service
- Microsoft Learn – Get-WinEvent
- Microsoft Learn – Get-NetTCPConnection
- Microsoft Learn – Stop-Process
- Microsoft Learn – Restart-Service
- Microsoft Learn – Windows Performance Recorder
- Microsoft Learn – Windows Performance Analyzer
- Microsoft Learn – Prozesse und Threads mit WPR und WPA untersuchen
8.2 Active Directory, Gruppenrichtlinien und Kerberos analysieren
Active Directory Domain Services bilden in vielen Windows-Netzwerken die Grundlage für:
- Benutzer- und Computeranmeldung,
- zentrale Authentifizierung,
- Gruppen und Berechtigungen,
- Gruppenrichtlinien,
- DNS-basierte Diensterkennung,
- Kerberos-Tickets,
- Vertrauensstellungen,
- Zertifikatdienste,
- Datei-, Druck- und Anwendungszugriffe.
Eine scheinbar einfache Meldung wie „Anmeldung nicht möglich“, „Zugriff verweigert“ oder „Gruppenrichtlinie wird nicht angewendet“ kann deshalb unterschiedliche Ursachen haben:
- falsche DNS-Konfiguration,
- nicht erreichbarer Domänencontroller,
- fehlerhafte Zeitsynchronisation,
- gestörter Secure Channel,
- Replikationsfehler,
- falsche Gruppenmitgliedschaft,
- fehlerhafte GPO-Verknüpfung,
- Sicherheitsfilterung,
- WMI-Filter,
- Kerberos- oder SPN-Fehler,
- nicht repliziertes Kennwort,
- gesperrtes oder deaktiviertes Konto,
- beschädigtes Computer- oder Benutzerprofil,
- fehlende Netzwerkports,
- fehlerhafte Vertrauensstellung.
Die Komponenten müssen gemeinsam und in einer festen Reihenfolge untersucht werden.
1. Lernziele
Nach dieser Seite kannst du:
- Active-Directory-Fehler systematisch eingrenzen,
- Client-, Server- und Domänencontrollerprobleme unterscheiden,
- den verwendeten Domänencontroller bestimmen,
- DNS- und SRV-Einträge prüfen,
- Zeitsynchronisation untersuchen,
- den Secure Channel eines Clients bewerten,
- AD-Replikationsfehler erkennen,
- Gruppenrichtlinienergebnisse auswerten,
- Kerberos-Tickets und SPNs prüfen,
- typische Ereignisprotokolle zuordnen,
- zwischen Symptom, Ursache und Nebenbefund unterscheiden,
- Änderungen kontrolliert und mit Rückweg durchführen.
2. Vereinfachte Abhängigkeitskette
Benutzer oder Computer
↓
IP-Konnektivität
↓
DNS-Auflösung und SRV-Einträge
↓
Erreichbarer Domänencontroller
↓
Zeitsynchronisation
↓
Secure Channel und Computerkonto
↓
Kerberos oder NTLM
↓
Active-Directory-Replikation
↓
Gruppenmitgliedschaften und Berechtigungen
↓
Gruppenrichtlinien und Anwendungszugriff
Ein Fehler weiter oben kann zahlreiche Folgefehler auslösen.
Beispiele:
- Falsches DNS kann verhindern, dass ein Domänencontroller gefunden wird.
- Eine zu große Zeitabweichung kann Kerberos-Authentifizierung verhindern.
- Eine fehlerhafte AD-Replikation kann dazu führen, dass ein neues Kennwort nur an einem Domänencontroller bekannt ist.
- Eine fehlerhafte SYSVOL-Replikation kann dazu führen, dass eine GPO zwar im Verzeichnis vorhanden ist, ihre Dateien aber nicht überall verfügbar sind.
- Ein doppelter SPN kann verhindern, dass für einen Dienst ein gültiges Kerberos-Ticket ausgestellt wird.
3. Sicherheits- und Betriebsregeln
Vor Änderungen müssen mindestens folgende Informationen gesichert werden:
- genauer Fehlertext,
- Fehlercode,
- Zeitpunkt und Zeitzone,
- betroffener Benutzer,
- betroffener Computer,
- verwendeter Domänencontroller,
- betroffener Dienst oder Server,
- letzte Änderungen,
- aktuelle DNS-Konfiguration,
- Zeitquelle und Zeitabweichung,
- Gruppenrichtlinienergebnis,
- Replikationsstatus,
- relevante Ereignisse.
Nicht als erste Maßnahme durchführen:
- Computer aus der Domäne entfernen und wieder aufnehmen,
- Computerkonto löschen,
- Benutzerkonto neu erstellen,
- GPO löschen oder vollständig deaktivieren,
- AD-Replikation ungeprüft erzwingen,
- Kerberos-Konfiguration in der Registry ändern,
- Domänencontroller neu starten,
- DNS-Einträge wahllos löschen,
- SPNs ohne vorherige Prüfung verändern,
- große Berechtigungsgruppen hinzufügen,
- alle Gruppenrichtlinien gleichzeitig zurücksetzen.
Solche Maßnahmen verändern oder vernichten den Zustand, der für die Ursachenanalyse benötigt wird.
4. Fehlerbild exakt erfassen
Wichtige Fragen:
- Scheitert die lokale oder die Domänenanmeldung?
- Ist nur ein Benutzer betroffen?
- Ist nur ein Computer betroffen?
- Sind mehrere Computer einer OU oder eines Standorts betroffen?
- Funktioniert der Zugriff über IP-Adresse, aber nicht über Namen?
- Funktioniert die Anmeldung mit zwischengespeicherten Anmeldedaten?
- Tritt der Fehler nur bei einem bestimmten Domänencontroller auf?
- Betrifft das Problem Benutzer- oder Computerrichtlinien?
- Ist nur ein bestimmter Dienst betroffen?
- Funktioniert NTLM, während Kerberos scheitert?
- Trat der Fehler nach Kennwortänderung, Wiederherstellung, Snapshot, Migration oder GPO-Änderung auf?
- Ist der Fehler dauerhaft oder nur zeitweise vorhanden?
- Funktioniert ein vergleichbarer Benutzer oder Computer?
Ein Client, ein Benutzer und eine konkrete Zielressource sollten als kontrollierter Testfall verwendet werden.
5. Grundinformationen auf dem Client erfassen
Identität:
whoami
Benutzer-Domäne:
echo %USERDOMAIN%
Anmeldeserver:
echo %LOGONSERVER%
Vollständige Benutzerinformationen:
whoami /all
Computername:
hostname
Domänenzugehörigkeit:
Get-CimInstance Win32_ComputerSystem |
Select-Object Name,
Domain,
PartOfDomain,
UserName
IP-Konfiguration:
ipconfig /all
Dabei sind besonders zu prüfen:
- IPv4- und IPv6-Adresse,
- Subnetzmaske beziehungsweise Präfix,
- Standardgateway,
- DNS-Server,
- DNS-Suffix,
- DHCP-Status,
- Verbindungssuffix,
- mehrere aktive Netzwerkadapter,
- VPN-, virtuelle oder alte Adapter.
Domänenmitglieder sollten grundsätzlich die für die AD-Domäne zuständigen internen DNS-Server verwenden. Ein öffentlicher DNS-Server kennt die internen AD-SRV-Einträge normalerweise nicht.
6. Verwendeten Domänencontroller bestimmen
Anmeldeserver:
echo %LOGONSERVER%
Domänencontroller für die Domäne suchen:
nltest /dsgetdc:<Domänenname>
Beispiel:
nltest /dsgetdc:ad.example.local
Domänencontroller auflisten:
nltest /dclist:<Domänenname>
Aktuellen DC über PowerShell bestimmen:
Get-ADDomainController -Discover
Alle bekannten Domänencontroller:
Get-ADDomainController -Filter * |
Select-Object HostName,
Site,
IPv4Address,
IsGlobalCatalog,
OperationMasterRoles
Die PowerShell-Befehle des Active-Directory-Moduls erfordern die entsprechenden RSAT-Komponenten oder die Ausführung auf einem geeigneten Verwaltungsserver.
Zu dokumentieren sind:
- Name des verwendeten Domänencontrollers,
- Standort beziehungsweise AD-Site,
- IP-Adresse,
- Global-Catalog-Status,
- Erreichbarkeit,
- Zeitpunkt des Tests.
7. DNS als erste technische Abhängigkeit prüfen
Hostauflösung:
nslookup <Domänencontroller>
Vollqualifizierten Namen prüfen:
nslookup <DC-Name>.<DNS-Domäne>
Domänencontroller über LDAP-SRV-Einträge suchen:
nslookup -type=SRV _ldap._tcp.dc._msdcs.<DNS-Domäne>
Kerberos-Dienste suchen:
nslookup -type=SRV _kerberos._tcp.<DNS-Domäne>
Global Catalog suchen:
nslookup -type=SRV _gc._tcp.<DNS-Gesamtstruktur>
Standortspezifische Domänencontroller:
nslookup -type=SRV _ldap._tcp.<Standort>._sites.dc._msdcs.<DNS-Domäne>
PowerShell:
Resolve-DnsName -Type SRV `
_ldap._tcp.dc._msdcs.<DNS-Domäne>
Zu prüfen sind:
- existieren die erwarteten SRV-Einträge,
- zeigen die Einträge auf vorhandene Domänencontroller,
- lassen sich deren Hostnamen auflösen,
- stimmen die IP-Adressen,
- antwortet der vorgesehene interne DNS-Server,
- werden alte oder stillgelegte Domänencontroller zurückgegeben,
- liefert ein anderer DNS-Server abweichende Ergebnisse,
- ist das DNS-Suffix korrekt,
- bestehen doppelte A- oder AAAA-Einträge.
Ein erfolgreicher Ping auf eine IP-Adresse beweist keine funktionierende AD-DNS-Struktur.
8. Erreichbarkeit benötigter Dienste prüfen
Grundlegende Verbindung:
Test-NetConnection <Domänencontroller>
DNS:
Test-NetConnection <Domänencontroller> -Port 53
Kerberos:
Test-NetConnection <Domänencontroller> -Port 88
LDAP:
Test-NetConnection <Domänencontroller> -Port 389
SMB für SYSVOL und NETLOGON:
Test-NetConnection <Domänencontroller> -Port 445
RPC Endpoint Mapper:
Test-NetConnection <Domänencontroller> -Port 135
Global Catalog:
Test-NetConnection <Domänencontroller> -Port 3268
LDAPS, sofern verwendet:
Test-NetConnection <Domänencontroller> -Port 636
Global Catalog über TLS, sofern verwendet:
Test-NetConnection <Domänencontroller> -Port 3269
Wichtige Dienste und Ports können unter anderem sein:
| Funktion | Typischer Port |
|---|---|
| DNS | TCP/UDP 53 |
| Kerberos | TCP/UDP 88 |
| RPC Endpoint Mapper | TCP 135 |
| LDAP | TCP/UDP 389 |
| SMB | TCP 445 |
| Kerberos-Kennwortänderung | TCP/UDP 464 |
| LDAPS | TCP 636 |
| Global Catalog | TCP 3268 |
| Global Catalog über TLS | TCP 3269 |
| dynamisches RPC | konfigurationsabhängiger TCP-Portbereich |
Ein erfolgreich getesteter TCP-Port beweist nur, dass eine Verbindung zu diesem Port hergestellt werden konnte. Er beweist nicht, dass Authentifizierung, LDAP-Abfrage, Replikation oder Gruppenrichtlinienverarbeitung funktionieren.
9. SYSVOL und NETLOGON prüfen
Freigaben des Domänencontrollers:
net view \\<Domänencontroller>
SYSVOL öffnen:
dir \\<Domänencontroller>\SYSVOL
NETLOGON öffnen:
dir \\<Domänencontroller>\NETLOGON
Direkter Domänenpfad:
dir \\<DNS-Domäne>\SYSVOL
Zu prüfen sind:
- Freigaben vorhanden,
- Namensauflösung funktioniert,
- Zugriff unter dem vorgesehenen Benutzer möglich,
- benötigte GPO-Verzeichnisse vorhanden,
- Skripte und Vorlagen erreichbar,
- unterschiedliche Domänencontroller liefern denselben erwarteten Inhalt.
Eine GPO besteht aus zwei zusammengehörigen Teilen:
| Bestandteil | Speicherort |
|---|---|
| Group Policy Container | Active Directory |
| Group Policy Template | SYSVOL |
Sind die beiden Teile oder ihre Versionsstände nicht konsistent, kann die Gruppenrichtlinienverarbeitung fehlschlagen.
10. Zeitsynchronisation prüfen
Aktueller Status:
w32tm /query /status
Zeitquelle:
w32tm /query /source
Konfiguration:
w32tm /query /configuration
Domänenhierarchie überwachen:
w32tm /monitor
Vergleich mit einem bestimmten Domänencontroller:
w32tm /stripchart /computer:<Domänencontroller> /samples:10 /dataonly
Windows-Zeitdienst:
Get-Service W32Time
Zu prüfen sind:
- aktuelle Zeit,
- Zeitzone,
- Zeitquelle,
- Zeitabweichung,
- Dienststatus,
- Domänenhierarchie,
- Erreichbarkeit der Zeitquelle,
- Virtualisierung und Host-Zeitsynchronisation,
- PDC-Emulator als maßgebliche Domänenzeitquelle.
Kerberos reagiert empfindlich auf Zeitabweichungen. Der konkrete Fehler muss jedoch anhand von Ereignissen, Ticketstatus und Zeitmessung nachgewiesen werden.
Eine manuelle Änderung der Uhrzeit beseitigt nicht automatisch die Ursache einer falschen Zeitquelle.
11. Secure Channel des Computers prüfen
Der Secure Channel ist die geschützte Beziehung zwischen einem Domänenmitglied und der Domäne.
Prüfung mit PowerShell:
Test-ComputerSecureChannel -Verbose
Prüfung mit NLTEST:
nltest /sc_verify:<DNS-Domäne>
Verwendeten sicheren Kanal anzeigen:
nltest /sc_query:<DNS-Domäne>
Mögliche Symptome eines gestörten Secure Channels:
- „Die Vertrauensstellung zwischen dieser Arbeitsstation und der primären Domäne ist fehlgeschlagen“,
- Anmeldung funktioniert nur mit zwischengespeicherten Daten,
- Gruppenrichtlinien schlagen fehl,
- Zugriff auf Domänenressourcen scheitert,
- Computerkonto-Kennwort stimmt zwischen Client und AD nicht überein.
Mögliche Ursachen:
- Rücksetzen auf einen alten VM-Snapshot,
- geklontes System mit fehlerhafter Identität,
- wiederhergestelltes Computerkonto,
- Replikationsfehler,
- doppelt verwendeter Computername,
- beschädigtes Computerkonto,
- lange getrenntes oder falsch wiederhergestelltes System.
Eine Reparatur des Secure Channels ist eine Änderung und darf erst nach Sicherung der Diagnoseergebnisse erfolgen.
Mögliche kontrollierte Reparatur auf einem Domänenmitglied:
Test-ComputerSecureChannel -Repair `
-Credential <Domäne>\<Administratorkonto>
Vorher müssen geprüft werden:
- DNS funktioniert,
- Domänencontroller ist erreichbar,
- Zeit stimmt,
- Computerkonto ist vorhanden und eindeutig,
- keine Replikationsstörung liegt vor,
- Berechtigung zur Reparatur ist vorhanden,
- Rückweg und Wartungsfenster sind festgelegt.
Test-ComputerSecureChannel ist vor allem für Domänenmitglieder vorgesehen. Bei Domänencontrollern müssen DC-spezifische Diagnose- und Reparaturverfahren verwendet werden.
12. Benutzer- und Computerkonto prüfen
Benutzerkonto:
Get-ADUser -Identity <Benutzername> -Properties * |
Select-Object SamAccountName,
UserPrincipalName,
Enabled,
LockedOut,
PasswordExpired,
PasswordLastSet,
LastBadPasswordAttempt,
BadLogonCount,
AccountExpirationDate
Computerkonto:
Get-ADComputer -Identity <Computername> -Properties * |
Select-Object Name,
Enabled,
DNSHostName,
PasswordLastSet,
LastLogonDate,
DistinguishedName
Gruppenmitgliedschaften:
Get-ADPrincipalGroupMembership <Benutzername> |
Select-Object Name,
GroupScope,
GroupCategory
Aktuelles Benutzer-Token:
whoami /groups
Zu unterscheiden sind:
- im Active Directory gespeicherte Gruppenmitgliedschaften,
- Gruppen im aktuellen Anmeldetoken,
- verschachtelte Gruppen,
- lokale Gruppen,
- universelle, globale und domänenlokale Gruppen,
- Änderungen nach der letzten Anmeldung.
Eine neu hinzugefügte Gruppenmitgliedschaft ist nicht automatisch im bereits bestehenden Benutzer-Token enthalten. Ab- und erneute Anmeldung kann erforderlich sein. Bei bestimmten Dienstkonten kann ein Dienstneustart notwendig sein.
13. Kontosperrung untersuchen
Zu prüfen sind:
- ist das Konto tatsächlich gesperrt,
- auf welchem Domänencontroller wurde die Sperrung registriert,
- welcher Client oder Dienst sendet falsche Anmeldedaten,
- existieren gespeicherte Anmeldedaten,
- läuft ein Dienst oder eine geplante Aufgabe mit altem Kennwort,
- verwendet ein Smartphone, VPN oder Netzlaufwerk alte Zugangsdaten,
- tritt die Sperrung unmittelbar nach dem Entsperren erneut auf.
Benutzerstatus:
Get-ADUser <Benutzername> `
-Properties LockedOut,
LastBadPasswordAttempt,
BadLogonCount,
PasswordLastSet
Gesperrte Konten suchen:
Search-ADAccount -LockedOut -UsersOnly
Relevante Sicherheitsereignisse können unter anderem betreffen:
- fehlgeschlagene Anmeldung,
- Kontosperrung,
- Kerberos-Vorauthentifizierungsfehler,
- Ticketanforderungen,
- Anmeldungen mit expliziten Anmeldedaten.
Ein Konto lediglich wiederholt zu entsperren beseitigt die Quelle der falschen Anmeldedaten nicht.
14. Domänencontroller grundsätzlich prüfen
Ausführliche Diagnose:
dcdiag /v
Ausgabe in Datei:
dcdiag /v /c /d /e > C:\Temp\dcdiag.txt
DNS-Test:
dcdiag /test:dns /v
Replikationstest:
dcdiag /test:replications /v
SYSVOL-Test:
dcdiag /test:sysvolcheck /v
Werbungsstatus des Domänencontrollers:
dcdiag /test:advertising /v
NETLOGON-Freigabe:
dcdiag /test:netlogons /v
Zu prüfen sind:
- welcher Test fehlschlägt,
- welcher Domänencontroller betroffen ist,
- genauer Fehlercode,
- Zeitpunkt,
- DNS-Abhängigkeit,
- Replikationspartner,
- Verzeichnispartition,
- Warnung oder tatsächlicher Fehler.
Nicht jede Warnung in einer umfangreichen dcdiag-Ausgabe erklärt das untersuchte Symptom. Der Befund muss zeitlich und technisch zum Fehler passen.
15. AD-Replikation prüfen
Gesamtübersicht:
repadmin /replsummary
Eingehende Replikation eines DCs:
repadmin /showrepl <Domänencontroller>
Gesamtstrukturweite Anzeige:
repadmin /showrepl * /csv
PowerShell-Auswertung:
repadmin /showrepl * /csv |
ConvertFrom-Csv |
Out-GridView
Replikationsfehler über PowerShell:
Get-ADReplicationFailure `
-Target * `
-Scope Forest
Status der Replikationspartner:
Get-ADReplicationPartnerMetadata `
-Target * `
-Scope Forest |
Select-Object Server,
Partner,
Partition,
LastReplicationAttempt,
LastReplicationSuccess,
LastReplicationResult
Replikationswarteschlange:
repadmin /queue
Zu dokumentieren sind:
- Quell- und Ziel-DC,
- Verzeichnispartition,
- letzte erfolgreiche Replikation,
- letzter Replikationsversuch,
- Anzahl aufeinanderfolgender Fehler,
- Fehlercode,
- Fehlertext,
- betroffene Standorte,
- Richtung des Fehlers.
16. Replikationsfehler richtig bewerten
AD-Replikation hängt unter anderem ab von:
- DNS,
- Netzwerkverbindungen,
- RPC,
- Authentifizierung,
- Autorisierung,
- Zeit,
- Replikationstopologie,
- Verzeichnisdatenbank,
- Zustand der Domänencontroller.
| Befund | Mögliche Ursache |
|---|---|
| Fehler 1722 | RPC-Server nicht verfügbar, DNS, Firewall oder Dienstproblem |
| Fehler 5 | Zugriff verweigert, Authentifizierung oder Berechtigung |
| Zielprinzipalname ist falsch | Kerberos-, SPN- oder Computerkonto-Problem |
| letzter Erfolg lange her | dauerhafte oder standortbezogene Störung |
| nur eine Partition betroffen | partitions- oder DNS-bezogenes Problem |
| nur ein Partner betroffen | Verbindung, DNS oder Zustand dieses Partners |
| Änderungen fehlen nur auf einem DC | eingehende Replikation dieses DCs prüfen |
| verschiedene Kennwörter funktionieren je nach DC | Kennwortreplikation oder allgemeine Replikation prüfen |
| GPO fehlt nur auf einem DC | AD- und SYSVOL-Replikation gemeinsam prüfen |
Eine erzwungene Synchronisation ist keine erste Diagnosemaßnahme. Sie kann zusätzliche Last erzeugen und verdeckt möglicherweise die Richtung oder den ursprünglichen Zustand des Fehlers.
17. FSMO-Rollen prüfen
netdom query fsmo
PowerShell:
Get-ADForest |
Select-Object SchemaMaster,
DomainNamingMaster
Get-ADDomain |
Select-Object PDCEmulator,
RIDMaster,
InfrastructureMaster
Die Rollen sind:
| Rolle | Ebene | Wichtige Funktion |
|---|---|---|
| Schema-Master | Gesamtstruktur | Schemaänderungen |
| Domänennamen-Master | Gesamtstruktur | Domänen und Partitionen |
| RID-Master | Domäne | RID-Pools für Sicherheitskennungen |
| PDC-Emulator | Domäne | Zeit, Kennwortpriorität und weitere Funktionen |
| Infrastruktur-Master | Domäne | domänenübergreifende Objektbezüge |
Der Ausfall eines FSMO-Rolleninhabers erklärt nicht automatisch jede Anmeldestörung. Die betroffene Funktion und die Ausfalldauer müssen berücksichtigt werden.
18. Gruppenrichtlinien-Grundlagen
Die normale Verarbeitungsreihenfolge lautet:
Lokal → Site → Domäne → OU → untergeordnete OU
Diese Reihenfolge wird häufig mit LSDOU bezeichnet.
Grundsätzlich gilt:
- Gruppenrichtlinien werden kumulativ verarbeitet.
- Näher am Benutzer- oder Computerobjekt verknüpfte Einstellungen können frühere Einstellungen überschreiben.
- Die genaue Wirkung hängt von Verknüpfungsreihenfolge, Vererbung, Erzwingen, Sicherheitsfilterung und Richtlinientyp ab.
- Computer- und Benutzerkonfiguration werden getrennt verarbeitet.
- Nicht jede Erweiterung wird bei jeder Hintergrundaktualisierung vollständig verarbeitet.
- Loopbackverarbeitung kann die Benutzerkonfiguration abhängig vom Computerstandort verändern.
Mögliche Ursachen für eine nicht angewendete GPO:
- GPO nicht an der richtigen Site, Domäne oder OU verknüpft,
- Link deaktiviert,
- GPO vollständig oder teilweise deaktiviert,
- Objekt befindet sich in der falschen OU,
- Sicherheitsfilterung schließt Benutzer oder Computer aus,
- fehlende Leseberechtigung,
- WMI-Filter liefert
False, - Vererbung blockiert,
- andere GPO besitzt höhere Priorität,
- Einstellung gilt nur für Benutzer oder nur für Computer,
- langsame Netzwerkverbindung,
- erforderliche synchrone Verarbeitung noch nicht erfolgt,
- Neustart oder erneute Anmeldung fehlt,
- SYSVOL nicht erreichbar,
- AD- oder SYSVOL-Replikation gestört,
- Client Side Extension schlägt fehl.
19. Gruppenrichtlinienergebnis erfassen
Kurzübersicht:
gpresult /r
Computerrichtlinien mit erhöhten Rechten:
gpresult /scope computer /r
Benutzerrichtlinien:
gpresult /scope user /r
Ausführlicher HTML-Bericht:
gpresult /h C:\Temp\gpresult.html
Bericht für einen bestimmten Benutzer:
gpresult /user <Domäne>\<Benutzer> /h C:\Temp\gpresult-benutzer.html
Ausführliche Textausgabe:
gpresult /z
Resultant Set of Policy:
rsop.msc
Im Bericht sind besonders zu prüfen:
- angewendete GPOs,
- abgelehnte GPOs,
- Ablehnungsgrund,
- Sicherheitsgruppen,
- verwendeter Domänencontroller,
- WMI-Filter,
- Benutzer- und Computerbereich,
- Loopbackmodus,
- langsame Verbindung,
- Verarbeitungszeit,
- Fehler einzelner Erweiterungen.
gpresult muss im passenden Benutzer- und Berechtigungskontext ausgeführt werden. Ein Bericht aus einem anderen Konto kann ein anderes Ergebnis zeigen.
20. Gruppenrichtlinien kontrolliert aktualisieren
Standardaktualisierung:
gpupdate
Erneute Verarbeitung aller Einstellungen:
gpupdate /force
Nur Computerrichtlinien:
gpupdate /target:computer /force
Nur Benutzerrichtlinien:
gpupdate /target:user /force
Eine erzwungene Aktualisierung kann:
- zusätzliche Netz- und Serverlast verursachen,
- erneut alle Richtlinienerweiterungen anstoßen,
- Ab- oder Anmeldung verlangen,
- einen Neustart verlangen,
- laufende Benutzersitzungen beeinflussen.
gpupdate /force ist ein Test beziehungsweise Auslöser, aber noch keine Ursachenanalyse. Danach müssen Ergebnisbericht und Ereignisprotokolle geprüft werden.
21. Gruppenrichtlinien-Ereignisse prüfen
Wichtiger Protokollpfad:
Ereignisanzeige
→ Anwendungs- und Dienstprotokolle
→ Microsoft
→ Windows
→ GroupPolicy
→ Operational
PowerShell:
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-GroupPolicy/Operational'
StartTime = (Get-Date).AddHours(-2)
} |
Select-Object TimeCreated,
Id,
LevelDisplayName,
Message
Zusätzlich prüfen:
- Systemprotokoll,
- Anwendungsprotokoll,
- DNS Client Events,
- NETLOGON,
- Kerberos,
- Benutzerprofildienst,
- einzelne Client Side Extensions.
Nicht nur die Event-ID verwenden. Provider, vollständiger Text, Zeitpunkt, Benutzer, Computer und Verarbeitungsschritt müssen gemeinsam bewertet werden.
22. GPO-Verknüpfung und Filterung prüfen
In der Gruppenrichtlinienverwaltung sind zu kontrollieren:
- richtige GPO,
- richtige Verknüpfung,
- richtige OU,
- Link aktiviert,
- GPO-Status,
- Verknüpfungsreihenfolge,
- Vererbung,
- erzwungene Links,
- Sicherheitsfilterung,
- Delegierung,
- WMI-Filter,
- Benutzer- oder Computerteil,
- GPO-Version,
- Replikationsstatus.
Sicherheitsfilterung benötigt grundsätzlich die passenden Berechtigungen zum Lesen und Anwenden der Gruppenrichtlinie.
Typische Fehlinterpretation:
Ein Benutzer ist Mitglied einer Gruppe, die „Gruppenrichtlinie übernehmen“ besitzt. Im aktuellen Anmeldetoken fehlt diese neue Gruppenmitgliedschaft jedoch noch.
Deshalb müssen AD-Mitgliedschaft und aktuelles Token getrennt geprüft werden.
23. Loopbackverarbeitung verstehen
Loopbackverarbeitung wird für Computer verwendet, bei denen die Benutzerumgebung vom verwendeten Computer abhängen soll, beispielsweise:
- Schulungsräume,
- Kiosksysteme,
- Terminalserver,
- gemeinsam verwendete Arbeitsplätze.
Modi:
| Modus | Wirkung |
|---|---|
| Zusammenführen | Benutzerrichtlinien des Benutzerobjekts werden verarbeitet, danach kommen die für den Computer ermittelten Benutzerrichtlinien hinzu |
| Ersetzen | Benutzerrichtlinien des Benutzerobjekts werden durch die für den Computer ermittelten Benutzerrichtlinien ersetzt |
Wenn Benutzereinstellungen nur auf bestimmten Computern unerwartet sind, muss Loopback geprüft werden.
24. Kerberos-Grundprinzip
Vereinfacht:
Benutzeranmeldung
↓
Authentication Service Request
↓
Ticket Granting Ticket
↓
Ticket Granting Service Request
↓
Dienstticket für einen SPN
↓
Zugriff auf den Zieldienst
Wichtige Begriffe:
| Begriff | Bedeutung |
|---|---|
| KDC | Key Distribution Center auf einem Domänencontroller |
| TGT | Ticket Granting Ticket |
| Dienstticket | Ticket für einen konkreten Dienst |
| SPN | eindeutiger Dienstbezeichner eines Kontos |
| Realm | Kerberos-Sicherheitsbereich, in AD meist zur Domäne zugeordnet |
| PAC | enthält unter anderem Autorisierungsinformationen |
| Delegierung | Weitergabe von Anmeldeinformationen unter definierten Bedingungen |
Kerberos benötigt insbesondere:
- funktionierende DNS-Auflösung,
- erreichbaren KDC,
- korrekte Zeit,
- gültige Konten,
- korrekte Kennwörter,
- eindeutige SPNs,
- einen zum Zielnamen passenden Dienstprinzipal.
25. Kerberos-Tickets prüfen
Tickets des aktuellen Anmeldekontexts:
klist
TGT anzeigen:
klist tgt
Zwischengespeicherte Tickets auflisten:
klist tickets
KDCs anzeigen:
klist query_bind
Zu prüfen sind:
- Clientname,
- Servername beziehungsweise SPN,
- Kerberos-Realm,
- Tickettyp,
- Start- und Ablaufzeit,
- Erneuerungszeit,
- Verschlüsselungstyp,
- Flags,
- verwendeter KDC.
Das Löschen des Ticketcaches verändert den Diagnosezustand:
klist purge
klist purge sollte erst eingesetzt werden, wenn:
- vorhandene Tickets dokumentiert wurden,
- klar ist, welcher Sicherheitskontext betroffen ist,
- erneute Authentifizierung möglich ist,
- keine kritische Sitzung unterbrochen wird,
- der Test gezielt ein neues Ticket anfordern soll.
Nach dem Löschen kann ein erneuter Zugriff auf die Zielressource ein neues Ticket auslösen.
26. Service Principal Names prüfen
SPNs eines Kontos anzeigen:
setspn -L <Kontoname>
Bestimmten SPN suchen:
setspn -Q <Dienst>/<Hostname>
Beispiel:
setspn -Q HTTP\webserver.ad.example.local
Doppelte SPNs domänen- beziehungsweise gesamtstrukturweit suchen:
setspn -X
Mögliche SPN-Probleme:
- SPN fehlt,
- SPN ist dem falschen Konto zugeordnet,
- SPN ist doppelt vorhanden,
- Client verwendet Alias statt registriertem Hostnamen,
- Dienstkonto wurde geändert,
- Server wurde umbenannt,
- Dienst läuft unter anderem Konto als erwartet,
- alter SPN blieb nach Migration erhalten.
SPNs dürfen nicht ohne vorherige Suche, Dokumentation und Prüfung verändert werden. Ein falsches Entfernen kann andere Dienste oder Benutzer beeinträchtigen.
27. Kerberos und NTLM unterscheiden
Anmeldesitzungen:
klist sessions
Tickets:
klist
Für bestimmte Verbindungen können zusätzlich Ereignisprotokolle, Dienstprotokolle oder geeignete Netzwerkaufzeichnungen erforderlich sein.
Mögliche Hinweise auf NTLM statt Kerberos:
- kein passendes Dienstticket vorhanden,
- Zugriff erfolgt über IP-Adresse,
- SPN für den verwendeten Namen fehlt,
- Ziel befindet sich außerhalb der Kerberos-Vertrauensbeziehung,
- Anwendung fordert ausdrücklich NTLM,
- DNS- oder Namensproblem,
- Kerberos-Anforderung schlägt fehl und ein Fallback ist möglich.
Ein funktionierender Zugriff beweist deshalb nicht automatisch, dass Kerberos verwendet wurde.
28. Zugriff über IP-Adresse und Hostname vergleichen
Beispiel:
\\192.0.2.10\Freigabe
\\server01\Freigabe
\\server01.ad.example.local\Freigabe
Unterschiedliche Ergebnisse können auf Folgendes hinweisen:
- DNS-Problem,
- Alias-Problem,
- SPN-Problem,
- Kerberos funktioniert nur für einen bestimmten Namen,
- Zertifikat passt nicht zum verwendeten Namen,
- Anwendung verwendet unterschiedliche Sicherheitszonen,
- IPv4 und IPv6 führen zu unterschiedlichen Zielen.
Der Zugriff per IP-Adresse ist kein allgemeiner Ersatz für korrekte Namensauflösung. Bei Kerberos ist der verwendete Zielname für die SPN-Zuordnung entscheidend.
29. Kerberos-Ereignisse untersuchen
Relevante Protokolle können sein:
- Sicherheitsprotokoll auf Client, Server und DC,
- Systemprotokoll,
- Kerberos-Key-Distribution-Center-Protokoll,
- NETLOGON-Protokoll,
- dienstspezifische Protokolle.
PowerShell-Beispiel für aktuelle Sicherheitsereignisse:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = (Get-Date).AddHours(-2)
} |
Where-Object {
$_.Id -in 4768, 4769, 4771, 4776
} |
Select-Object TimeCreated,
Id,
Message
Typische Ereigniskategorien:
| Kategorie | Mögliche Bedeutung |
|---|---|
| TGT wurde angefordert | Benutzer- oder Computerauthentifizierung |
| Dienstticket wurde angefordert | Zugriff auf einen bestimmten SPN |
| Kerberos-Vorauthentifizierung fehlgeschlagen | Kennwort, Zeit, Kontostatus oder anderer Authentifizierungsfehler |
| Anmeldeinformationen wurden validiert | häufig NTLM-bezogene Prüfung |
| Kontosperrung | wiederholte fehlerhafte Authentifizierung |
Event-IDs müssen mit dem vollständigen Ereignistext und dem jeweiligen System ausgewertet werden.
30. Typische Fehlerbilder
| Symptom | Mögliche Ursache | Nächster Test |
|---|---|---|
| Domäne kann nicht gefunden werden | DNS oder DC-Erreichbarkeit | ipconfig /all, SRV-Abfrage, nltest /dsgetdc |
| Anmeldung funktioniert offline, aber nicht im Firmennetz | DC-, DNS-, Zeit- oder Secure-Channel-Problem | DC-Suche, Zeit und Secure Channel |
| Vertrauensstellung fehlgeschlagen | Computerkennwort oder Computerkonto inkonsistent | Test-ComputerSecureChannel, Replikation |
| neues Kennwort funktioniert nur manchmal | unterschiedliche DC-Daten | verwendeten DC und Replikation prüfen |
| Benutzer bleibt trotz Entsperrung gesperrt | gespeicherte alte Anmeldedaten | Sperrquelle und Sicherheitsereignisse |
| GPO wird nicht angezeigt | falsche OU, Filterung oder Link | gpresult, GPMC |
| GPO wird angezeigt, Einstellung fehlt | Überschreibung oder Erweiterungsfehler | Detailbericht und GroupPolicy-Protokoll |
| Computerrichtlinie fehlt | Computerobjekt, Neustart oder Computerbereich | gpresult /scope computer |
| Benutzerrichtlinie fehlt | Benutzerobjekt, Token oder Benutzerbereich | gpresult /scope user |
| GPO funktioniert nur an einem Standort nicht | Site, DC, Replikation oder Netzwerk | DC-Zuordnung und Replikation |
| SYSVOL nicht erreichbar | DNS, SMB, DC oder DFSR | Port 445, Freigabe und DC-Protokolle |
| Kerberos-Ticket fehlt | SPN, DNS, KDC oder Anwendung | klist, setspn -Q |
| Kerberos scheitert nur über Alias | fehlender SPN für Alias | verwendeten Namen und SPN prüfen |
| Zugriff funktioniert per IP, nicht per Name | DNS, SPN oder Zertifikat | Namen einzeln prüfen |
| Zugriff funktioniert per Name, nicht per IP | Kerberos- oder Anwendungsanforderung | Ticket und Zielkonfiguration |
| Dienst funktioniert nur mit NTLM | SPN oder Delegierung | Dienstkonto und SPNs |
| Replikation meldet RPC-Fehler | DNS, Firewall, RPC oder Partner offline | Namensauflösung und Ports |
| Benutzer hat neue Gruppe, aber keinen Zugriff | altes Anmeldetoken | whoami /groups, erneute Anmeldung |
| Fehler nur auf einem Client | lokaler DNS-, Cache-, Konto- oder Profilfehler | Vergleichsclient und lokale Konfiguration |
| Fehler auf vielen Clients | zentrale AD-, DNS-, GPO- oder Netzwerkstörung | DCs, Replikation und Änderungen |
| Fehler nach VM-Snapshot | Secure Channel oder Zeit zurückgesetzt | Zeit, Computerkonto und Secure Channel |
31. Vorgehensweise bei einer nicht angewendeten GPO
- Betroffenen Benutzer und Computer bestimmen.
- Prüfen, ob Benutzer- und Computerobjekt in den erwarteten OUs liegen.
- Verwendeten Domänencontroller dokumentieren.
- DNS- und DC-Erreichbarkeit prüfen.
- SYSVOL-Zugriff prüfen.
-
gpresultals HTML-Bericht erstellen. - angewendete und abgelehnte GPOs prüfen.
- Sicherheitsfilterung und WMI-Filter prüfen.
- Verknüpfung, Reihenfolge und Vererbung prüfen.
- Loopbackverarbeitung berücksichtigen.
- GroupPolicy-Operational-Protokoll auswerten.
- AD- und SYSVOL-Replikation prüfen.
- genau eine kontrollierte Korrektur durchführen.
- Richtlinien erneut verarbeiten.
- Ergebnisbericht und Benutzerfunktion erneut prüfen.
32. Vorgehensweise bei einer fehlgeschlagenen Anmeldung
- Exakte Meldung und Zeitpunkt erfassen.
- Lokale und Domänenanmeldung unterscheiden.
- Netzwerkverbindung prüfen.
- DNS-Server und DNS-Suffix prüfen.
- Domänencontroller über SRV-Einträge suchen.
- verwendeten DC bestimmen.
- Zeit und Zeitquelle prüfen.
- Benutzerkonto auf Sperre, Ablauf und Deaktivierung prüfen.
- Secure Channel des Clients prüfen.
- Replikationsstatus der DCs prüfen.
- Sicherheits- und Kerberos-Ereignisse auswerten.
- gespeicherte Anmeldedaten, Dienste und Aufgaben berücksichtigen.
- genau eine Maßnahme durchführen.
- Anmeldung und Ressourcenabruf erneut testen.
33. Vorgehensweise bei Kerberos-Problemen
- verwendeten Zielnamen dokumentieren.
- DNS-Auflösung dieses Namens prüfen.
- Zeit von Client, Server und DC vergleichen.
- KDC beziehungsweise DC-Erreichbarkeit prüfen.
- vorhandene Tickets mit
klistdokumentieren. - nach passendem Dienstticket suchen.
- erwarteten SPN bestimmen.
- SPN mit
setspn -Qsuchen. - Dienstkonto und tatsächlichen Dienstprozess vergleichen.
- doppelte SPNs prüfen.
- Sicherheits- und Kerberos-Ereignisse korrelieren.
- Vertrauensstellung und Delegierung berücksichtigen.
- Ticketcache nur kontrolliert leeren.
- Zugriff erneut auslösen.
- neues Ticket und Funktion prüfen.
34. Maßnahmen und Rückwege
Ursache: falscher DNS-Server am Client
Nachweis:
- Client verwendet einen nicht zuständigen DNS-Server,
- AD-SRV-Einträge werden nicht korrekt aufgelöst,
- interner DNS-Server liefert die erwarteten Einträge.
Maßnahme:
- DNS-Konfiguration kontrolliert auf die vorgesehenen internen DNS-Server korrigieren.
Rollback:
- ursprüngliche Adapter- oder DHCP-Konfiguration dokumentiert wiederherstellen.
Verifikation:
- SRV-Abfrage,
- DC-Suche,
- Anmeldung,
- GPO-Verarbeitung,
- Anwendungszugriff.
Ursache: fehlerhafter Secure Channel
Nachweis:
- Secure-Channel-Prüfung schlägt fehl,
- Computerkonto ist vorhanden,
- DNS, Zeit und DC-Erreichbarkeit funktionieren,
- Replikation ist ausreichend gesund.
Maßnahme:
- Secure Channel mit berechtigtem Konto kontrolliert reparieren.
Rollback:
- vorab dokumentierte Computer- und Domänenkonfiguration verwenden;
- bei Fehlschlag nach freigegebenem Wiederherstellungsverfahren vorgehen.
Verifikation:
- Secure Channel erneut prüfen,
- Neustart oder Anmeldung testen,
- Gruppenrichtlinien und Ressourcen testen.
Ursache: GPO durch Sicherheitsfilterung ausgeschlossen
Nachweis:
-
gpresultnennt die GPO als abgelehnt, - Benutzer oder Computer besitzt nicht die erforderlichen Berechtigungen.
Maßnahme:
- Sicherheitsfilterung nach dem Minimalprinzip korrigieren.
Rollback:
- ursprüngliche ACL beziehungsweise Gruppenmitgliedschaft wiederherstellen.
Verifikation:
- neues Token berücksichtigen,
- GPO aktualisieren,
-
gpresulterneut erzeugen, - konkrete Einstellung prüfen.
Ursache: doppelter SPN
Nachweis:
-
setspn -Qodersetspn -Xzeigt den SPN mehrfach, - Kerberos-Ereignisse passen zum Fehler,
- Dienstkonto und Zielname wurden bestätigt.
Maßnahme:
- falsche SPN-Zuordnung nach Freigabe entfernen und korrekte eindeutige Zuordnung sicherstellen.
Rollback:
- vorherige SPN-Zuordnungen vollständig dokumentieren.
Verifikation:
- neue Tickets anfordern,
- Dienstticket prüfen,
- Zugriff mit vorgesehenem Namen testen.
Ursache: AD-Replikationsfehler
Nachweis:
-
repadminoder PowerShell zeigt konkrete Fehler, - betroffene Objekte oder Kennwörter unterscheiden sich zwischen DCs,
- Fehlercode und Abhängigkeit wurden bestimmt.
Maßnahme:
- zugrunde liegendes DNS-, Netzwerk-, RPC-, Zeit-, Authentifizierungs- oder DC-Problem beheben.
Rollback:
- abhängig von der konkreten Änderung;
- keine erzwungene Replikations- oder Metadatenbereinigung ohne Wiederherstellungsplan.
Verifikation:
-
repadmin /replsummary, -
repadmin /showrepl, - Objektvergleich,
- Anmeldung und GPO-Verarbeitung.
35. Nachkontrolle
Nach jeder Maßnahme sind mindestens folgende Punkte erneut zu prüfen:
- Client verwendet die vorgesehenen DNS-Server.
- AD-SRV-Einträge werden korrekt aufgelöst.
- vorgesehene Domänencontroller sind erreichbar.
- Zeit und Zeitquelle sind plausibel.
- Secure Channel funktioniert.
- Benutzer- und Computerkonto sind aktiv.
- Replikation zeigt keine zum Fehler gehörenden Störungen.
- SYSVOL und NETLOGON sind erreichbar.
- benötigte Gruppenmitgliedschaften sind im aktuellen Token enthalten.
- erwartete GPOs werden angewendet.
- abgelehnte GPOs sind fachlich erklärbar.
- Gruppenrichtlinienprotokoll zeigt keine neuen relevanten Fehler.
- erforderliches Kerberos-Ticket wird ausgestellt.
- SPN ist eindeutig und dem richtigen Konto zugeordnet.
- Benutzerfunktion wurde praktisch getestet.
- keine unnötigen Berechtigungen wurden vergeben.
- temporäre Diagnose- oder Protokollierungsfunktionen wurden beendet.
- Ursache, Maßnahme, Rückweg und Ergebnis wurden dokumentiert.
36. Dokumentationsbeispiel
Symptom:
Die Laufwerkszuordnung aus der Gruppenrichtlinie wurde auf einem
Client nicht erstellt.
Zeitpunkt:
02.08.2026, 10:18 Uhr MESZ
Betroffener Benutzer:
max.mustermann
Betroffener Computer:
CLIENT-17
Verwendeter Domänencontroller:
DC02.ad.example.local
Nachweis:
DNS-Auflösung, Zeit und SYSVOL-Zugriff waren erfolgreich.
Der gpresult-Bericht zeigte die GPO als abgelehnt.
Als Ablehnungsgrund wurde die Sicherheitsfilterung angegeben.
Die erforderliche Benutzergruppe war im Active Directory eingetragen,
fehlte aber im aktuellen Anmeldetoken.
Ursache:
Die Gruppenmitgliedschaft wurde erst nach Beginn der bestehenden
Benutzersitzung hinzugefügt.
Maßnahme:
Der Benutzer meldete sich kontrolliert ab und erneut an.
An der GPO und ihren Berechtigungen wurde nichts verändert.
Rollback:
Nicht erforderlich, da keine Konfiguration geändert wurde.
Verifikation:
whoami /groups zeigt die vorgesehene Gruppe.
gpresult zeigt die angewendete GPO.
Das Laufwerk wurde verbunden.
Keine neuen Fehler im GroupPolicy-Protokoll.
Prävention:
Bei Änderungen an Gruppenmitgliedschaften wird künftig berücksichtigt,
dass bestehende Anmeldetoken nicht automatisch vollständig erneuert werden.
37. Entscheidungsbaum
Domänenanmeldung, GPO oder Ressourcenzugriff gestört
↓
Stimmen IP-Konfiguration und interne DNS-Server?
├── Nein
│ ↓
│ Netzwerk- und DNS-Konfiguration korrigieren
│
└── Ja
↓
Werden AD-SRV-Einträge und DCs gefunden?
├── Nein
│ ↓
│ DNS-Zone, SRV-Einträge und DC-Dienste prüfen
│
└── Ja
↓
Sind DC und benötigte Ports erreichbar?
├── Nein
│ ↓
│ Routing, Firewall, Standort und Dienste prüfen
│
└── Ja
↓
Stimmen Zeit und Secure Channel?
├── Nein
│ ↓
│ Zeitquelle oder Vertrauensbeziehung untersuchen
│
└── Ja
↓
Ist die AD-Replikation fehlerfrei?
├── Nein
│ ↓
│ Replikationsfehler nach Code und Richtung analysieren
│
└── Ja
↓
Betrifft der Fehler Gruppenrichtlinien?
├── Ja
│ ↓
│ gpresult, SYSVOL, Filter, OU und Ereignisse prüfen
│
└── Nein
↓
Betrifft der Fehler Kerberos oder einen Dienst?
├── Ja
│ ↓
│ Tickets, SPNs, Zielname und Dienstkonto prüfen
│
└── Nein
↓
Konto, Gruppen, Berechtigungen und Anwendung untersuchen
38. Typische Prüfungsfragen
Warum ist DNS für Active Directory besonders wichtig?
Antwort anzeigen
Active Directory verwendet DNS und insbesondere SRV-Einträge, damit Clients Domänencontroller, Kerberos-Dienste und Global Catalogs finden. Eine reine Auflösung externer Internetnamen reicht für eine funktionierende Domänenumgebung nicht aus.
Warum kann ein neues Kennwort an einem Client funktionieren und an einem anderen nicht?
Antwort anzeigen
Die Clients können unterschiedliche Domänencontroller verwenden. Bei einer Replikationsstörung ist das neue Kennwort möglicherweise noch nicht auf allen benötigten Domänencontrollern verfügbar.
Wozu dient gpresult?
Antwort anzeigen
gpresult zeigt die resultierenden Gruppenrichtlinien für einen Benutzer oder Computer. Es kann angewendete und abgelehnte GPOs, Sicherheitsgruppen, Filter und weitere Verarbeitungsinformationen darstellen.
Warum ist gpupdate /force noch keine Fehlerbehebung?
Antwort anzeigen
Der Befehl löst eine erneute Verarbeitung der Gruppenrichtlinien aus. Er erklärt jedoch nicht, warum eine GPO zuvor nicht angewendet wurde. Dafür müssen Ergebnisbericht, Ereignisse, Filterung, Verknüpfung und Abhängigkeiten geprüft werden.
Warum kann eine neue Gruppenmitgliedschaft trotz korrektem AD-Eintrag noch wirkungslos sein?
Antwort anzeigen
Das aktuelle Anmeldetoken wurde möglicherweise vor der Gruppenänderung erzeugt. Die neue Mitgliedschaft ist dann noch nicht im Token enthalten und wird häufig erst nach erneuter Anmeldung wirksam.
Welche drei grundlegenden Abhängigkeiten benötigt Kerberos besonders?
Antwort anzeigen
Kerberos benötigt insbesondere funktionierende DNS-Auflösung, ausreichend genaue Zeitsynchronisation und korrekte beziehungsweise eindeutige Dienstidentitäten in Form von SPNs.
Was ist ein SPN?
Antwort anzeigen
Ein Service Principal Name identifiziert eine konkrete Dienstinstanz und ist einem Active-Directory-Konto zugeordnet. Der KDC verwendet ihn, um ein Dienstticket für den richtigen Dienst auszustellen.
Warum kann ein doppelter SPN die Kerberos-Authentifizierung verhindern?
Antwort anzeigen
Der KDC kann den Dienst nicht eindeutig einem Konto zuordnen. Dadurch kann kein korrektes Dienstticket für die erwartete Dienstidentität ausgestellt werden.
Warum sollte ein Computer nicht sofort aus der Domäne entfernt werden?
Antwort anzeigen
Dadurch wird der für die Diagnose wichtige Zustand verändert. Außerdem kann die Maßnahme zusätzliche Probleme mit Computerkonto, Profilen, Berechtigungen, Zertifikaten und verwalteter Konfiguration erzeugen.
Worin unterscheiden sich AD- und SYSVOL-Replikation bei einer GPO?
Antwort anzeigen
Der Group Policy Container mit den Verzeichnisinformationen liegt im Active Directory. Das Group Policy Template mit den dateibasierten Richtlinieninhalten liegt in SYSVOL. Beide Bestandteile müssen verfügbar und konsistent sein.
39. Prüfungsfallen
- öffentlichen DNS-Server auf einem Domänenmitglied eintragen.
- erfolgreichen Ping als Nachweis für funktionierendes Active Directory bewerten.
- nur den A-Eintrag, aber keine SRV-Einträge prüfen.
- IP-Erreichbarkeit mit funktionierender Authentifizierung gleichsetzen.
- Zeitabweichung übersehen.
- Domänencontroller und DNS-Server ungeprüft neu starten.
- Computer sofort aus der Domäne entfernen.
- Computerkonto ohne Sicherung löschen.
- Secure Channel reparieren, obwohl DNS oder Replikation gestört ist.
- Gruppenmitgliedschaft im AD mit dem aktuellen Token gleichsetzen.
- Benutzer wegen fehlender Berechtigung in eine weitreichende Administratorgruppe aufnehmen.
-
gpupdate /forceals alleinige Fehleranalyse verwenden. - Benutzer- und Computerrichtlinien verwechseln.
- falschen Benutzerkontext für
gpresultverwenden. - OU des Benutzers prüfen, obwohl eine Computerrichtlinie betroffen ist.
- Sicherheitsfilterung, WMI-Filter oder Loopback übersehen.
- GPO löschen, statt Verknüpfung und Filterung zu untersuchen.
- SYSVOL-Zugriff nicht prüfen.
- AD-Replikation prüfen, aber SYSVOL-Replikation übersehen.
- Replikation ungeprüft erzwingen.
- einzelne
dcdiag-Warnung ohne Zusammenhang als Ursache bewerten. - Event-ID ohne Provider und vollständigen Text interpretieren.
- Kerberos und NTLM nicht unterscheiden.
- Zugriff per IP-Adresse als dauerhafte Lösung verwenden.
- Ticketcache vor der Dokumentation löschen.
- SPN ohne vorherige Suche verändern.
- gültigen SPN dem falschen Dienstkonto zuordnen.
- doppelten SPN ungeprüft entfernen.
- mehrere Änderungen gleichzeitig durchführen.
- nach einer Maßnahme weder Ticket noch GPO-Ergebnis erneut prüfen.
- keine praktische Benutzerfunktion testen.
40. Checkliste
- exakter Fehlertext wurde dokumentiert.
- Fehlerzeitpunkt und Zeitzone wurden erfasst.
- betroffener Benutzer wurde bestimmt.
- betroffener Computer wurde bestimmt.
- betroffener Zielserver oder Dienst wurde bestimmt.
- lokale und Domänenanmeldung wurden unterschieden.
- IP-Konfiguration wurde geprüft.
- vorgesehene interne DNS-Server werden verwendet.
- DNS-Suffix wurde geprüft.
- AD-SRV-Einträge wurden geprüft.
- verwendeter Domänencontroller wurde bestimmt.
- Standort beziehungsweise AD-Site wurde berücksichtigt.
- DC-Erreichbarkeit wurde geprüft.
- benötigte Ports wurden geprüft.
- SYSVOL wurde geprüft.
- NETLOGON wurde geprüft.
- Zeit und Zeitzone wurden geprüft.
- Zeitquelle wurde geprüft.
- Secure Channel wurde geprüft.
- Benutzerkonto wurde auf Sperre und Ablauf geprüft.
- Computerkonto wurde geprüft.
- AD-Gruppenmitgliedschaften wurden geprüft.
- aktuelles Benutzertoken wurde geprüft.
- AD-Replikation wurde geprüft.
- letzter erfolgreicher Replikationszeitpunkt wurde dokumentiert.
- Replikationsrichtung wurde berücksichtigt.
-
dcdiagwurde bei DC-Problemen ausgewertet. - FSMO-Rollen wurden bei passendem Fehlerbild geprüft.
- Benutzer- und Computerrichtlinien wurden unterschieden.
-
gpresultwurde im richtigen Kontext erzeugt. - angewendete und abgelehnte GPOs wurden geprüft.
- OU und GPO-Verknüpfung wurden geprüft.
- Sicherheitsfilterung wurde geprüft.
- WMI-Filter wurde geprüft.
- Vererbung und Erzwingen wurden geprüft.
- Loopbackverarbeitung wurde berücksichtigt.
- GroupPolicy-Operational-Protokoll wurde geprüft.
- vorhandene Kerberos-Tickets wurden dokumentiert.
- verwendeter Zielname wurde dokumentiert.
- benötigter SPN wurde bestimmt.
- SPN-Zuordnung wurde geprüft.
- doppelte SPNs wurden bei Bedarf gesucht.
- Kerberos- und Sicherheitsereignisse wurden zeitlich korreliert.
- letzte Änderungen wurden berücksichtigt.
- funktionierender Vergleichsclient wurde verwendet.
- genau eine kontrollierte Maßnahme wurde durchgeführt.
- Rückweg wurde festgelegt.
- Anmeldung wurde erneut getestet.
- GPO-Ergebnis wurde erneut geprüft.
- Kerberos-Ticket wurde erneut geprüft.
- konkrete Benutzerfunktion wurde getestet.
- Ursache, Maßnahme und Ergebnis wurden dokumentiert.
- vorbeugende Maßnahme wurde festgelegt.
41. Schnellreferenz
| Beobachtung | Nächstes Werkzeug |
|---|---|
| Domäne wird nicht gefunden | ipconfig /all, nslookup, nltest /dsgetdc |
| falscher DNS-Server | Adapter-, DHCP- und DNS-Konfiguration |
| DC wird nicht gefunden | SRV-Abfragen und nltest |
| Anmeldung nur offline möglich | DC-Erreichbarkeit, Zeit, Secure Channel |
| Vertrauensstellung fehlgeschlagen | Test-ComputerSecureChannel, nltest |
| neues Kennwort funktioniert nicht überall | repadmin, verwendeten DC bestimmen |
| Replikationsfehler | repadmin /replsummary, repadmin /showrepl |
| DC-Zustand unklar | dcdiag /v |
| DNS auf DC fehlerhaft | dcdiag /test:dns /v |
| GPO fehlt | gpresult, GPMC |
| GPO abgelehnt | gpresult /h, Sicherheitsfilterung |
| GPO-Einstellung fehlt | Detailbericht und GroupPolicy-Protokoll |
| SYSVOL nicht erreichbar | DNS, SMB-Port und Freigaben |
| Gruppenänderung wirkt nicht | whoami /groups, erneute Anmeldung |
| Konto wird wiederholt gesperrt | Sicherheitsprotokoll und gespeicherte Anmeldedaten |
| Kerberos-Ticket fehlt | klist, DNS, Zeit |
| Dienstticket fehlt | klist, setspn -Q |
| doppelter SPN vermutet | setspn -X |
| Fehler nur über Alias | DNS- und SPN-Zuordnung |
| Zugriff nur über IP möglich | DNS, Zielname, SPN und Kerberos |
| Fehler nur an einem Standort | AD-Site, DC-Auswahl und Replikation |
| Fehler nur auf einem Client | lokale DNS-, Konto-, Token- oder Profilprüfung |
Merksatz
Active-Directory-Fehler werden von unten nach oben analysiert: Netzwerk, DNS, Domänencontroller, Zeit, Secure Channel, Replikation, Konten, Gruppenrichtlinien und Kerberos. Erst wenn die Abhängigkeiten nachweislich funktionieren, wird die betroffene Richtlinie, Berechtigung oder Anwendung verändert. Jede Änderung benötigt einen Rückweg und eine erneute Funktionsprüfung.
Quellen und weiterführende Dokumentation
Offizielle Microsoft-Dokumentation
- Microsoft Learn – AD DS Troubleshooting
- Microsoft Learn – Troubleshooting Active Directory Replication Problems
- Microsoft Learn – Diagnose Active Directory Replication Failures
- Microsoft Learn – Active Directory Replication Error 1722
- Microsoft Learn – Active Directory Replication Error 5
- Microsoft Learn – Group Policy Processing
- Microsoft Learn – Applying Group Policy Troubleshooting Guidance
- Microsoft Learn – Kerberos Authentication Troubleshooting Guidance
- Microsoft Learn – Domain Controller Is Not Functioning Correctly
- Microsoft Learn – Repadmin
- Microsoft Learn – Dcdiag
- Microsoft Learn – Gpresult
- Microsoft Learn – Gpupdate
- Microsoft Learn – Klist
- Microsoft Learn – Setspn
- Microsoft Learn – W32tm
- Microsoft Learn – Test-ComputerSecureChannel
- Microsoft Learn – Get-ADReplicationFailure
- Microsoft Learn – Get-ADReplicationPartnerMetadata
8.3 Datei-, Freigabe-, Rechte- und Druckdienste analysieren
Datei- und Druckdienstfehler entstehen häufig nicht durch eine einzelne Komponente. Namensauflösung, Netzwerk, Authentifizierung, Freigabeberechtigungen, Dateisystemrechte, Gruppenmitgliedschaften, SMB-Einstellungen, DFS, Speicherplatz und Druckwarteschlangen wirken zusammen.
Grundregel:
Zuerst feststellen, ob bereits die Verbindung, die Authentifizierung, die Freigabe, die Datei oder erst die konkrete Aktion fehlschlägt.
1. Diagnosekette bei Dateizugriffen
Client
↓
DNS-Auflösung
↓
Netzwerk und TCP 445
↓
SMB-Dienst
↓
Authentifizierung
↓
Freigabeberechtigung
↓
NTFS-Berechtigung
↓
Datei, Ordner, Sperre oder Anwendung
↓
Datenträger und Backend
Jede Stufe muss getrennt geprüft werden.
| Prüfschritt | Typische Frage |
|---|---|
| Namensauflösung | Zeigt der Servername auf die richtige IP-Adresse? |
| Netzwerk | Ist der Server über den vorgesehenen Pfad erreichbar? |
| SMB-Port | Ist TCP 445 erreichbar? |
| SMB-Dienst | Nimmt der Server SMB-Verbindungen an? |
| Authentifizierung | Mit welchem Konto erfolgt der Zugriff? |
| Freigaberecht | Darf das Konto die Freigabe verwenden? |
| NTFS-Recht | Darf das Konto den Ordner oder die Datei verwenden? |
| Objektzustand | Existiert die Datei und ist sie verfügbar? |
| Sperre | Wird die Datei von einem Prozess blockiert? |
| Speicher | Sind Datenträger, Quota und Backend funktionsfähig? |
2. Fehler exakt aufnehmen
Zu dokumentieren sind:
- vollständiger UNC-Pfad;
- Servername und Freigabename;
- betroffener Benutzer;
- betroffener Client;
- genaue Aktion;
- vollständiger Fehlertext;
- Fehlercode;
- Zeitpunkt mit Zeitzone;
- verwendete Netzwerkverbindung;
- funktioniert der Zugriff über IP-Adresse, Kurzname oder FQDN;
- funktioniert eine andere Freigabe auf demselben Server;
- funktioniert dieselbe Freigabe für einen anderen Benutzer;
- funktioniert derselbe Benutzer an einem anderen Client;
- trat der Fehler nach einer Rechte-, Gruppen-, GPO-, DNS- oder Serveränderung auf.
Beispiele für unterschiedliche Aktionen:
- Freigabe auflisten;
- Ordner öffnen;
- Datei lesen;
- Datei erstellen;
- Datei ändern;
- Datei löschen;
- Datei umbenennen;
- Unterordner erstellen;
- Berechtigungen ändern;
- Eigentümer übernehmen.
Ein Benutzer kann einen Ordner möglicherweise öffnen, aber keine Datei erstellen oder löschen. Deshalb genügt die Aussage „Zugriff funktioniert nicht“ nicht.
3. UNC-Pfad und Ziel bestimmen
Typischer UNC-Pfad:
\\fileserver01\Daten
Mit FQDN:
\\fileserver01.ad.example.local\Daten
Über DFS:
\\ad.example.local\Daten\Abteilung
Zu unterscheiden sind:
- tatsächlicher Dateiserver;
- DNS-Name oder Alias;
- DFS-Namespace;
- Freigabename;
- lokaler Pfad auf dem Server;
- verbundenes Netzlaufwerk;
- eventuell verwendeter Cluster- oder Failovername.
Ein Netzlaufwerk wie H: verdeckt den tatsächlichen UNC-Pfad. Dieser kann beispielsweise mit folgendem Befehl geprüft werden:
net use
PowerShell:
Get-SmbMapping
4. DNS-Auflösung prüfen
Resolve-DnsName fileserver01
Resolve-DnsName fileserver01.ad.example.local
nslookup fileserver01
Zusätzlich prüfen:
ping fileserver01
Der Ping dient hier hauptsächlich dazu, den aufgelösten Namen und die Zieladresse zu sehen. Er beweist nicht, dass SMB funktioniert.
Zu vergleichen sind:
- Kurzname;
- FQDN;
- IP-Adresse;
- erwartete Serveradresse;
- IPv4- und IPv6-Ergebnis;
- DNS-Alias;
- DFS-Namespace-Name.
Unterschiedliche Ergebnisse können auf Folgendes hinweisen:
- falscher oder veralteter DNS-Eintrag;
- falsches DNS-Suffix;
- DNS-Cache;
-
hosts-Datei; - alter Serveralias;
- DFS verweist auf ein anderes Ziel;
- IPv4 und IPv6 führen über unterschiedliche Pfade;
- Kerberos-SPN passt nicht zum verwendeten Namen.
5. SMB-Port prüfen
Windows:
Test-NetConnection fileserver01 -Port 445
Ausführlicher:
Test-NetConnection fileserver01 `
-Port 445 `
-InformationLevel Detailed
Linux:
nc -vz fileserver01 445
Ein erfolgreicher Test auf TCP 445 zeigt:
- der Name wurde aufgelöst;
- eine Route zum Ziel ist vorhanden;
- der TCP-Verbindungsaufbau war möglich;
- auf dem Ziel oder einem vorgeschalteten System wurde die Verbindung angenommen.
Er beweist noch nicht:
- erfolgreiche SMB-Authentifizierung;
- Zugriff auf eine bestimmte Freigabe;
- ausreichende Berechtigungen;
- Verfügbarkeit einer bestimmten Datei;
- Funktionsfähigkeit des Storage-Backends.
6. SMB-Clientverbindungen prüfen
Aktuelle SMB-Verbindungen:
Get-SmbConnection
Ausgewählte Informationen:
Get-SmbConnection |
Select-Object ServerName,
ShareName,
UserName,
Credential,
Dialect,
NumOpens
SMB-Zuordnungen:
Get-SmbMapping
Klassische Anzeige:
net use
Dabei sind besonders zu prüfen:
- Servername;
- Freigabename;
- verwendetes Benutzerkonto;
- Verbindungsstatus;
- SMB-Dialekt;
- bereits bestehende Verbindungen zum selben Server;
- Verbindung über Alias, Kurzname oder FQDN.
7. Konflikt durch unterschiedliche Anmeldedaten
Windows verwendet für Verbindungen zu einem Server nicht beliebig viele verschiedene Anmeldeinformationen innerhalb desselben Benutzerkontexts.
Typisches Fehlerbild:
Mehrfache Verbindungen zu einem Server oder einer freigegebenen Ressource
von demselben Benutzer unter Verwendung mehrerer Benutzernamen sind nicht zulässig.
Bestehende Verbindungen anzeigen:
net use
Gespeicherte Anmeldeinformationen anzeigen:
cmdkey /list
Mögliche Ursachen:
- alte Verbindung zum selben Server;
- Verbindung über einen anderen Freigabenamen;
- gespeicherte falsche Anmeldedaten;
- Dienst oder Skript verwendet ein anderes Konto;
- Server wird einmal über Kurzname und einmal über Alias angesprochen;
- Laufwerkszuordnung wurde bereits mit anderen Anmeldedaten hergestellt.
Verbindungen dürfen nicht pauschal gelöscht werden, ohne ihre Verwendung zu prüfen. Ein Trennen kann geöffnete Dateien oder Anwendungen unterbrechen.
Gezieltes Trennen einer Zuordnung:
net use Z: /delete
Gezieltes Trennen eines UNC-Ziels:
net use \\fileserver01\Daten /delete
8. Freigaben auf dem Server prüfen
Vorhandene SMB-Freigaben:
Get-SmbShare
Bestimmte Freigabe:
Get-SmbShare -Name Daten
Wichtige Eigenschaften:
Get-SmbShare -Name Daten |
Select-Object Name,
Path,
Description,
ScopeName,
FolderEnumerationMode,
EncryptData,
ConcurrentUserLimit
Klassische Anzeige:
net share
Zu prüfen sind:
- Freigabe existiert;
- Freigabename ist korrekt;
- lokaler Zielpfad existiert;
- Datenträger oder Mountpoint ist verfügbar;
- Freigabe zeigt nicht auf einen alten Pfad;
- Freigabe ist im richtigen Server- oder Cluster-Scope vorhanden;
- erforderliche SMB-Einstellungen sind aktiv;
- versteckte Freigabe mit
$wurde korrekt angegeben.
Administrative Freigaben wie C$ benötigen normalerweise administrative Berechtigungen und sind kein geeigneter allgemeiner Funktionstest für normale Benutzer.
9. Freigabeberechtigungen prüfen
Get-SmbShareAccess -Name Daten
Beispielausgabe:
Name AccountName AccessControlType AccessRight
---- ----------- ----------------- -----------
Daten AD\GG-Dateidienst-Lesen Allow Read
Daten AD\GG-Dateidienst-Ändern Allow Change
Wichtige Freigaberechte:
| Freigaberecht | Grundsätzliche Wirkung |
|---|---|
| Lesen | Inhalte anzeigen und Dateien lesen |
| Ändern | zusätzlich erstellen, ändern und löschen |
| Vollzugriff | zusätzlich Freigabeberechtigungen verwalten |
Die genaue wirksame Berechtigung ergibt sich nicht allein aus dieser Tabelle. Verweigerungen, Gruppenmitgliedschaften und NTFS-Berechtigungen müssen zusätzlich berücksichtigt werden.
10. NTFS-Berechtigungen prüfen
PowerShell:
Get-Acl 'D:\Freigaben\Daten' |
Format-List
Einzelne Zugriffsregeln:
(Get-Acl 'D:\Freigaben\Daten').Access |
Select-Object IdentityReference,
FileSystemRights,
AccessControlType,
IsInherited,
InheritanceFlags,
PropagationFlags
Kommandozeile:
icacls D:\Freigaben\Daten
Rekursives Auslesen kann bei großen Verzeichnisstrukturen sehr umfangreich und belastend sein. Es sollte nur gezielt eingesetzt werden.
Zu prüfen sind:
- Benutzer- und Gruppeneinträge;
- Zulassen oder Verweigern;
- Vererbung;
- nur für diesen Ordner geltende Rechte;
- Rechte für Unterordner und Dateien;
- Eigentümer;
- explizite Einträge;
- geerbte Einträge;
- unterbrochene Vererbung;
- abweichende Rechte auf dem betroffenen Unterordner oder der Datei.
11. Freigabe- und NTFS-Rechte gemeinsam bewerten
Bei einem SMB-Zugriff wirken grundsätzlich beide Ebenen:
wirksames Freigaberecht
+
wirksames NTFS-Recht
↓
restriktivere wirksame Kombination
Beispiele:
| Freigabe | NTFS | Ergebnis über SMB |
|---|---|---|
| Lesen | Ändern | Lesen |
| Ändern | Lesen | Lesen |
| Vollzugriff | Ändern | Ändern |
| Vollzugriff | Vollzugriff | Vollzugriff |
| Ändern | keine Berechtigung | kein Zugriff |
Beim lokalen Zugriff auf den Serverpfad gelten die Freigabeberechtigungen nicht. Dort werden nur die Dateisystemberechtigungen ausgewertet.
Deshalb kann ein lokaler Test auf dem Server funktionieren, während der Zugriff über SMB fehlschlägt.
12. Lesen, Ändern und Vollzugriff unterscheiden
Typische NTFS-Rechte:
| Recht | Bedeutung |
|---|---|
| Ordnerinhalt anzeigen | Ordner durchsuchen und Inhalte auflisten |
| Lesen | Inhalte und Eigenschaften lesen |
| Schreiben | Dateien oder Daten erstellen beziehungsweise schreiben |
| Lesen und Ausführen | Dateien lesen und ausführbare Dateien starten |
| Ändern | lesen, schreiben, ausführen und löschen |
| Vollzugriff | zusätzlich Berechtigungen und Eigentum verwalten |
Für normale gemeinsame Datenordner reicht häufig Ändern. Vollzugriff sollte nicht ohne fachlichen Grund vergeben werden.
13. Löschen benötigt besondere Beachtung
Zum Löschen eines Objekts kann abhängig von der ACL eines der folgenden Rechte entscheidend sein:
-
Löschenauf der Datei oder dem Ordner; -
Unterordner und Dateien löschenauf dem übergeordneten Ordner.
Dadurch können scheinbar widersprüchliche Situationen entstehen:
- Benutzer kann eine Datei ändern, aber nicht löschen;
- Benutzer kann eine Datei löschen, obwohl die Datei selbst keinen offensichtlichen Lösch-Eintrag zeigt;
- Benutzer kann Dateien erstellen, aber nicht umbenennen;
- Benutzer kann Ordner öffnen, aber bestimmte Unterordner nicht auflisten.
Die Berechtigungen müssen deshalb auf dem betroffenen Objekt und dem übergeordneten Ordner geprüft werden.
14. Vererbung kontrollieren
(Get-Acl 'D:\Freigaben\Daten\Abteilung').AreAccessRulesProtected
Mögliche Zustände:
- Vererbung aktiv;
- Vererbung deaktiviert und geerbte Einträge kopiert;
- Vererbung deaktiviert und geerbte Einträge entfernt;
- einzelne explizite Rechte ergänzen die geerbten Rechte;
- explizite Verweigerung schränkt geerbte Zulassung ein.
Typische Fehler:
- neuer Unterordner übernimmt unerwartete Rechte;
- Vererbung wurde an einer Zwischenebene unterbrochen;
- Berechtigung gilt nur für den aktuellen Ordner;
- Berechtigung gilt nur für Unterordner;
- migrierte Dateien besitzen alte ACLs;
- Eigentümer oder Vererbungsquelle stimmt nicht mehr.
Berechtigungen sollten nicht rekursiv ersetzt werden, bevor Umfang, Vererbung und Rückweg vollständig geklärt sind.
15. Gruppenmitgliedschaften prüfen
AD-Mitgliedschaften eines Benutzers:
Get-ADPrincipalGroupMembership max.mustermann |
Select-Object Name
Aktuelle Gruppen im Anmeldetoken:
whoami /groups
Aktuelles Konto:
whoami
Benutzer-SID:
whoami /user
Berechtigungen des aktuellen Tokens:
whoami /priv
Wichtige Unterscheidung:
Mitgliedschaft im Active Directory
≠
Mitgliedschaft im bereits erzeugten Anmeldetoken
Wurde ein Benutzer gerade einer Gruppe hinzugefügt, kann eine erneute Anmeldung erforderlich sein. Eine bloße Sperrung und Entsperrung des Bildschirms erzeugt normalerweise kein vollständig neues interaktives Anmeldetoken.
16. Effektive Berechtigungen bewerten
Die grafische Registerkarte befindet sich üblicherweise unter:
Eigenschaften
→ Sicherheit
→ Erweitert
→ Effektiver Zugriff
Dabei muss der richtige Benutzer beziehungsweise Sicherheitsprinzipal ausgewählt werden.
Zu berücksichtigen sind:
- direkte Benutzerrechte;
- verschachtelte Gruppen;
- Domänen- und lokale Gruppen;
- geerbte Rechte;
- explizite Rechte;
- Verweigerungen;
- aktuelles Token;
- Share- und NTFS-Ebene;
- Zugriff über DFS oder direkt auf den Zielserver.
Die Anzeige der effektiven NTFS-Rechte ersetzt nicht die Prüfung der Freigabeberechtigungen.
17. Zulassen und Verweigern
Eine explizite Verweigerung kann ein ansonsten gewährtes Recht blockieren. Trotzdem darf nicht vereinfacht angenommen werden, dass jede sichtbare Verweigerung immer sämtliche Zulassungen überschreibt.
Die Auswertung hängt unter anderem ab von:
- expliziten und geerbten Einträgen;
- Benutzer- und Gruppenzugehörigkeit;
- Reihenfolge der kanonischen ACL;
- betroffenem Einzelrecht;
- Objekt- und Vererbungsbereich;
- Share- und NTFS-Ebene.
Verweigerungen sollten sparsam verwendet werden. Eine saubere Gruppen- und Ordnerstruktur ist häufig leichter zu analysieren.
18. Access-Based Enumeration
Access-Based Enumeration kann Ordner vor Benutzern ausblenden, die darauf keine Berechtigung besitzen.
Einstellung anzeigen:
Get-SmbShare -Name Daten |
Select-Object FolderEnumerationMode
Mögliche Folge:
- Ordner existiert;
- direkter Zugriff kann abhängig von den Rechten möglich sein;
- Ordner erscheint beim Auflisten der Freigabe nicht.
Ein ausgeblendeter Ordner wurde daher nicht zwangsläufig gelöscht oder nicht repliziert.
19. Geöffnete Dateien und SMB-Sitzungen prüfen
Auf dem Dateiserver:
Get-SmbSession
Geöffnete Dateien:
Get-SmbOpenFile
Gefiltert nach Pfad:
Get-SmbOpenFile |
Where-Object {
$_.Path -like '*\Daten\*'
}
Wichtige Informationen:
- Clientcomputer;
- Benutzername;
- Sitzungs-ID;
- Dateipfad;
- Anzahl geöffneter Dateien;
- verbundene Zeit;
- Leerlaufzeit;
- verwendeter SMB-Dialekt.
Eine Sitzung oder Datei darf nicht ungeprüft geschlossen werden. Nicht gespeicherte Daten können verloren gehen.
20. Dateisperren untersuchen
Typische Meldungen:
- Datei wird von einem anderen Prozess verwendet;
- Zugriff verweigert;
- Dokument ist für die Bearbeitung gesperrt;
- schreibgeschützter Zugriff;
- Umbenennen oder Löschen nicht möglich.
Mögliche Ursachen:
- Datei ist auf einem anderen Client geöffnet;
- Anwendung verwendet eine eigene Sperrdatei;
- Virenscanner oder Indexdienst greift auf die Datei zu;
- Backup- oder Synchronisationssoftware hält ein Handle;
- Prozess auf dem Server verwendet die Datei;
- vorherige Anwendungssitzung wurde nicht sauber beendet;
- Benutzer besitzt kein Änderungs- oder Löschrecht;
- Datei oder Ordner ist schreibgeschützt;
- Anwendung verwendet ein eigenes Check-out-Verfahren.
Werkzeuge:
-
Get-SmbOpenFile; - Computerverwaltung → Freigegebene Ordner → Geöffnete Dateien;
- Sysinternals Handle;
- Process Explorer;
- Process Monitor;
- anwendungsspezifische Protokolle.
Nicht jede Meldung über eine „gesperrte Datei“ beweist eine technische SMB-Sperre. Anwendungen können eigene Sperrmechanismen verwenden.
21. SMB-Serverkonfiguration prüfen
Get-SmbServerConfiguration
Ausgewählte Werte:
Get-SmbServerConfiguration |
Select-Object EnableSMB1Protocol,
EnableSMB2Protocol,
RequireSecuritySignature,
EncryptData,
EnableLeasing,
EnableOplocks,
AuditSmb1Access
Clientkonfiguration:
Get-SmbClientConfiguration
Zu prüfen sind:
- unterstützter SMB-Dialekt;
- SMB-Signierung;
- SMB-Verschlüsselung;
- Gastzugriff;
- alte SMB-Versionen;
- Richtlinienänderungen;
- Kompatibilität mit NAS, Scanner oder Altgerät;
- Abweichungen zwischen funktionierendem und betroffenem Client.
SMB 1 darf nicht pauschal als Problemlösung aktiviert werden. Das Protokoll ist veraltet und besitzt erhebliche Sicherheitsnachteile. Bei Altgeräten ist eine Aktualisierung, Segmentierung oder Ablösung zu prüfen.
22. Verwendeten SMB-Dialekt bestimmen
Get-SmbConnection |
Select-Object ServerName,
ShareName,
Dialect,
Signed,
Encrypted
Mögliche Beobachtungen:
- moderner Client verwendet unerwartet alten Dialekt;
- Signierung wird verlangt, aber nicht unterstützt;
- Verschlüsselung wird verlangt, aber nicht ausgehandelt;
- Verbindung zu einem alten NAS scheitert;
- Verbindung über einen anderen Namen erzeugt einen anderen Authentifizierungsweg.
Die tatsächlich verwendete Verbindung muss geprüft werden. Eine allgemeine Servereinstellung beweist noch nicht, welcher Dialekt in einer bestimmten Sitzung ausgehandelt wurde.
23. Kerberos und NTLM bei SMB
Tickets prüfen:
klist
Für SMB ist typischerweise ein Dienstticket für einen SPN nach folgendem Muster relevant:
cifs/fileserver01
SPN suchen:
setspn -Q cifs/fileserver01
Mit FQDN:
setspn -Q cifs/fileserver01.ad.example.local
Mögliche Ursachen für NTLM statt Kerberos:
- Zugriff über IP-Adresse;
- fehlender oder falscher SPN;
- Zugriff über nicht registrierten Alias;
- DNS-Problem;
- keine geeignete Vertrauensbeziehung;
- Anwendung oder Gerät unterstützt Kerberos nicht;
- Kerberos schlägt fehl und NTLM-Fallback ist möglich.
Ein erfolgreicher SMB-Zugriff beweist nicht automatisch, dass Kerberos verwendet wurde.
24. Zugriff über Alias prüfen
Beispiel:
\\fileserver01\Daten
\\datenserver\Daten
Beide Namen können auf dieselbe IP-Adresse zeigen, aber für Kerberos unterschiedliche Dienstidentitäten darstellen.
Zu prüfen sind:
- DNS-Eintrag des Alias;
- CIFS-SPN für den verwendeten Namen;
- Konto, dem der SPN zugeordnet ist;
- Cluster- oder Computerkonto;
- doppelte SPNs;
- vorhandene Kerberos-Tickets;
- Server- und SMB-Konfiguration.
Ein zusätzlicher DNS-CNAME allein stellt noch nicht sicher, dass Kerberos über den Alias funktioniert.
25. DFS-Namespace untersuchen
Ein DFS-Pfad kann Benutzer auf einen oder mehrere tatsächliche Zielserver verweisen:
\\ad.example.local\Daten\Abteilung
DFS-Namespace-Informationen:
Get-DfsnRoot
Ordner und Ziele:
Get-DfsnFolder
Get-DfsnFolderTarget
Clientseitige DFS-Informationen:
dfsutil /pktinfo
DFS-Cache anzeigen:
dfsutil /pktinfo
Zu prüfen sind:
- Namespace erreichbar;
- DFS-Ordner vorhanden;
- Zielserver korrekt;
- Ziel aktiviert;
- Client verwendet das erwartete Ziel;
- Standortzuordnung korrekt;
- Zielserver erreichbar;
- DNS-Auflösung des tatsächlichen Zielservers;
- Berechtigungen auf jedem Ziel;
- Replikationsstatus;
- veralteter Client-Referral-Cache.
26. DFS-Namespace und DFS-Replikation unterscheiden
| Funktion | Aufgabe |
|---|---|
| DFS Namespace | stellt einen einheitlichen logischen Pfad bereit |
| DFS Replication | repliziert Ordnerinhalte zwischen Servern |
Ein funktionierender Namespace beweist nicht, dass die Daten repliziert wurden. Umgekehrt kann die Replikation funktionieren, während ein Namespace-Ziel falsch konfiguriert oder nicht erreichbar ist.
Typisches Fehlerbild:
- Benutzer erreicht den DFS-Pfad;
- abhängig vom ausgewählten Zielserver fehlen Dateien;
- Dateien besitzen unterschiedliche Versionen;
- Rechte unterscheiden sich zwischen Zielen;
- ein Replikationspartner ist verzögert oder gestört.
27. DFS-Replikation prüfen
Relevanter Ereignisprotokollpfad:
Ereignisanzeige
→ Anwendungs- und Dienstprotokolle
→ DFS Replication
PowerShell:
Get-WinEvent -FilterHashtable @{
LogName = 'DFS Replication'
StartTime = (Get-Date).AddHours(-4)
} |
Select-Object TimeCreated,
Id,
LevelDisplayName,
Message
Replikationsgruppen:
Get-DfsReplicationGroup
Mitgliedschaften:
Get-DfsrMembership
Verbindungen:
Get-DfsrConnection
Zu dokumentieren sind:
- Replikationsgruppe;
- replizierter Ordner;
- Quell- und Zielserver;
- betroffene Richtung;
- letzter Fehler;
- Zeitpunkt;
- freier Speicherplatz;
- Datenbankzustand;
- Backlog;
- Konflikt- oder Staging-Bereich;
- letzte Änderungen.
Eine manuell erzwungene Synchronisation ist keine erste Diagnosemaßnahme.
28. Offline Files und Clientcache
Windows kann Netzwerkdateien lokal zwischenspeichern. Dadurch können Benutzer zeitweise mit einer lokalen Kopie arbeiten.
Mögliche Fehlerbilder:
- alte Dateiversion wird angezeigt;
- Synchronisierung schlägt fehl;
- Datei ist offline verfügbar, obwohl der Server erreichbar sein sollte;
- Konflikt zwischen lokaler und serverseitiger Änderung;
- Netzlaufwerk wird als offline angezeigt;
- unterschiedliche Benutzer sehen unterschiedliche Stände;
- Anwendung arbeitet weiter, obwohl der Server nicht erreichbar ist.
Zu prüfen sind:
- Synchronisierungscenter;
- Offlineverfügbarkeit;
- Netzwerkstatus;
- verwendeter UNC- beziehungsweise DFS-Pfad;
- Konflikte;
- Ereignisprotokolle;
- GPO-Konfiguration;
- Speicherplatz im lokalen Cache.
Der Offlinecache darf nicht ungeprüft zurückgesetzt werden. Nicht synchronisierte Benutzerdaten könnten verloren gehen.
29. Quotas und freier Speicherplatz
Freien Speicherplatz prüfen:
Get-Volume
Dateisystemlaufwerke:
Get-PSDrive -PSProvider FileSystem
FSRM-Quotas:
Get-FsrmQuota
Mögliche Symptome:
- Datei kann nicht gespeichert werden;
- Kopieren bricht ab;
- „Nicht genügend Speicherplatz“;
- Benutzer kann kleine, aber keine großen Dateien speichern;
- Anwendung meldet nur einen allgemeinen Schreibfehler;
- Freigabe ist erreichbar, Änderungen schlagen jedoch fehl;
- DFS-R oder Druckspooler arbeitet nicht mehr.
Zu unterscheiden sind:
- physischer Datenträger voll;
- Thin-Provisioning-Pool voll;
- Benutzer- oder Ordnerquota erreicht;
- VSS- oder Snapshotbereich belegt Speicher;
- temporärer Speicherplatz erschöpft;
- Dateisystem besitzt ein anderes Limit;
- Backend-Speicher des NAS oder SAN ist voll.
30. Lange Pfade und Dateinamen
Mögliche Ursachen:
- gesamter Pfad ist zu lang;
- Anwendung unterstützt lange Pfade nicht;
- Dateiname enthält nicht unterstützte Zeichen;
- Name endet problematisch mit Punkt oder Leerzeichen;
- reservierter Gerätename wird verwendet;
- Anwendung besitzt ein eigenes kürzeres Pfadlimit;
- Archiv- oder Synchronisationssoftware kann den Pfad nicht verarbeiten;
- Quell- und Zielsystem verwenden unterschiedliche Namensregeln.
Typische reservierte Namen unter Windows sind beispielsweise:
CON
PRN
AUX
NUL
COM1
LPT1
Die Unterstützung langer Pfade hängt nicht nur vom Betriebssystem ab. Auch Anwendung, API und Konfiguration müssen sie unterstützen.
31. Eigentümer und ACL-Zustand
Eigentümer anzeigen:
(Get-Acl 'D:\Freigaben\Daten').Owner
Mögliche Probleme:
- nicht mehr auflösbare SID;
- migriertes Benutzer- oder Gruppenkonto;
- Eigentümer ist nicht mehr vorhanden;
- ACL wurde bei Kopie oder Restore verändert;
- Vererbung ist beschädigt oder unerwartet unterbrochen;
- Backup wurde ohne Sicherheitsinformationen wiederhergestellt;
- Dateien stammen aus einer anderen Domäne;
- NAS bildet Windows-SIDs nicht korrekt ab.
Nicht auflösbare SIDs beweisen allein keinen Fehler. Sie können noch wirksame Sicherheitskennungen ehemaliger oder nicht erreichbarer Domänenkonten darstellen und müssen vor einer Entfernung zugeordnet werden.
32. Ereignisprotokolle für SMB prüfen
Wichtige Protokollpfade können sein:
Microsoft
→ Windows
→ SMBClient
→ Connectivity
Microsoft
→ Windows
→ SMBClient
→ Security
Microsoft
→ Windows
→ SMBServer
→ Operational
Microsoft
→ Windows
→ SMBServer
→ Security
PowerShell-Beispiel:
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-SMBClient/Connectivity'
StartTime = (Get-Date).AddHours(-2)
} |
Select-Object TimeCreated,
Id,
LevelDisplayName,
Message
Zusätzlich können relevant sein:
- System;
- Sicherheit;
- DNS Client Events;
- Kerberos;
- NETLOGON;
- DFS Replication;
- Failover Clustering;
- NTFS;
- Disk;
- StorPort;
- anwendungsspezifische Protokolle.
Event-ID, Provider, Zeitpunkt, Server, Client und vollständiger Ereignistext müssen gemeinsam bewertet werden.
33. SMB-Netzwerkverkehr untersuchen
Bei unklarem Netzwerk- oder Protokollfehler kann ein Paketmitschnitt erforderlich sein.
Typische Filter:
tcp.port == 445
smb2
ip.addr == 192.0.2.20 && tcp.port == 445
Zu untersuchen sind:
- TCP-Verbindungsaufbau;
- Retransmissions;
- TCP Reset;
- SMB-Negotiation;
- Session Setup;
- Tree Connect;
- Authentifizierungsfehler;
- SMB-Statuscodes;
- lange Antwortzeiten;
- Verbindungsabbruch;
- Server- oder Clientverzögerung.
Ein Paketmitschnitt kann Datei- und Benutzernamen sowie weitere vertrauliche Informationen enthalten und muss geschützt gespeichert werden.
34. Druckpfad verstehen
Anwendung
↓
Druckertreiber
↓
Windows-Druckwarteschlange
↓
Spooler
↓
Druckserver oder direkter TCP/IP-Port
↓
Netzwerk
↓
Drucker
↓
Druckwerk, Papier und Verbrauchsmaterial
Die Meldung „Drucker druckt nicht“ kann daher verursacht werden durch:
- Anwendung;
- Treiber;
- Spooler;
- Queue;
- Druckserver;
- Berechtigung;
- Netzwerk;
- DNS;
- Portkonfiguration;
- SNMP;
- Druckerzustand;
- Papier oder Toner;
- mechanische Störung.
35. Druckerfehler exakt eingrenzen
Zu dokumentieren sind:
- Druckername;
- Freigabename;
- Druckserver;
- Drucker-IP;
- DNS-Name;
- Treibername und Version;
- verwendeter Port;
- betroffener Client;
- betroffener Benutzer;
- Anwendung;
- Dokumenttyp;
- Zeitpunkt;
- Status der Warteschlange;
- vollständiger Fehlertext;
- funktioniert eine Windows-Testseite;
- funktioniert ein anderes Dokument;
- funktioniert der Druck aus einer anderen Anwendung;
- funktioniert ein anderer Benutzer;
- funktioniert ein anderer Drucker;
- betrifft es einen oder alle Clients.
Diese Tests trennen Anwendung, Benutzer, Client, Treiber, Queue, Server und Gerät voneinander.
36. Drucker und Warteschlangen anzeigen
PowerShell:
Get-Printer
Ausgewählte Eigenschaften:
Get-Printer |
Select-Object Name,
ComputerName,
DriverName,
PortName,
Shared,
ShareName,
PrinterStatus,
JobCount
Bestimmter Drucker:
Get-Printer -Name 'Drucker-01'
Druckaufträge:
Get-PrintJob -PrinterName 'Drucker-01'
Druckerkonfiguration:
Get-PrintConfiguration -PrinterName 'Drucker-01'
37. Print Spooler prüfen
Get-Service Spooler
Ausführlicher:
Get-CimInstance Win32_Service `
-Filter "Name='Spooler'" |
Select-Object Name,
State,
StartMode,
StartName,
ProcessId
Abhängigkeiten:
Get-Service Spooler -DependentServices
Ein Neustart des Spoolers:
Restart-Service Spooler
verändert den Zustand und kann alle lokalen beziehungsweise serverseitigen Druckaufträge beeinflussen. Vorher sind zu prüfen:
- betrifft der Fehler alle Drucker;
- hängen einzelne oder alle Aufträge;
- befinden sich wichtige Aufträge in der Queue;
- stürzt der Spooler wiederholt ab;
- welcher Treiber oder Print Processor ist beteiligt;
- was zeigen Ereignisprotokolle;
- besteht ein Wartungs- oder Freigabefenster.
38. Druckaufträge kontrollieren
Get-PrintJob -PrinterName 'Drucker-01' |
Select-Object ID,
DocumentName,
UserName,
SubmittedTime,
JobStatus,
Size
Einzelnen Auftrag entfernen:
Remove-PrintJob `
-PrinterName 'Drucker-01' `
-ID 17
Vor dem Entfernen prüfen:
- gehört der Auftrag zum untersuchten Fehler;
- handelt es sich um einen produktiv wichtigen Auftrag;
- wird die Queue dadurch für andere Benutzer freigegeben;
- tritt der Fehler mit einem neuen Testauftrag wieder auf.
Nicht sofort die gesamte Warteschlange leeren, wenn ein einzelner Auftrag die Ursache sein könnte.
39. Druckerport prüfen
Get-PrinterPort
Bestimmter Port:
Get-PrinterPort -Name 'IP_192.0.2.50'
Zu prüfen sind:
- richtige IP-Adresse;
- richtiger DNS-Name;
- Standard-TCP/IP-Port;
- Raw oder LPR;
- TCP-Port 9100;
- LPR-Queue-Name;
- SNMP aktiviert;
- SNMP-Community;
- WSD statt festem TCP/IP-Port;
- Druckeradresse nach DHCP-Änderung;
- alter Port nach Druckeraustausch.
Porttest für RAW Printing:
Test-NetConnection 192.0.2.50 -Port 9100
Mögliche weitere Protokolle hängen vom Drucksystem ab, beispielsweise IPP, IPPS, LPR oder SMB.
40. SNMP-Statusfehler
Ein Drucker kann erreichbar und druckfähig sein, aber in Windows als offline erscheinen, wenn die SNMP-Statusabfrage fehlschlägt.
Mögliche Ursachen:
- SNMP auf dem Drucker deaktiviert;
- falsche Community;
- UDP 161 blockiert;
- SNMP-Version nicht kompatibel;
- Drucker beantwortet Statusabfragen fehlerhaft;
- falscher Port verweist auf ein anderes Gerät;
- Sicherheitsrichtlinie verhindert die Abfrage.
Das Deaktivieren des SNMP-Status kann als kontrollierter Diagnosetest dienen. Es ist jedoch keine allgemeine Lösung, weil dadurch echte Gerätestatusinformationen verloren gehen können.
41. Druckertreiber untersuchen
Installierte Treiber:
Get-PrinterDriver
Mögliche Treiberprobleme:
- falsches Druckermodell;
- alter Treiber;
- beschädigtes Treiberpaket;
- herstellerspezifischer und universeller Treiber kollidieren;
- Architektur- oder Betriebssysteminkompatibilität;
- Treiber verursacht Spooler-Absturz;
- Point-and-Print-Richtlinie verhindert Installation;
- Treiber unterstützt Gerätefunktion nicht;
- Druckdatenformat passt nicht zum Drucker;
- Upgrade hinterließ alte Treiberkomponenten.
Treiber dürfen nicht ungeprüft auf einem produktiven Druckserver ersetzt werden. Dadurch können mehrere Warteschlangen und Benutzer betroffen sein.
42. Windows-Testseite verwenden
Eine Testseite trennt die Anwendung teilweise vom restlichen Druckpfad.
PowerShell über WMI/CIM:
Invoke-CimMethod `
-ClassName Win32_Printer `
-MethodName PrintTestPage `
-Arguments @{} `
-Filter "Name='Drucker-01'"
Bewertung:
| Ergebnis | Wahrscheinlicher Bereich |
|---|---|
| Testseite funktioniert, Anwendung nicht | Anwendung, Dokument, Format oder anwendungsspezifische Einstellungen |
| Testseite bleibt in Queue | Spooler, Treiber, Port oder Druckserver |
| Auftrag verlässt Queue, Drucker reagiert nicht | Port, Netzwerk, Protokoll oder Gerät |
| Auftrag wird gedruckt, Ausgabe fehlerhaft | Treiber, Druckersprache, Gerätekonfiguration oder Hardware |
| alle Drucker betroffen | Spooler, Server, Richtlinie oder gemeinsamer Dienst |
| nur ein Drucker betroffen | Queue, Port, Treiber oder Gerät |
43. Druckereignisse prüfen
Wichtiger Protokollpfad:
Ereignisanzeige
→ Anwendungs- und Dienstprotokolle
→ Microsoft
→ Windows
→ PrintService
→ Operational
Das Operational-Protokoll muss je nach System zunächst aktiviert werden.
PowerShell:
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-PrintService/Operational'
StartTime = (Get-Date).AddHours(-2)
} |
Select-Object TimeCreated,
Id,
LevelDisplayName,
Message
Zusätzlich prüfen:
- PrintService/Admin;
- System;
- Anwendung;
- Spooler-Absturzereignisse;
- Treiberereignisse;
- Netzwerkereignisse;
- Protokolle des Druckservers;
- Weboberfläche und Ereignisprotokoll des Druckers.
44. CUPS unter Linux und macOS prüfen
Druckerstatus:
lpstat -t
Standarddrucker:
lpstat -d
Warteschlange:
lpq
Druckaufträge:
lpstat -o
Auftrag abbrechen:
cancel <Auftrags-ID>
Alle Aufträge eines Druckers abbrechen:
cancel -a <Druckername>
CUPS-Dienst unter systemd:
systemctl status cups
Protokoll:
journalctl -u cups
Je nach System können die CUPS-Protokolle zusätzlich unter folgendem Pfad liegen:
/var/log/cups/
Zu prüfen sind:
- CUPS-Dienst;
- Queue-Zustand;
- deaktivierte oder angehaltene Queue;
- Geräte-URI;
- Treiber beziehungsweise PPD;
- Filterfehler;
- Berechtigungen;
- Erreichbarkeit des Druckers;
- IPP-, LPR- oder RAW-Verbindung;
- vollständiger CUPS-Fehlertext.
45. Typische Fehlerbilder
| Symptom | Mögliche Ursache | Nächster Test |
|---|---|---|
| Servername nicht erreichbar | DNS oder Netzwerk | Resolve-DnsName, Test-NetConnection |
| IP funktioniert, Name nicht | DNS, Alias oder SPN | Kurzname, FQDN und DNS-Einträge vergleichen |
| TCP 445 nicht erreichbar | Firewall, Routing oder SMB-Dienst | Porttest und Serverstatus |
| Freigabe nicht gefunden | falscher Name oder Freigabe fehlt | Get-SmbShare, net share |
| Freigabe öffnet sich, Unterordner nicht | NTFS-Rechte oder ABE | ACL und effektiven Zugriff prüfen |
| Datei lesbar, aber nicht änderbar | fehlendes Schreib- oder Änderungsrecht | Share- und NTFS-Rechte |
| Datei änderbar, aber nicht löschbar | Löschrecht oder Eltern-ACL | Datei- und Ordner-ACL prüfen |
| Zugriff lokal möglich, über SMB nicht | Freigaberecht oder SMB-Pfad | Get-SmbShareAccess |
| neuer Gruppeneintrag wirkt nicht | altes Anmeldetoken | whoami /groups, erneute Anmeldung |
| Zugriff verweigert trotz Gruppenmitgliedschaft | Verweigerung, falsches Token oder NTFS-Recht | effektiven Zugriff prüfen |
| Datei angeblich in Verwendung | offenes Handle oder Anwendungssperre | Get-SmbOpenFile |
| Zugriff über Alias schlägt fehl | SPN oder Kerberos | klist, setspn -Q |
| DFS-Pfad zeigt alte Daten | falsches Ziel oder DFS-R-Störung | dfsutil /pktinfo, DFS-R-Ereignisse |
| Dateien unterscheiden sich je nach Client | unterschiedliche DFS-Ziele | Zielserver und Replikation vergleichen |
| Speichern schlägt ab bestimmter Größe fehl | Quota oder freier Speicher | Volume und FSRM prüfen |
| Drucker für alle Benutzer offline | Netzwerk, Port oder Gerät | Porttest und Druckerstatus |
| nur ein Benutzer kann nicht drucken | Berechtigung oder Benutzerprofil | Druckerrechte und Vergleichsbenutzer |
| nur eine Anwendung druckt nicht | Anwendung oder Dokument | Windows-Testseite |
| alle Drucker eines Servers betroffen | Spooler oder Druckserver | Dienst und Ereignisse |
| nur eine Queue betroffen | Auftrag, Treiber oder Port | Queue, Treiber und Port |
| Auftrag bleibt in Warteschlange | Spooler, Treiber oder Port | PrintService-Protokoll |
| Auftrag verschwindet, kein Ausdruck | Protokoll, Gerät oder Druckersprache | Druckerprotokoll und Port |
| Drucker fälschlich offline | SNMP-Statusabfrage | SNMP-Konfiguration prüfen |
| Spooler stürzt wiederholt ab | Treiber oder Print Processor | Ereignisse und Treiberzuordnung |
46. Vorgehensweise bei „Zugriff verweigert“
- vollständigen UNC-Pfad dokumentieren.
- Benutzer und Client bestimmen.
- konkrete fehlgeschlagene Aktion erfassen.
- verwendetes Konto mit
whoamiprüfen. - aktuelle Gruppen mit
whoami /groupsprüfen. - Servername und Zieladresse prüfen.
- SMB-Verbindung und verwendete Anmeldedaten prüfen.
- Freigabeberechtigungen auslesen.
- NTFS-Berechtigungen des betroffenen Objekts prüfen.
- Vererbung und Eigentümer berücksichtigen.
- Berechtigungen des übergeordneten Ordners prüfen.
- explizite Verweigerungen untersuchen.
- Test mit einem funktionierenden Benutzer durchführen.
- genau eine kontrollierte Korrektur umsetzen.
- Zugriff mit der ursprünglichen Aktion erneut testen.
- Rechte nach dem Minimalprinzip dokumentieren.
47. Vorgehensweise bei „Datei ist gesperrt“
- Dateiname und vollständigen Pfad erfassen.
- Benutzer, Client und Anwendung bestimmen.
- prüfen, ob Lesen oder nur Bearbeiten fehlschlägt.
-
Get-SmbOpenFileauf dem Dateiserver auswerten. - Anwendungssperrdateien berücksichtigen.
- Serverprozesse mit Handle oder Process Explorer prüfen.
- Virenscanner, Backup und Synchronisation berücksichtigen.
- Rechte zum Ändern und Löschen prüfen.
- Benutzer kontaktieren, der die Datei geöffnet hält.
- ungespeicherte Daten ausschließen.
- erst danach gezielt das Handle oder die Sitzung schließen.
- Datei erneut öffnen, ändern und speichern.
- Ursache und Auswirkung dokumentieren.
48. Vorgehensweise bei DFS-Problemen
- logischen DFS-Pfad dokumentieren.
- Client und Benutzer bestimmen.
- DFS-Referral des Clients prüfen.
- tatsächlichen Zielserver dokumentieren.
- Zielserver per DNS und TCP 445 prüfen.
- direkten UNC-Pfad zum Zielserver testen.
- Namespace-Ordner und Ziele prüfen.
- AD-Site und Zielpriorität berücksichtigen.
- Rechte auf allen Zielen vergleichen.
- Dateistände und Zeitstempel vergleichen.
- DFS-R-Ereignisse prüfen.
- Replikationsrichtung und Backlog untersuchen.
- nur die nachgewiesene Ursache korrigieren.
- Clientzugriff und Replikation erneut prüfen.
49. Vorgehensweise bei Druckproblemen
- Drucker, Queue, Server und Port dokumentieren.
- genaue Meldung und Zeitpunkt erfassen.
- Umfang bestimmen: ein Benutzer, Client, Drucker oder alle.
- Warteschlange und Auftragsstatus prüfen.
- Windows-Testseite auslösen.
- Spoolerstatus prüfen.
- PrintService-Ereignisse auswerten.
- Druckername und IP-Adresse prüfen.
- tatsächlichen Druckerport testen.
- SNMP-Status kontrollieren.
- Treibername und Version prüfen.
- Berechtigungen der Queue prüfen.
- Gerätestatus und Verbrauchsmaterial prüfen.
- genau eine kontrollierte Maßnahme durchführen.
- Testseite und ursprüngliches Dokument erneut drucken.
- Ereignisse und Queue nachkontrollieren.
50. Maßnahmen und Rückwege
Ursache: falsche Freigabeberechtigung
Nachweis:
- SMB-Verbindung funktioniert;
- Freigabe existiert;
-
Get-SmbShareAccesszeigt kein ausreichendes Recht; - NTFS-Berechtigung wäre ausreichend.
Maßnahme:
- vorgesehene Sicherheitsgruppe mit minimal erforderlichem Freigaberecht eintragen.
Rollback:
- ursprüngliche Freigabe-ACL dokumentiert wiederherstellen.
Verifikation:
- Verbindung neu testen;
- konkrete Dateiaktion ausführen;
- Freigabe- und NTFS-Rechte erneut kontrollieren.
Ursache: fehlende NTFS-Berechtigung
Nachweis:
- Freigaberecht ist ausreichend;
- effektiver NTFS-Zugriff zeigt das fehlende Einzelrecht;
- Fehler tritt am konkreten Ordner oder Objekt auf.
Maßnahme:
- Berechtigung über die vorgesehene Sicherheitsgruppe und passende Vererbung korrigieren.
Rollback:
- vorherige ACL sichern und bei Bedarf wiederherstellen.
Verifikation:
- Lesen, Erstellen, Ändern und Löschen entsprechend dem Sollzustand einzeln testen.
Ursache: altes Anmeldetoken
Nachweis:
- AD-Gruppenmitgliedschaft ist vorhanden;
-
whoami /groupsenthält die Gruppe noch nicht; - Berechtigungen der Gruppe sind korrekt.
Maßnahme:
- Benutzer kontrolliert ab- und erneut anmelden.
Rollback:
- nicht erforderlich, wenn keine Konfiguration verändert wurde.
Verifikation:
-
whoami /groups; - Zugriff auf die vorgesehene Ressource;
- keine zusätzlichen Rechte vergeben.
Ursache: falsches DFS-Ziel
Nachweis:
- Client-Referral zeigt auf unerwarteten Server;
- direkter Zugriff auf das vorgesehene Ziel funktioniert;
- Namespace-Konfiguration oder Zielstatus ist fehlerhaft.
Maßnahme:
- Zielstatus, Priorität oder Namespace-Zuordnung nach dokumentiertem Sollzustand korrigieren.
Rollback:
- ursprüngliche DFS-Konfiguration dokumentiert wiederherstellen.
Verifikation:
- Referral erneut prüfen;
- DFS-Pfad öffnen;
- Dateistand und Rechte kontrollieren.
Ursache: fehlerhafter Druckerport
Nachweis:
- Queue und Spooler funktionieren;
- Port zeigt auf eine alte oder falsche Adresse;
- vorgesehener Drucker ist unter der richtigen Adresse erreichbar.
Maßnahme:
- Queue kontrolliert auf den korrekten Port umstellen.
Rollback:
- ursprünglichen Port und seine Einstellungen dokumentieren.
Verifikation:
- Windows-Testseite;
- ursprüngliches Dokument;
- Queue- und Druckerstatus;
- PrintService-Ereignisse.
51. Nachkontrolle
Nach einer Maßnahme sind mindestens folgende Punkte zu prüfen:
- vorgesehener Servername wird korrekt aufgelöst;
- TCP 445 ist erreichbar;
- SMB-Verbindung verwendet das vorgesehene Konto;
- SMB-Dialekt und Sicherheitsanforderungen sind plausibel;
- Freigabe zeigt auf den richtigen Pfad;
- Freigabeberechtigungen entsprechen dem Sollzustand;
- NTFS-Berechtigungen entsprechen dem Minimalprinzip;
- Vererbung funktioniert wie vorgesehen;
- aktuelles Token enthält die benötigten Gruppen;
- Lesen, Erstellen, Ändern und Löschen wurden getrennt getestet;
- keine unerwünschten zusätzlichen Rechte wurden vergeben;
- keine wichtigen Dateien oder Sitzungen wurden getrennt;
- DFS verweist auf das vorgesehene Ziel;
- replizierte Daten sind konsistent;
- ausreichend Speicherplatz ist vorhanden;
- Quotas sind plausibel;
- Druckwarteschlange verarbeitet neue Aufträge;
- Druckerport zeigt auf das richtige Gerät;
- Treiber und Spooler arbeiten stabil;
- praktische Benutzerfunktion wurde getestet;
- temporäre Diagnoseänderungen wurden zurückgenommen;
- Ursache, Maßnahme, Rückweg und Ergebnis wurden dokumentiert.
52. Dokumentationsbeispiel
Symptom:
Der Benutzer konnte Dateien in der Freigabe lesen, aber keine neue Datei
im Unterordner „Projekte“ erstellen.
Zeitpunkt:
02.08.2026, 11:26 Uhr MESZ
Benutzer:
max.mustermann
Client:
CLIENT-17
Pfad:
\\fileserver01.ad.example.local\Daten\Projekte
Nachweis:
DNS-Auflösung und TCP 445 waren erfolgreich.
Die SMB-Verbindung verwendete das vorgesehene Domänenkonto.
Die Freigabeberechtigung gewährte der zuständigen Gruppe „Ändern“.
Die NTFS-Auswertung zeigte jedoch nur Leserechte auf dem Unterordner.
Die Vererbung war an diesem Unterordner deaktiviert worden.
Ursache:
Bei einer früheren manuellen ACL-Änderung wurde die Vererbung auf dem
Unterordner unterbrochen. Dadurch fehlte der vorgesehenen Gruppe das
Änderungsrecht.
Maßnahme:
Nach Sicherung der bestehenden ACL wurde die freigegebene
Berechtigungsstruktur des übergeordneten Ordners wiederhergestellt.
Rollback:
Die zuvor exportierte ACL kann wieder eingespielt werden.
Verifikation:
Der Benutzer kann Dateien lesen, erstellen, ändern und löschen.
Er kann keine Berechtigungen verändern.
Andere Abteilungsordner bleiben weiterhin unzugänglich.
Es wurden keine zusätzlichen administrativen Rechte vergeben.
Prävention:
Berechtigungsänderungen erfolgen künftig ausschließlich über dokumentierte
Sicherheitsgruppen und werden durch einen Test des effektiven Zugriffs geprüft.
53. Entscheidungsbaum
Datei- oder Freigabezugriff gestört
↓
Wird der richtige Servername aufgelöst?
├── Nein
│ ↓
│ DNS, Alias und DFS-Namen prüfen
│
└── Ja
↓
Ist TCP 445 erreichbar?
├── Nein
│ ↓
│ Routing, Firewall und SMB-Dienst prüfen
│
└── Ja
↓
Existiert die Freigabe und zeigt sie auf den richtigen Pfad?
├── Nein
│ ↓
│ Freigabe- und Serverkonfiguration prüfen
│
└── Ja
↓
Wird das vorgesehene Benutzerkonto verwendet?
├── Nein
│ ↓
│ bestehende Verbindungen und Anmeldedaten prüfen
│
└── Ja
↓
Sind Freigabeberechtigungen ausreichend?
├── Nein
│ ↓
│ Freigabe-ACL kontrolliert korrigieren
│
└── Ja
↓
Sind NTFS-Berechtigungen ausreichend?
├── Nein
│ ↓
│ ACL, Vererbung, Gruppen und Token prüfen
│
└── Ja
↓
Ist nur eine Datei oder Aktion betroffen?
├── Ja
│ ↓
│ Sperre, Einzel-ACL, Pfad, Quota und Anwendung prüfen
│
└── Nein
↓
DFS, Storage, Serverzustand und zentrale Abhängigkeiten prüfen
54. Typische Prüfungsfragen
Warum reicht ein erfolgreicher Ping zum Dateiserver nicht als Funktionsnachweis?
Antwort anzeigen
Ein Ping prüft eine bestimmte ICMP-Kommunikation. Er beweist weder die Erreichbarkeit von TCP 445 noch eine erfolgreiche SMB-Authentifizierung oder ausreichende Freigabe- und NTFS-Berechtigungen.
Welche Berechtigungen wirken bei einem SMB-Zugriff auf einen NTFS-Ordner?
Antwort anzeigen
Es wirken sowohl die Freigabe- als auch die NTFS-Berechtigungen. Für den Zugriff über das Netzwerk ergibt sich die wirksame Berechtigung aus der restriktiveren Kombination beider Ebenen.
Warum kann der lokale Zugriff auf einen Serverordner funktionieren, während der SMB-Zugriff fehlschlägt?
Antwort anzeigen
Beim lokalen Zugriff werden keine SMB-Freigabeberechtigungen ausgewertet. Über das Netzwerk wirken zusätzlich zu den NTFS-Rechten auch die Freigabeberechtigungen und die SMB-Authentifizierung.
Warum kann eine neue Gruppenmitgliedschaft noch nicht wirksam sein?
Antwort anzeigen
Die Gruppe kann bereits im Active Directory eingetragen sein, aber im aktuellen Anmeldetoken fehlen. Häufig ist eine erneute Benutzeranmeldung erforderlich, damit ein neues Token erzeugt wird.
Worin unterscheiden sich DFS Namespace und DFS Replication?
Antwort anzeigen
DFS Namespace stellt einen einheitlichen logischen Zugriffspfad bereit. DFS Replication synchronisiert Ordnerinhalte zwischen mehreren Servern. Beide Funktionen können unabhängig voneinander gestört sein.
Warum sollte eine geöffnete SMB-Datei nicht sofort zwangsweise geschlossen werden?
Antwort anzeigen
Die zugehörige Anwendung kann noch nicht gespeicherte Änderungen besitzen. Ein erzwungenes Schließen kann Datenverlust oder beschädigte Anwendungszustände verursachen.
Warum beweist ein erfolgreicher Zugriff über einen Alias nicht automatisch die Verwendung von Kerberos?
Antwort anzeigen
Fehlt ein passender CIFS-SPN für den Alias, kann der Zugriff abhängig von der Umgebung über NTLM erfolgen. Tickets und SPN-Zuordnung müssen gesondert geprüft werden.
Welche Funktion besitzt der Print Spooler?
Antwort anzeigen
Der Print Spooler nimmt Druckaufträge entgegen, verarbeitet beziehungsweise zwischenspeichert sie und übergibt sie über die konfigurierte Warteschlange und den Druckerport an das Ziel.
Warum kann ein Drucker fälschlich als offline angezeigt werden?
Antwort anzeigen
Die eigentliche Druckverbindung kann funktionieren, während die SNMP-Statusabfrage fehlschlägt. Ursachen können eine falsche Community, blockiertes UDP 161 oder eine fehlerhafte SNMP-Konfiguration sein.
55. Prüfungsfallen
- erfolgreichen Ping mit funktionierendem SMB gleichsetzen;
- nur die IP-Adresse, aber nicht den verwendeten Namen prüfen;
- verbundenes Laufwerk prüfen, ohne den UNC-Pfad zu bestimmen;
- Freigabe- und NTFS-Berechtigungen verwechseln;
- nur die ACL der Freigabeebene prüfen;
- nur die ACL des übergeordneten Ordners prüfen;
- Vererbung und Einzelrechte nicht berücksichtigen;
- Lesen, Schreiben, Ändern und Löschen gleichsetzen;
- Gruppenmitgliedschaft im AD mit aktuellem Token gleichsetzen;
- Benutzer direkt statt über Sicherheitsgruppen berechtigen;
- Benutzer zur Fehlerbehebung in eine Administratorgruppe aufnehmen;
- pauschal Vollzugriff gewähren;
- Verweigerung ungeprüft entfernen;
- ACLs rekursiv ersetzen, ohne Rückweg festzulegen;
- Eigentümer übernehmen, ohne die ursprüngliche ACL zu sichern;
- alte oder unbekannte SID ungeprüft löschen;
- alle SMB-Verbindungen pauschal trennen;
- Datei-Handle schließen, ohne ungespeicherte Daten auszuschließen;
- SMB 1 als schnelle Kompatibilitätslösung aktivieren;
- erfolgreichen Zugriff mit Kerberos-Authentifizierung gleichsetzen;
- DNS-Alias ohne CIFS-SPN verwenden;
- DFS-Namespace und DFS-Replikation verwechseln;
- DFS-Cache leeren, bevor das verwendete Ziel dokumentiert wurde;
- Replikation ungeprüft erzwingen;
- Offlinecache zurücksetzen, ohne nicht synchronisierte Daten zu prüfen;
- nur freien Speicherplatz, aber keine Quota prüfen;
- Druckwarteschlange vollständig leeren, obwohl nur ein Auftrag betroffen ist;
- Spooler sofort neu starten, ohne Ereignisse und Queue zu sichern;
- Treiber auf einem produktiven Druckserver ungeprüft ersetzen;
- SNMP dauerhaft deaktivieren, ohne die eigentliche Ursache zu prüfen;
- Drucker per IP neu installieren, obwohl nur DNS oder Port falsch ist;
- mehrere Änderungen gleichzeitig durchführen;
- nur eine Testseite, aber nicht die ursprüngliche Benutzerfunktion prüfen.
56. Checkliste
- vollständiger UNC-Pfad wurde dokumentiert.
- betroffener Benutzer wurde bestimmt.
- betroffener Client wurde bestimmt.
- genaue fehlgeschlagene Aktion wurde erfasst.
- Fehlertext und Fehlercode wurden dokumentiert.
- Zeitpunkt und Zeitzone wurden erfasst.
- Servername wurde aufgelöst.
- Ziel-IP wurde mit dem Sollzustand verglichen.
- Kurzname, FQDN und Alias wurden unterschieden.
- TCP 445 wurde geprüft.
- tatsächliche SMB-Verbindung wurde geprüft.
- verwendetes Benutzerkonto wurde geprüft.
- bestehende Verbindungen wurden berücksichtigt.
- gespeicherte Anmeldedaten wurden berücksichtigt.
- Freigabe und lokaler Zielpfad wurden geprüft.
- Freigabeberechtigungen wurden geprüft.
- NTFS-Berechtigungen wurden geprüft.
- Vererbung wurde geprüft.
- Eigentümer wurde geprüft.
- explizite Verweigerungen wurden geprüft.
- Rechte des übergeordneten Ordners wurden berücksichtigt.
- AD-Gruppenmitgliedschaften wurden geprüft.
- aktuelles Anmeldetoken wurde geprüft.
- effektiver Zugriff wurde bewertet.
- Lesen, Erstellen, Ändern und Löschen wurden getrennt getestet.
- Access-Based Enumeration wurde bei unsichtbaren Ordnern berücksichtigt.
- geöffnete SMB-Dateien wurden geprüft.
- Anwendungssperren wurden berücksichtigt.
- SMB-Dialekt wurde geprüft.
- Signierung und Verschlüsselung wurden berücksichtigt.
- Kerberos und NTLM wurden unterschieden.
- CIFS-SPN wurde bei Aliasproblemen geprüft.
- DFS-Referral wurde bei DFS-Pfaden geprüft.
- tatsächlicher DFS-Zielserver wurde bestimmt.
- DFS-Replikation wurde bei abweichenden Datenständen geprüft.
- Offline Files wurden berücksichtigt.
- freier Speicherplatz wurde geprüft.
- Quotas wurden geprüft.
- Pfadlänge und Dateiname wurden berücksichtigt.
- SMB- und Systemereignisse wurden geprüft.
- Drucker, Queue, Server und Port wurden dokumentiert.
- Spoolerstatus wurde geprüft.
- Druckaufträge wurden geprüft.
- Druckerport und Zieladresse wurden geprüft.
- SNMP-Status wurde geprüft.
- Treibername und Version wurden geprüft.
- PrintService-Protokolle wurden geprüft.
- Windows-Testseite wurde verwendet.
- ursprüngliche Benutzerfunktion wurde erneut getestet.
- genau eine kontrollierte Maßnahme wurde durchgeführt.
- Rückweg wurde festgelegt.
- keine unnötigen Rechte wurden vergeben.
- Ursache, Maßnahme und Ergebnis wurden dokumentiert.
57. Schnellreferenz
| Beobachtung | Nächstes Werkzeug |
|---|---|
| Servername zeigt auf falsche IP | Resolve-DnsName, nslookup |
| SMB-Port nicht erreichbar | Test-NetConnection -Port 445 |
| bestehende Netzlaufwerke unklar | net use, Get-SmbMapping |
| verwendetes SMB-Konto unklar | Get-SmbConnection |
| Freigabe fehlt | Get-SmbShare, net share |
| Freigaberecht unklar | Get-SmbShareAccess |
| NTFS-Recht unklar | Get-Acl, icacls |
| aktuelle Gruppen unklar | whoami /groups |
| Datei gesperrt | Get-SmbOpenFile, Handle |
| SMB-Sitzung unklar | Get-SmbSession |
| SMB-Version unklar | Get-SmbConnection |
| Alias funktioniert nicht | klist, setspn -Q |
| DFS-Ziel unklar | dfsutil /pktinfo |
| DFS-Konfiguration unklar | Get-DfsnFolderTarget |
| DFS-R-Störung | DFS-Replication-Protokoll |
| Speicherplatz unklar | Get-Volume, Get-PSDrive |
| Quota vermutet | Get-FsrmQuota |
| Druckerstatus unklar | Get-Printer |
| Druckaufträge hängen | Get-PrintJob |
| Spoolerstatus unklar | Get-Service Spooler |
| Druckerport unklar | Get-PrinterPort |
| Treiber unklar | Get-PrinterDriver |
| Druckereignis gesucht | PrintService/Operational |
| CUPS-Status unklar | lpstat -t, journalctl -u cups |
Merksatz
Bei Datei- und Freigabefehlern wird vom Namen über TCP 445, SMB-Sitzung und Authentifizierung bis zu Freigabe- und NTFS-Rechten geprüft. Bei Druckfehlern wird der Weg von Anwendung und Treiber über Queue, Spooler und Port bis zum physischen Drucker verfolgt. Rechte, Sitzungen, Dateien und Druckaufträge werden erst verändert, wenn Ursache, Auswirkung und Rückweg geklärt sind.
Quellen und weiterführende Dokumentation
Offizielle Microsoft-Dokumentation
- Microsoft Learn – SMB troubleshooting
- Microsoft Learn – Get-SmbConnection
- Microsoft Learn – Get-SmbShare
- Microsoft Learn – Get-SmbShareAccess
- Microsoft Learn – Get-SmbSession
- Microsoft Learn – Get-SmbOpenFile
- Microsoft Learn – Get-SmbServerConfiguration
- Microsoft Learn – Get-Acl
- Microsoft Learn – Icacls
- Microsoft Learn – File and folder permissions
- Microsoft Learn – DFS Namespaces overview
- Microsoft Learn – DFS Replication overview
- Microsoft Learn – DFSR troubleshooting
- Microsoft Learn – Get-DfsnFolderTarget
- Microsoft Learn – Get-DfsReplicationGroup
- Microsoft Learn – Get-Printer
- Microsoft Learn – Get-PrintJob
- Microsoft Learn – Get-PrinterPort
- Microsoft Learn – Get-PrinterDriver
- Microsoft Learn – Windows print troubleshooting
Offizielle CUPS-Dokumentation
- OpenPrinting – CUPS Command-Line Printing
- OpenPrinting – CUPS Administration
- OpenPrinting – CUPS Documentation
8.4 Linux-Server – Dienste, Prozesse, Protokolle, Ressourcen und Speicher
1. Ziel dieser Seite
Diese Seite beschreibt die strukturierte Fehleranalyse auf Linux-Servern.
Typische Störungen betreffen:
- systemd-Dienste;
- Prozesse;
- Konfigurationsdateien;
- Benutzer und Berechtigungen;
- SELinux oder AppArmor;
- Netzwerk und Ports;
- DNS und Namensauflösung;
- CPU, RAM und Swap;
- Datenträger und Dateisysteme;
- Inodes;
- Mounts;
- LVM und Software-RAID;
- Paketverwaltung;
- Cronjobs und systemd-Timer;
- Kernel, Treiber und Hardware;
- Bootvorgang;
- Zeit- und Zertifikatsprobleme.
Das Ziel ist nicht, einen Dienst möglichst schnell neu zu starten. Zuerst werden Fehlerzustand, Ursache, Auswirkungen und Rückweg dokumentiert.
2. Diagnosegrundsatz
Symptom erfassen
↓
Umfang bestimmen
↓
Systemzustand und Zeitpunkt prüfen
↓
Dienst, Prozess und Port untersuchen
↓
Protokolle auswerten
↓
Abhängigkeiten prüfen
↓
Konfiguration und Berechtigungen prüfen
↓
Ressourcen und Storage prüfen
↓
Ursache nachweisen
↓
Eine kontrollierte Maßnahme durchführen
↓
Funktion und Nebenwirkungen kontrollieren
Ein erfolgreicher Prozessstart beweist noch keine funktionierende Anwendung. Ebenso beweist ein offener Port nicht, dass die Anwendung korrekte Antworten liefert.
3. Fehlerbild exakt erfassen
Zu dokumentieren sind:
- Hostname;
- Distribution;
- Betriebssystemversion;
- Kernelversion;
- Architektur;
- betroffener Dienst;
- betroffene Anwendung;
- vollständiger Fehlertext;
- Fehlercode;
- Zeitpunkt mit Zeitzone;
- betroffener Benutzer;
- Quell- und Zielsystem;
- Port und Protokoll;
- betroffene Funktion;
- Umfang der Störung;
- letzte funktionierende Nutzung;
- letzte Änderungen;
- installierte Updates;
- Neustarts;
- Ressourcenstatus;
- bisherige Diagnose- und Änderungsversuche.
Wichtige Abgrenzungsfragen:
- Ist nur ein Benutzer betroffen?
- Ist nur ein Client betroffen?
- Ist nur eine Anwendung betroffen?
- Ist nur eine Instanz betroffen?
- Betrifft es einen oder mehrere Server?
- Funktioniert der Dienst lokal?
- Funktioniert der Dienst über das Netzwerk?
- Ist nur IPv4 oder IPv6 betroffen?
- Tritt der Fehler dauerhaft oder sporadisch auf?
- Begann der Fehler nach einer Änderung?
- Funktioniert die Anwendung, obwohl der Dienststatus einen Fehler meldet?
4. System identifizieren
Hostname:
hostnamectl
Kurzer Hostname:
hostname
Betriebssysteminformationen:
cat /etc/os-release
Kernelversion und Architektur:
uname -a
Nur Kernelversion:
uname -r
Architektur:
uname -m
Systemlaufzeit und Last:
uptime
Letzter Systemstart:
who -b
Aktuelle Zeit und Zeitzone:
timedatectl
Diese Informationen sind wichtig, weil Befehle, Dateipfade, Paketmanager, Sicherheitsmodule und Protokollierung je nach Distribution und Version unterschiedlich sein können.
5. Letzte Änderungen bestimmen
Mögliche Ursachen kurz vor Beginn einer Störung:
- Paketupdate;
- Kernelupdate;
- Konfigurationsänderung;
- Zertifikatsaustausch;
- Änderung von Benutzer oder Gruppe;
- Änderung von Dateirechten;
- Firewalländerung;
- DNS-Änderung;
- neue Mount-Konfiguration;
- Storage-Erweiterung;
- Neustart;
- Deployment;
- geänderte Umgebungsvariable;
- neuer systemd-Drop-in;
- geänderte SELinux- oder AppArmor-Regel;
- abgelaufenes Kennwort oder Zertifikat.
Anmeldehistorie:
last
Fehlgeschlagene Anmeldungen, sofern unterstützt und berechtigt:
lastb
Letzte Neustarts:
last reboot
Zeitstempel einer Datei:
stat /etc/example/application.conf
RPM-basierte Systeme:
dnf history
Debian- und Ubuntu-Systeme:
grep -E ' install | upgrade | remove ' /var/log/dpkg.log
Rotierte Protokolle müssen gegebenenfalls zusätzlich geprüft werden.
6. systemd-Gesamtzustand prüfen
Fehlgeschlagene Units:
systemctl --failed
Systemzustand:
systemctl is-system-running
Alle geladenen Dienste:
systemctl list-units --type=service --all
Installierte Unit-Dateien:
systemctl list-unit-files --type=service
Abweichende oder lokal angepasste Units:
systemd-delta
Ein System kann als degraded angezeigt werden, obwohl die vom Benutzer benötigte Anwendung funktioniert. Deshalb müssen die fehlgeschlagenen Units einzeln bewertet werden.
7. Dienststatus untersuchen
Beispieldienst:
systemctl status example.service
Aktivitätsstatus:
systemctl is-active example.service
Autostartstatus:
systemctl is-enabled example.service
Fehlerzustand:
systemctl is-failed example.service
Ausgewählte Eigenschaften:
systemctl show example.service \
-p ActiveState \
-p SubState \
-p Result \
-p ExecMainCode \
-p ExecMainStatus \
-p MainPID \
-p User \
-p Group \
-p FragmentPath
Zu unterscheiden sind:
-
loaded: Unit-Datei wurde geladen; -
active: Unit ist aktiv; -
inactive: Unit ist nicht aktiv; -
failed: vorheriger Start oder Betrieb endete fehlerhaft; -
enabled: Unit ist für automatischen Start eingebunden; -
disabled: kein automatischer Start über die übliche Aktivierung; -
masked: Start wurde durch eine Verknüpfung auf/dev/nullblockiert; -
static: Unit besitzt normalerweise keinen eigenen Installationsabschnitt und wird durch andere Units gestartet; -
activating: Startvorgang läuft; -
deactivating: Beendigung läuft.
enabled bedeutet nicht, dass der Dienst gerade läuft. active bedeutet nicht automatisch, dass er beim nächsten Systemstart wieder gestartet wird.
8. Dienstprotokoll mit journalctl prüfen
Aktuelles Dienstprotokoll:
journalctl -u example.service
Nur aktueller Systemstart:
journalctl -u example.service -b
Vorheriger Systemstart:
journalctl -u example.service -b -1
Letzte 100 Einträge:
journalctl -u example.service -n 100
Fortlaufende Anzeige:
journalctl -u example.service -f
Bestimmter Zeitraum:
journalctl -u example.service \
--since "2026-08-02 10:00:00" \
--until "2026-08-02 11:00:00"
Warnungen und schwerere Meldungen des aktuellen Starts:
journalctl -b -p warning
Kernelmeldungen des aktuellen Starts:
journalctl -k -b
Ausführliche Ausgabe:
journalctl -u example.service -o verbose
Zu dokumentieren sind:
- genauer Zeitpunkt;
- Unit;
- Prozess-ID;
- Benutzer;
- Fehlercode;
- Signal;
- erste relevante Fehlermeldung;
- nachfolgende Kaskadenfehler;
- wiederholte Startversuche;
- betroffene Datei;
- betroffene Adresse oder Portnummer.
Die letzte Fehlermeldung muss nicht die eigentliche Ursache sein. Häufig steht die erste relevante Meldung weiter oben.
9. Klassische Protokolldateien
Je nach Distribution und Dienst können zusätzlich relevant sein:
/var/log/syslog
/var/log/messages
/var/log/auth.log
/var/log/secure
/var/log/kern.log
/var/log/audit/audit.log
/var/log/dmesg
/var/log/cron
/var/log/maillog
Anwendungsprotokolle befinden sich häufig unter:
/var/log/<Anwendung>/
Letzte Zeilen anzeigen:
tail -n 100 /var/log/syslog
Fortlaufend beobachten:
tail -f /var/log/example/application.log
Komprimierte rotierte Protokolle durchsuchen:
zgrep -i 'error' /var/log/example/application.log*.gz
Nicht jede Distribution verwendet alle genannten Dateien. Auf ausschließlich journalbasierten Systemen können einzelne klassische Protokolldateien fehlen.
10. Unit-Datei und Überschreibungen prüfen
Wirksame Unit einschließlich Drop-ins anzeigen:
systemctl cat example.service
Pfad und Drop-ins:
systemctl show example.service \
-p FragmentPath \
-p DropInPaths
Abhängigkeiten:
systemctl list-dependencies example.service
Umgekehrte Abhängigkeiten:
systemctl list-dependencies --reverse example.service
Startreihenfolge und Abhängigkeiten können beeinflusst werden durch:
-
Requires=; -
Wants=; -
After=; -
Before=; -
BindsTo=; -
Condition...=; -
Assert...=; - Socket-Aktivierung;
- Mount-Abhängigkeiten;
- Netzwerk-Targets;
- Drop-in-Dateien;
- Environment-Dateien.
After= legt eine Reihenfolge fest, erzeugt allein aber keine Startabhängigkeit.
11. systemd-Konfiguration verifizieren
Unit-Dateien prüfen:
systemd-analyze verify example.service
Nach einer Änderung an Unit-Dateien:
systemctl daemon-reload
daemon-reload lädt die systemd-Konfiguration neu. Es startet den betroffenen Dienst nicht automatisch neu.
Vor einem Neustart des Dienstes sind zu prüfen:
- wurde nur die Unit-Datei oder auch die Anwendungskonfiguration geändert;
- besitzt die Anwendung einen eigenen Syntaxprüfer;
- verarbeitet der Dienst produktive Verbindungen;
- gehen Sitzungen oder Daten verloren;
- existiert ein Wartungsfenster;
- ist ein Rückweg vorbereitet.
12. Anwendungsidentität prüfen
Der Dienst kann unter einem anderen Benutzer laufen als erwartet.
systemd-Konfiguration:
systemctl show example.service \
-p User \
-p Group \
-p SupplementaryGroups \
-p DynamicUser
Prozessbenutzer:
ps -eo user,group,pid,ppid,stat,lstart,cmd
Bestimmter Prozess:
ps -o user,group,pid,ppid,stat,lstart,cmd -p <PID>
Benutzerinformationen:
id exampleuser
Gruppen eines Benutzers:
id -nG exampleuser
Kontoeintrag:
getent passwd exampleuser
Gruppeneintrag:
getent group examplegroup
getent berücksichtigt die konfigurierte Namensdienstauflösung und ist deshalb bei LDAP-, Active-Directory- oder SSSD-Umgebungen häufig aussagekräftiger als das alleinige Lesen von /etc/passwd.
13. Prozesse untersuchen
Alle Prozesse:
ps aux
Hierarchische Darstellung:
ps -ef --forest
Prozesse eines Benutzers:
ps -u exampleuser -f
Prozess anhand des Namens suchen:
pgrep -a example
Prozessbaum:
pstree -ap
Dynamische Anzeige:
top
Falls installiert:
htop
Zu prüfen sind:
- Prozess vorhanden;
- richtige ausführbare Datei;
- richtiger Benutzer;
- Elternprozess;
- Startzeit;
- CPU-Verbrauch;
- Speicherverbrauch;
- Prozesszustand;
- Anzahl der Threads;
- wiederholte Neustarts;
- Zombie-Prozesse;
- nicht unterbrechbarer Schlafzustand;
- unerwartete Kommandozeilenparameter.
14. Prozesszustände bewerten
Wichtige Zustände in ps:
| Zustand | Bedeutung |
|---|---|
R |
läuft oder ist ausführbar |
S |
unterbrechbarer Schlafzustand |
D |
nicht unterbrechbarer Schlafzustand, häufig I/O-bezogen |
T |
angehalten oder verfolgt |
Z |
Zombieprozess |
I |
inaktiver Kernelthread |
Ein Prozess im Zustand D kann häufig nicht sofort beendet werden, weil er auf eine Kernel- oder I/O-Operation wartet.
Ein Zombie verbraucht normalerweise kaum Ressourcen. Er zeigt jedoch, dass der Elternprozess den Beendigungsstatus des Kindprozesses noch nicht abgeholt hat.
15. Signale und Prozessbeendigung
Normale Beendigungsanforderung:
kill -TERM <PID>
Standardsignal von kill:
kill <PID>
Erzwungene Beendigung:
kill -KILL <PID>
Signale anzeigen:
kill -l
SIGTERM erlaubt einem Prozess eine kontrollierte Beendigung. SIGKILL kann nicht abgefangen werden und verhindert eine geordnete Bereinigung.
Vor einer Prozessbeendigung prüfen:
- besitzt der Prozess ungespeicherte Daten;
- hält er Datenbanktransaktionen;
- verwaltet systemd den Prozess;
- wird er automatisch neu gestartet;
- existieren Kindprozesse;
- ist der Prozess im Zustand
D; - welcher Benutzer ist betroffen;
- entstehen Ausfälle oder Inkonsistenzen.
Ein von systemd verwalteter Prozess sollte normalerweise über die zuständige Unit und nicht ausschließlich über seine PID gesteuert werden.
16. Offene Dateien und Arbeitsverzeichnisse prüfen
Offene Dateien eines Prozesses:
lsof -p <PID>
Prozesse mit Zugriff auf eine Datei:
lsof /var/lib/example/data.db
Alternativ:
fuser -v /var/lib/example/data.db
Prozesse auf einem Mountpoint:
fuser -vm /mnt/data
Gelöschte, aber weiterhin geöffnete Dateien:
lsof +L1
Eine gelöschte Datei kann weiterhin Speicherplatz belegen, solange ein Prozess sie geöffnet hält. Der Speicher wird normalerweise erst nach dem Schließen des Deskriptors freigegeben.
17. Ausführbare Datei und Bibliotheken prüfen
Verwendete Binärdatei:
readlink -f /proc/<PID>/exe
Arbeitsverzeichnis:
readlink -f /proc/<PID>/cwd
Kommandozeile:
tr '\0' ' ' < /proc/<PID>/cmdline
Umgebungsvariablen, nur mit erforderlicher Berechtigung:
tr '\0' '\n' < /proc/<PID>/environ
Bibliotheksabhängigkeiten:
ldd /usr/local/bin/example
ldd sollte nicht ungeprüft auf nicht vertrauenswürdige ausführbare Dateien angewendet werden. Je nach Datei und Implementierung kann dabei ein Sicherheitsrisiko entstehen.
18. Anwendungskonfiguration prüfen
Zu prüfen sind:
- Pfad der tatsächlich geladenen Konfiguration;
- Syntax;
- Dateirechte;
- Eigentümer;
- Umgebungsvariablen;
- Include-Dateien;
- relative Pfade;
- Zertifikate und Schlüssel;
- Port und Bind-Adresse;
- Datenbankverbindung;
- DNS-Namen;
- temporäre Verzeichnisse;
- PID- und Socket-Dateien;
- Abhängigkeiten;
- Zeichencodierung;
- Unterschiede zwischen Soll- und Ist-Konfiguration.
Datei anzeigen:
sed -n '1,200p' /etc/example/application.conf
Dateieigenschaften:
stat /etc/example/application.conf
Viele Dienste besitzen einen eigenen Syntaxprüfer. Beispiele:
sshd -t
nginx -t
apachectl configtest
Der passende Prüfbefehl muss zur tatsächlich installierten Anwendung und Version passen.
19. Dateirechte prüfen
Lange Darstellung:
ls -la /var/lib/example
Numerische IDs:
ls -lan /var/lib/example
Alle Bestandteile eines Pfades prüfen:
namei -l /var/lib/example/data/file.db
Dateistatus:
stat /var/lib/example/data/file.db
ACL anzeigen:
getfacl /var/lib/example/data/file.db
Zu prüfen sind:
- Eigentümer;
- Gruppe;
- klassische Modusbits;
- ACL;
- ACL-Maske;
- Rechte aller übergeordneten Verzeichnisse;
- Setuid;
- Setgid;
- Sticky Bit;
- Dateisystem nur lesbar;
- SELinux-Kontext;
- AppArmor-Profil;
- NFS-Einschränkungen;
- Container- oder Namespace-Zuordnung.
Für das Betreten eines Verzeichnisses wird das Ausführungsrecht benötigt. Ausreichende Rechte auf der Datei allein genügen nicht, wenn ein übergeordnetes Verzeichnis nicht durchlaufen werden darf.
20. Zugriff als Dienstbenutzer testen
Kontrollierter Lesetest:
sudo -u exampleuser -- test -r /var/lib/example/data/file.db
Schreibbarkeit eines Verzeichnisses:
sudo -u exampleuser -- test -w /var/lib/example/data
Pfadzugriff:
sudo -u exampleuser -- namei -l /var/lib/example/data/file.db
Ein Test sollte möglichst dieselbe Identität, denselben Pfad und dieselbe Aktion wie die Anwendung verwenden.
Keine produktiven Dateien ungeprüft verändern oder überschreiben. Für Schreibtests ist eine dafür vorgesehene Testdatei zu verwenden.
21. SELinux prüfen
Status:
getenforce
Ausführlicher Status:
sestatus
Dateikontext:
ls -lZ /var/lib/example
Prozesskontext:
ps -eZ
Aktuelle AVC-Meldungen:
ausearch \
-m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR \
-ts recent
Auswertung, sofern setroubleshoot installiert ist:
sealert -a /var/log/audit/audit.log
Sollkontext eines Pfades prüfen:
matchpathcon /var/lib/example/data
Kontext anhand der Richtlinie wiederherstellen:
restorecon -Rv /var/lib/example
SELinux darf nicht pauschal deaktiviert werden, nur um eine Anwendung zum Laufen zu bringen. Eine Ablehnung weist häufig auf einen falschen Pfad, falsches Label, eine unpassende Dienstkonfiguration oder eine fehlende gezielte Richtlinie hin.
Ein Wechsel in den permissiven Modus verändert den Sicherheitszustand des gesamten Systems und ist keine harmlose Standarddiagnose.
22. AppArmor prüfen
Status:
aa-status
Kernel- und Auditmeldungen:
journalctl -k | grep -i apparmor
Je nach System:
grep -i apparmor /var/log/syslog
Mögliche Ursachen:
- Anwendung verwendet einen neuen Pfad;
- Profil erlaubt eine benötigte Datei nicht;
- ausführbare Datei wurde verschoben;
- Include-Regel fehlt;
- Profil befindet sich im Enforce-Modus;
- Anwendung startet einen nicht erlaubten Unterprozess;
- Netzwerkzugriff ist eingeschränkt.
Ein Profil sollte nicht ungeprüft deaktiviert werden. Zuerst sind Ablehnung, betroffener Pfad und notwendige Mindestberechtigung zu bestimmen.
23. Port und Socket prüfen
Lauschende TCP- und UDP-Sockets:
ss -tulpn
Nur lauschende TCP-Sockets:
ss -ltnp
Bestimmter Port:
ss -ltnp 'sport = :443'
Bestehende TCP-Verbindungen:
ss -tanp
Unix-Sockets:
ss -lxnp
Zu unterscheiden sind:
- kein Prozess lauscht;
- Prozess lauscht nur auf
127.0.0.1; - Prozess lauscht nur auf IPv6;
- Prozess lauscht auf falscher Adresse;
- anderer Prozess belegt den Port;
- Socket-Aktivierung wird verwendet;
- Firewall blockiert den Zugriff;
- Anwendung lauscht, beantwortet Anfragen aber fehlerhaft.
24. Portkonflikt untersuchen
Belegung eines Ports:
ss -ltnp 'sport = :8080'
Alternativ:
lsof -nP -iTCP:8080 -sTCP:LISTEN
Mögliche Ursachen:
- zweite Instanz wurde gestartet;
- alter Prozess läuft noch;
- Testdienst belegt den Produktionsport;
- Container veröffentlicht denselben Hostport;
- systemd-Socket besitzt den Port;
- IPv4- und IPv6-Bindung kollidieren;
- Konfiguration verwendet einen falschen Port.
Ein Prozess darf nicht allein deshalb beendet werden, weil er den gewünschten Port belegt. Zuerst muss seine Funktion und Zuständigkeit geklärt werden.
25. Lokale Anwendungsfunktion prüfen
TCP-Verbindung:
nc -vz 127.0.0.1 8080
HTTP-Abfrage:
curl -v http://127.0.0.1:8080/
HTTPS einschließlich Zertifikatsprüfung:
curl -v https://server.example.local/
TLS-Verbindung untersuchen:
openssl s_client \
-connect server.example.local:443 \
-servername server.example.local
Bewertung:
| Ergebnis | Wahrscheinlicher Bereich |
|---|---|
| lokal kein Listener | Dienst, Konfiguration oder Startfehler |
| lokal erreichbar, remote nicht | Firewall, Routing, Bind-Adresse oder Netzwerk |
| TCP funktioniert, HTTP fehlerhaft | Anwendung, Reverse Proxy oder Backend |
| HTTP über IP funktioniert, Name nicht | DNS, Virtual Host, SNI oder Zertifikat |
| TLS schlägt fehl | Zertifikat, Schlüssel, Protokoll oder Cipher |
| Antwort langsam | Anwendung, Backend, DNS, Storage oder Ressourcen |
26. Netzwerkkonfiguration prüfen
Adressen:
ip address show
Kurzform:
ip -br address
Links:
ip -br link
Routingtabelle:
ip route show
IPv6-Routen:
ip -6 route show
Route zu einem konkreten Ziel:
ip route get 192.0.2.20
Nachbarn:
ip neigh show
Netzwerkstatistik:
ip -s link show
Zu prüfen sind:
- Interface aktiv;
- richtige IP-Adresse;
- Präfix;
- Default Gateway;
- richtige Route;
- Policy Routing;
- VLAN;
- Bond oder Bridge;
- Paketfehler;
- Drops;
- MTU;
- doppelte IP-Adresse;
- IPv4- beziehungsweise IPv6-Auswahl.
27. Namensauflösung prüfen
Resolverkonfiguration:
cat /etc/resolv.conf
Auf systemd-resolved-Systemen:
resolvectl status
Namensauflösung über NSS:
getent hosts server.example.local
DNS-Abfrage:
dig server.example.local
Bestimmten DNS-Server abfragen:
dig @192.0.2.53 server.example.local
Reverse Lookup:
dig -x 192.0.2.20
Zu unterscheiden sind:
- DNS-Server nicht erreichbar;
- falsche Suchdomäne;
- falscher A- oder AAAA-Eintrag;
-
/etc/hostsüberschreibt DNS; - Split DNS;
- Cache enthält alten Wert;
- Anwendung verwendet einen eigenen Resolver;
- IPv6-Adresse wird bevorzugt, ist aber nicht erreichbar;
- DNS-Auflösung funktioniert, die Anwendung verwendet jedoch einen anderen Namen.
28. Firewall prüfen
Je nach System können unterschiedliche Werkzeuge verwendet werden.
firewalld:
firewall-cmd --get-active-zones
firewall-cmd --list-all
nftables:
nft list ruleset
iptables-Kompatibilitätsansicht:
iptables -S
Zu prüfen sind:
- zuständige Firewalltechnik;
- aktive Zone;
- Interface-Zuordnung;
- Quellnetz;
- Zielport;
- Protokoll;
- IPv4 und IPv6;
- Eingangs- und Ausgangsrichtung;
- Standardpolicy;
- NAT;
- Containerregeln;
- Cloud- oder vorgelagerte Firewall;
- Hostfirewall auf dem Gegenserver.
Ein geöffneter Port in der Hostfirewall beweist nicht, dass vorgelagerte Firewalls, Routing oder die Anwendung funktionieren.
29. Paketmitschnitt
Beispiel für TCP-Port 443:
tcpdump -ni any tcp port 443
Bestimmter Host und Port:
tcpdump -ni any \
host 192.0.2.20 and tcp port 443
In Datei schreiben:
tcpdump -ni any \
-s 0 \
-w /tmp/example-443.pcap \
tcp port 443
Zu untersuchen sind:
- kommen Anfragen am Server an;
- sendet der Server Antworten;
- TCP-SYN;
- SYN/ACK;
- Reset;
- Retransmissions;
- ICMP-Fehler;
- falsches Interface;
- falsche Quell- oder Zieladresse;
- TLS-Handshake;
- Zeitabstände;
- MTU- oder Fragmentierungsprobleme.
Paketmitschnitte können vertrauliche IP-Adressen, Hostnamen, Nutzdaten, Tokens und Anmeldeinformationen enthalten und müssen geschützt gespeichert sowie kontrolliert gelöscht werden.
30. CPU und Load prüfen
Überblick:
uptime
Dynamische Prozessansicht:
top
Logische Prozessoren:
nproc
CPU-Informationen:
lscpu
Falls sysstat installiert ist:
mpstat -P ALL 1 5
Prozessbezogene Statistik:
pidstat 1 5
Load Average beschreibt nicht ausschließlich CPU-Auslastung. Je nach Linux-Zustand können auch Tasks in nicht unterbrechbarem Zustand zur Last beitragen.
Zu unterscheiden sind:
- ein einzelner CPU-intensiver Prozess;
- gleichmäßige Last auf allen CPUs;
- Single-Thread-Limit;
- hohe I/O-Wartezeit;
- virtuelle CPU wird vom Hypervisor nicht ausreichend ausgeführt;
- Interruptlast;
- Prozessschleife;
- zu viele gleichzeitig ausführbare Tasks.
31. Arbeitsspeicher prüfen
Speicherübersicht:
free -h
Detaillierte Kernelwerte:
cat /proc/meminfo
Prozesse nach Speicherverbrauch:
ps aux --sort=-%mem | head
Falls verfügbar:
vmstat 1 5
Wichtige Unterscheidungen:
-
freeist nicht der allein verfügbare Speicher; - Cache kann bei Bedarf teilweise freigegeben werden;
-
availableist für die praktische Bewertung meist aussagekräftiger; - hoher Swap-Verbrauch beweist allein keine aktuelle Speicherknappheit;
- aktive Swap-Ein- und -Auslagerung kann auf Speicherdruck hinweisen;
- Speicherlimit eines Containers oder einer systemd-Unit kann unterhalb des Hostspeichers liegen.
32. OOM Killer untersuchen
Kernelmeldungen:
journalctl -k -b | grep -Ei 'out of memory|oom|killed process'
Systemweites Journal:
journalctl -b | grep -Ei 'out of memory|oom|killed process'
Mögliche Ursachen:
- physischer Arbeitsspeicher erschöpft;
- kein oder zu wenig Swap;
- Speicherleck;
- zu viele Prozesse;
- Container- oder cgroup-Limit;
- große temporäre Last;
- falsche Anwendungskonfiguration;
- übermäßiger Page Cache in Verbindung mit anderem Druck;
- Kernel kann benötigten Speicher nicht bereitstellen.
Zu dokumentieren sind:
- beendeter Prozess;
- Zeitpunkt;
- Speicherverbrauch;
- cgroup oder Container;
- Host- und cgroup-Limit;
- vorherige Last;
- wiederholtes Auftreten;
- Anwendungsprotokoll unmittelbar vor dem Kill.
Ein automatischer Dienstneustart kann den OOM-Kill verdecken. Der Dienst erscheint anschließend wieder aktiv, obwohl die Ursache weiter besteht.
33. Swap prüfen
Aktive Swap-Bereiche:
swapon --show
Speicherübersicht:
free -h
Aktivität:
vmstat 1 10
Bei vmstat sind insbesondere zu beachten:
-
si: Swap-In; -
so: Swap-Out; -
wa: I/O-Wartezeit; -
r: ausführbare Prozesse; -
b: blockierte Prozesse.
Swap darf nicht ungeprüft mit swapoff deaktiviert werden. Der Inhalt muss in den Arbeitsspeicher übernommen werden können; andernfalls drohen starke Last oder Fehler.
34. Speicherplatz prüfen
Dateisysteme:
df -hT
Bestimmter Pfad:
df -hT /var/lib/example
Verzeichnisgrößen:
du -xhd1 /var
Größte Unterverzeichnisse:
du -xhd1 /var |
sort -h
Zu unterscheiden sind:
- Dateisystem voll;
- Thin Pool voll;
- Snapshotbereich voll;
- Quote erreicht;
- gelöschte, aber geöffnete Datei;
- reservierter Speicher;
- anderes darunterliegendes Dateisystem;
- temporäres Dateisystem voll;
- Container-Overlay voll;
- Logdatei wächst unkontrolliert;
- Anwendung schreibt in einen unerwarteten Pfad.
df und du können unterschiedliche Werte zeigen, beispielsweise wegen gelöschter, aber geöffneter Dateien oder wegen Mounts innerhalb des untersuchten Verzeichnisbaums.
35. Inodes prüfen
Inode-Nutzung:
df -ih
Ein Dateisystem kann freien Speicherplatz besitzen und trotzdem keine neuen Dateien mehr aufnehmen, wenn keine freien Inodes vorhanden sind.
Typische Ursachen:
- sehr viele kleine Dateien;
- Cache-Verzeichnis;
- Mailqueue;
- Sessiondateien;
- temporäre Dateien;
- fehlerhafte Rotation;
- Anwendung erzeugt Dateien, löscht sie aber nicht;
- Containerlayer;
- Build- oder Paketcache.
Anzahl der Einträge in einem kontrollierten Verzeichnisbaum:
find /var/tmp/example -xdev -type f |
wc -l
Bei sehr großen Verzeichnisbäumen kann bereits das Zählen erhebliche I/O-Last verursachen.
36. Mounts prüfen
Aktuelle Mounts:
findmnt
Bestimmter Pfad:
findmnt -T /var/lib/example
Blockgeräte und Dateisysteme:
lsblk -f
Persistente Konfiguration:
cat /etc/fstab
fstab-Konfiguration ohne tatsächliches Mounten prüfen:
findmnt --verify
systemd-Mount-Units:
systemctl list-units --type=mount --all
Zu prüfen sind:
- richtiges Gerät oder UUID;
- richtiger Mountpoint;
- Dateisystemtyp;
- Mountoptionen;
-
rostattrw; - Netzwerkabhängigkeit;
-
_netdev; - Automount;
- Berechtigungen;
- verschachtelte Mounts;
- nicht mehr erreichbares NFS- oder SMB-Ziel;
- veralteter Handle;
- Timeout;
- lokales Verzeichnis wird sichtbar, weil der erwartete Mount fehlt.
Eine Anwendung kann scheinbar korrekt in einen lokalen Ordner schreiben, obwohl das vorgesehene Netzwerk- oder Datenvolume nicht eingehängt ist.
37. Schreibgeschütztes Dateisystem
Mountoptionen:
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS
Kernelmeldungen:
journalctl -k -b |
grep -Ei 'read-only|I/O error|filesystem|ext4|xfs'
Mögliche Ursachen:
- Dateisystem wurde wegen Fehlern schreibgeschützt eingehängt;
- Datenträgerfehler;
- Storage-Verbindung unterbrochen;
- falsche Mountoption;
- Snapshot oder Image ist absichtlich read-only;
- Container-Dateisystem ist schreibgeschützt;
- NFS-Export ist read-only;
- Cluster- oder Schutzmechanismus verhindert Schreibzugriff.
Ein ungeprüftes Remount als rw kann eine bestehende Storage- oder Dateisystemstörung verschärfen. Zuerst müssen Kernelmeldungen und Datenträgerzustand bewertet werden.
38. Datenträger- und I/O-Fehler prüfen
Blockgeräte:
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
Kernelmeldungen:
journalctl -k -b |
grep -Ei 'I/O error|blk_update|reset|timeout|nvme|ata|scsi|ext4|xfs'
Falls sysstat installiert ist:
iostat -xz 1 5
S.M.A.R.T.-Informationen, sofern unterstützt:
smartctl -a /dev/sda
NVMe-Informationen, sofern das Werkzeug installiert ist:
nvme smart-log /dev/nvme0
Zu prüfen sind:
- I/O-Fehler;
- Timeouts;
- Resets;
- Medienfehler;
- hohe Latenz;
- hohe Queue;
- fehlendes Gerät;
- Multipath-Fehler;
- RAID-Degradation;
- Dateisystemfehler;
- virtuelle oder externe Storage-Abhängigkeit.
S.M.A.R.T.-Tests und Reparaturwerkzeuge können Last oder Zustandsänderungen verursachen. Sie sind nicht ungeprüft auf produktivem Storage auszuführen.
39. Dateisystemprüfung sicher planen
Dateisystemtyp feststellen:
findmnt -no FSTYPE,SOURCE,TARGET /var/lib/example
Ein klassisches fsck darf normalerweise nicht auf einem schreibend eingehängten Dateisystem ausgeführt werden.
Vor einer Reparatur sind zu klären:
- Dateisystemtyp;
- Herstellerverfahren;
- Mountzustand;
- Backup;
- Wartungsfenster;
- Ausfallwirkung;
- Storage- und RAID-Zustand;
- erwartete Reparaturdauer;
- Rückweg;
- Notfallzugang.
Bei XFS, ext4, Btrfs und anderen Dateisystemen unterscheiden sich Diagnose- und Reparaturwerkzeuge erheblich.
40. LVM prüfen
Übersicht:
pvs
vgs
lvs
Ausführlicher:
lvs -a -o +devices
Zu prüfen sind:
- Physical Volume vorhanden;
- Volume Group vollständig;
- Logical Volume aktiv;
- freier Platz in der Volume Group;
- Thin Pool;
- Thin-Metadaten;
- Snapshot;
- zugrunde liegende Geräte;
- Dateisystemgröße;
- Mountzustand.
Ein vergrößertes Logical Volume bedeutet nicht automatisch, dass auch das darin enthaltene Dateisystem vergrößert wurde.
41. Software-RAID prüfen
Status:
cat /proc/mdstat
Detailinformationen:
mdadm --detail /dev/md0
Zu prüfen sind:
- RAID-Level;
- aktive Geräte;
- fehlende Geräte;
- degradiert;
- Rebuild;
- Resync;
- Geschwindigkeit;
- Fehlerzähler;
- Ersatzgerät;
- zugrunde liegender Datenträgerzustand.
Ein Rebuild erhöht die I/O-Last und ersetzt kein Backup. Ein zweiter Fehler während der Wiederherstellung kann je nach RAID-Level zum Datenverlust führen.
42. Netzwerk-Mounts prüfen
NFS-Mounts:
findmnt -t nfs,nfs4
SMB-/CIFS-Mounts:
findmnt -t cifs
RPC-Dienste eines NFS-Servers:
rpcinfo -p <Server>
NFS-Exporte, sofern erreichbar:
showmount -e <Server>
Zu prüfen sind:
- Namensauflösung;
- Route;
- Port;
- Serverzustand;
- Export oder Freigabe;
- Protokollversion;
- Mountoptionen;
- Benutzer- und ID-Zuordnung;
- Kerberos;
- Firewall;
- Timeout;
- Hard- oder Soft-Mount;
- veralteter NFS-Handle;
- blockierte Prozesse im Zustand
D.
Ein hängender Netzwerk-Mount kann Befehle wie df, du, ls oder Anwendungen blockieren.
43. Paketverwaltung prüfen
Debian- und Ubuntu-Systeme:
apt update
Installierten Paketstatus prüfen:
dpkg -l
Unterbrochene Paketkonfiguration:
dpkg --audit
RPM-basierte Systeme:
dnf check
Installiertes Paket bestimmen:
rpm -q <Paketname>
Datei einem Paket zuordnen:
rpm -qf /usr/bin/example
Debian-Paket zuordnen:
dpkg -S /usr/bin/example
Mögliche Ursachen:
- Repository nicht erreichbar;
- DNS- oder Proxyfehler;
- abgelaufenes Repository-Zertifikat;
- falsche Systemzeit;
- Signaturfehler;
- Paketdatenbank gesperrt;
- abgebrochene Transaktion;
- inkompatible Paketversionen;
- fehlende Bibliothek;
- Drittanbieter-Repository;
- Paket wurde manuell überschrieben;
- Konfigurationsdatei wurde bei einem Upgrade ersetzt oder nicht übernommen.
Paketdatenbanken und Lockdateien dürfen nicht ungeprüft gelöscht werden. Zuerst ist zu bestimmen, ob ein legitimer Paketprozess aktiv ist.
44. Paketdateien verifizieren
RPM-Paket:
rpm -V <Paketname>
Debian- und Ubuntu-Systeme, falls debsums installiert ist:
debsums <Paketname>
Abweichungen können entstehen durch:
- legitime Konfigurationsänderung;
- Update;
- beschädigte Datei;
- manuelle Änderung;
- Sicherheitsvorfall;
- falsche Berechtigung;
- falscher Eigentümer.
Eine Abweichung beweist allein weder einen Defekt noch eine Manipulation. Dateityp und erwartete lokale Anpassung müssen berücksichtigt werden.
45. Cronjobs prüfen
Systemweite Crontab:
cat /etc/crontab
Systemverzeichnisse:
ls -la /etc/cron.d/
Benutzer-Crontab:
crontab -l
Crontab eines anderen Benutzers:
sudo crontab -u exampleuser -l
Cron-Dienst:
systemctl status cron
Je nach Distribution:
systemctl status crond
Cron-Protokoll:
journalctl -u cron
Oder:
journalctl -u crond
Typische Ursachen:
- falscher Benutzer;
- eingeschränkte
PATH-Variable; - relatives Arbeitsverzeichnis;
- fehlende Umgebungsvariable;
- falsche Zeitzone;
- Shell-Unterschied;
- fehlendes Ausführungsrecht;
- Skript verwendet interaktive Eingaben;
- Ausgabe und Fehler werden nicht protokolliert;
- Datei besitzt falsche Zeilenenden;
- überlappende Ausführungen;
- Zielmount ist zum Ausführungszeitpunkt nicht verfügbar.
Ein erfolgreicher manueller Skriptstart beweist nicht, dass der Cronjob mit seiner reduzierten Umgebung funktioniert.
46. systemd-Timer prüfen
Timer anzeigen:
systemctl list-timers --all
Bestimmten Timer:
systemctl status example.timer
Zugehörigen Dienst:
systemctl status example.service
Protokolle:
journalctl -u example.timer -u example.service
Konfiguration:
systemctl cat example.timer
Zu prüfen sind:
- Timer aktiv;
- Timer aktiviert;
- nächste Ausführung;
- letzte Ausführung;
- zugehörige Service-Unit;
- Kalenderausdruck;
-
Persistent=; - Zufallsverzögerung;
- Zeitzone;
- Fehler der aufgerufenen Service-Unit.
Der Timer kann erfolgreich ausgelöst haben, obwohl die zugehörige Service-Unit fehlgeschlagen ist.
47. Zeit und Zeitsynchronisation prüfen
Systemzeit:
date --iso-8601=seconds
Status:
timedatectl
Bei chrony:
chronyc tracking
chronyc sources -v
Bei systemd-timesyncd:
timedatectl timesync-status
Mögliche Auswirkungen falscher Zeit:
- TLS-Zertifikate erscheinen ungültig;
- Kerberos schlägt fehl;
- Protokollereignisse lassen sich falsch zuordnen;
- Tokens sind noch nicht oder nicht mehr gültig;
- Cronjobs laufen zum falschen Zeitpunkt;
- Replikation oder Clustermechanismen werden gestört;
- Dateien besitzen unplausible Zeitstempel.
Die Zeit darf auf produktiven Datenbank-, Cluster- oder Authentifizierungssystemen nicht ungeprüft sprunghaft verändert werden.
48. Zertifikate prüfen
Zertifikatsdatei:
openssl x509 \
-in /etc/example/server.crt \
-noout \
-subject \
-issuer \
-dates \
-fingerprint
Private-Key-Dateirechte:
stat /etc/example/server.key
Zertifikat und Schlüssel vergleichen, beispielhaft für RSA:
openssl x509 \
-noout \
-modulus \
-in /etc/example/server.crt |
openssl sha256
openssl rsa \
-noout \
-modulus \
-in /etc/example/server.key |
openssl sha256
Zu prüfen sind:
- Ablaufdatum;
- Gültigkeitsbeginn;
- Hostname beziehungsweise SAN;
- Aussteller;
- Zertifikatskette;
- passender privater Schlüssel;
- Dateirechte;
- tatsächlich vom Dienst geladenes Zertifikat;
- SNI;
- Systemzeit;
- vertrauenswürdige CA.
Private Schlüssel dürfen nicht in Diagnoseprotokolle oder Tickets kopiert werden.
49. Kernelmeldungen prüfen
Aktueller Systemstart:
journalctl -k -b
Warnungen und Fehler:
journalctl -k -b -p warning
Klassische Anzeige:
dmesg --level=emerg,alert,crit,err,warn
Mögliche relevante Meldungen:
- I/O-Fehler;
- Dateisystemfehler;
- OOM;
- Treiberfehler;
- Linkverlust;
- NIC-Reset;
- SCSI- oder NVMe-Timeout;
- Hardwarefehler;
- Kernel-Warnung;
- Soft Lockup;
- Hard Lockup;
- Hung Task;
- Segmentation Fault;
- AppArmor- oder SELinux-Ablehnung.
Der dmesg-Puffer kann ältere Meldungen überschreiben. Das persistente Journal oder ein zentraler Logserver kann deshalb zusätzliche Informationen liefern.
50. Kernelmodule und Hardware prüfen
Geladene Module:
lsmod
Modulinformationen:
modinfo <Modulname>
PCI-Geräte und Treiber:
lspci -k
USB-Geräte:
lsusb
Hardwareübersicht:
lscpu
lsblk
Mögliche Ursachen:
- benötigtes Modul fehlt;
- falsches Modul ist gebunden;
- Firmware fehlt;
- Kernelupdate passt nicht zu externem Modul;
- DKMS-Build fehlgeschlagen;
- Gerät wurde getrennt;
- virtuelle Hardware wurde geändert;
- Modulparameter sind falsch;
- Secure Boot verhindert das Laden eines nicht vertrauenswürdigen Moduls.
Kernelmodule dürfen nicht ungeprüft entladen werden. Ein Modul kann von Netzwerk-, Storage- oder anderen produktiven Geräten verwendet werden.
51. Bootfehler untersuchen
Bootzeit analysieren:
systemd-analyze
Langsame Units:
systemd-analyze blame
Kritische Kette:
systemd-analyze critical-chain
Fehlgeschlagene Units:
systemctl --failed
Protokoll des aktuellen Starts:
journalctl -b
Protokoll des vorherigen Starts:
journalctl -b -1
Verfügbare Starts:
journalctl --list-boots
Zu prüfen sind:
- Kernelkommandozeile;
- initramfs;
- Root-Dateisystem;
- fehlerhafte
/etc/fstab; - fehlendes Blockgerät;
- Netzwerk-Mount;
- systemd-Abhängigkeit;
- Timeout;
- Dateisystemprüfung;
- Treiber;
- verschlüsseltes Volume;
- falscher Default-Target;
- wiederholt abstürzender Dienst.
52. Unerwarteten Neustart oder Absturz prüfen
Letzte Neustarts:
last reboot
Vorheriger Boot:
journalctl -b -1 -e
Kernelmeldungen des vorherigen Boots:
journalctl -k -b -1
Mögliche Ursachen:
- geplanter Neustart;
- Paket- oder Kernelupdate;
- Stromausfall;
- Hypervisoraktion;
- Hardware-Watchdog;
- Kernel Panic;
- OOM;
- Temperaturproblem;
- manuelle Administratoraktion;
- Cloud- oder Hostingereignis;
- fehlerhafte Automation.
Fehlende Abschlussmeldungen im Journal können auf einen abrupten Ausfall hinweisen, beweisen aber keine bestimmte Ursache.
53. Hängendes System und Hung Tasks
Nach Meldungen suchen:
journalctl -k |
grep -Ei 'blocked for more than|hung task|soft lockup|hard lockup'
Mögliche Ursachen:
- blockiertes Storage;
- hängender Netzwerk-Mount;
- Treiberfehler;
- defektes Gerät;
- Kernelproblem;
- hohe I/O-Latenz;
- Deadlock;
- Ressourcenerschöpfung.
Magic SysRq kann in schweren Störungsfällen Diagnose- oder Notfallfunktionen auslösen. Die verfügbaren Funktionen hängen von Kernelkonfiguration und Systemwerten ab.
Status:
cat /proc/sys/kernel/sysrq
SysRq-Aktionen können erhebliche Auswirkungen bis hin zu Prozessbeendigung oder Neustart besitzen. Sie dürfen nur nach einem dafür vorgesehenen Notfallverfahren verwendet werden.
54. Strace als gezielte Tiefenanalyse
Systemaufrufe eines gestarteten Programms:
strace -f -o /tmp/example.strace <Befehl>
An laufenden Prozess anhängen:
strace -f -p <PID>
Nach Dateioperationen filtern:
strace -f -e trace=file <Befehl>
Nach Netzwerkoperationen filtern:
strace -f -e trace=network <Befehl>
Zu erkennen sind beispielsweise:
-
ENOENT: Datei oder Pfad nicht vorhanden; -
EACCES: Zugriff verweigert; -
ECONNREFUSED: Verbindung abgelehnt; -
ETIMEDOUT: Zeitüberschreitung; -
ENOSPC: kein Speicherplatz; -
EROFS: Dateisystem nur lesbar.
strace kann Leistung und Zeitverhalten beeinflussen sowie vertrauliche Dateinamen, Argumente und Daten sichtbar machen.
55. Typische Fehlerbilder
| Symptom | Mögliche Ursache | Nächster Test |
|---|---|---|
| Dienst startet nicht | Syntax, Rechte, Abhängigkeit oder fehlende Datei | systemctl status, journalctl -u |
| Dienst beendet sich sofort | Anwendung meldet Fehler oder Prozess forkt anders als erwartet | Journal und ExecMainStatus |
Dienst ist active, Anwendung funktioniert nicht |
interner Fehler, falscher Port oder Backend gestört | ss, curl, Anwendungslog |
Dienst ist failed, Prozess läuft |
Prozess wurde außerhalb von systemd gestartet | ps, systemctl show |
| Dienst startet nach Reboot nicht | nicht aktiviert oder Boot-Abhängigkeit fehlerhaft | is-enabled, Bootjournal |
| Dienst läuft als falscher Benutzer | Unit oder Drop-in geändert | systemctl cat, systemctl show |
| Konfigurationsänderung wirkt nicht | falsche Datei oder kein Reload/Restart | Prozessargumente und Unit prüfen |
| Port ist nicht geöffnet | Dienststart oder Bind-Konfiguration | ss -ltnp |
| Port ist nur lokal erreichbar | Bind-Adresse oder Firewall | ss, Firewall, Remote-Test |
| Port bereits belegt | zweite Instanz oder anderer Dienst | ss, lsof |
| Zugriff verweigert | Unix-Rechte, ACL, SELinux oder AppArmor | namei, getfacl, Auditlog |
| Datei nicht gefunden, obwohl sie existiert | falscher Namespace, Mount oder Pfadbestandteil | namei, findmnt, Prozessumgebung |
| Schreiben schlägt fehl | Rechte, ro, Speicher oder Inodes |
test -w, findmnt, df -h, df -i |
df zeigt voll, du nicht |
gelöschte offene Datei oder reservierter Bereich | lsof +L1 |
du hängt |
Netzwerk-Mount oder Storageproblem | findmnt, Prozesszustand, Kerneljournal |
| hohe Load bei geringer CPU | I/O-Wait oder Tasks im Zustand D |
vmstat, iostat, ps |
| Prozess wurde unerwartet beendet | OOM, Signal oder Crash | Kernel- und Dienstjournal |
| Server nutzt Swap stark | früherer oder aktueller Speicherdruck | vmstat, free, Prozessspeicher |
| keine neuen Dateien trotz freiem Speicher | Inodes erschöpft | df -ih |
| Mount fehlt nach Neustart | fstab, Abhängigkeit oder Gerät fehlt | findmnt --verify, Bootjournal |
| Dateisystem plötzlich read-only | I/O- oder Dateisystemfehler | Kerneljournal |
| Cronjob läuft manuell, aber nicht automatisch | Umgebung, Benutzer, Pfad oder Shell | Cronlog und kontrollierter Umgebungstest |
| systemd-Timer löst aus, Aufgabe scheitert | zugehörige Service-Unit fehlerhaft | Journal beider Units |
| TLS-Zertifikat angeblich abgelaufen | falsche Zeit oder altes geladenes Zertifikat | timedatectl, openssl s_client |
| Paketupdate schlägt fehl | Repository, DNS, Signatur oder Lock | Paketmanager- und Prozessstatus |
| Server startet langsam | Mount-, Netzwerk- oder Unit-Timeout | systemd-analyze critical-chain |
| Netzwerk funktioniert nach IP, nicht nach Name | DNS oder NSS | getent hosts, dig |
56. Vorgehensweise bei „Dienst startet nicht“
- Host, Dienstname und Zeitpunkt dokumentieren.
-
systemctl statusauswerten. -
systemctl showauf Ergebnis und Exit-Status prüfen. - Dienstjournal seit dem letzten Startversuch lesen.
- erste relevante Fehlermeldung bestimmen.
- tatsächlich verwendete Unit und Drop-ins anzeigen.
- Startbenutzer und Gruppen prüfen.
- Anwendungskonfiguration mit dem vorgesehenen Syntaxprüfer testen.
- benötigte Dateien und Pfade prüfen.
- Unix-Rechte, ACL und alle Pfadbestandteile prüfen.
- SELinux- oder AppArmor-Ablehnungen prüfen.
- Portkonflikte prüfen.
- Mounts und externe Abhängigkeiten prüfen.
- Speicherplatz, Inodes, RAM und Limits kontrollieren.
- genau eine nachgewiesene Ursache korrigieren.
- Dienst kontrolliert starten.
- Journal, Prozess, Port und Anwendungsfunktion nachkontrollieren.
- Ursache, Maßnahme und Rückweg dokumentieren.
57. Vorgehensweise bei „Server ist langsam“
- Zeitraum und konkrete langsame Funktion erfassen.
- Vergleichswert oder normalen Zustand bestimmen.
- Load, CPU, RAM und Swap prüfen.
- Prozesse nach CPU- und Speicherverbrauch sortieren.
- Prozesszustände und blockierte Tasks prüfen.
-
vmstatauswerten. - I/O-Latenz und Datenträgerauslastung prüfen.
- Kernelmeldungen auf Storage- oder Treiberfehler untersuchen.
- Netzwerkfehler, Drops und Retransmissions berücksichtigen.
- DNS-Antwortzeiten prüfen.
- Anwendung und Backend getrennt testen.
- cgroup-, Container- oder Unit-Limits prüfen.
- geplante Jobs, Backups und Updates berücksichtigen.
- Engpass anhand von Messwerten nachweisen.
- eine kontrollierte Maßnahme durchführen.
- dieselbe Funktion mit denselben Messwerten erneut testen.
58. Vorgehensweise bei „Kein Speicherplatz“
- betroffenen Pfad dokumentieren.
- zugehöriges Dateisystem mit
findmnt -Tbestimmen. - Speicherplatz mit
df -hTprüfen. - Inodes mit
df -ihprüfen. - Quotas und Storage-Limits berücksichtigen.
- Verzeichnisgrößen innerhalb desselben Dateisystems untersuchen.
- gelöschte offene Dateien mit
lsof +L1prüfen. - Logs, Caches, temporäre Dateien und Containerdaten unterscheiden.
- LVM-Thin-Pool oder Snapshotbereich prüfen.
- Ursache des Wachstums bestimmen.
- Aufbewahrungs- und Löschregeln prüfen.
- keine unbekannten Dateien pauschal löschen.
- eine kontrollierte Bereinigung oder Erweiterung durchführen.
- Anwendung und Speicherzustand erneut prüfen.
- Präventionsmaßnahme wie Rotation, Monitoring oder Quota dokumentieren.
59. Vorgehensweise bei „Dateisystem oder Mount nicht verfügbar“
- betroffenen Mountpoint dokumentieren.
-
findmntundlsblk -fauswerten. - Blockgerät, UUID und Dateisystemtyp bestimmen.
-
/etc/fstabprüfen. -
findmnt --verifyausführen. - systemd-Mount-Unit und Journal prüfen.
- Kernelmeldungen auf I/O-Fehler untersuchen.
- bei Netzwerk-Mounts DNS, Route, Port und Server prüfen.
- offene Prozesse und Abhängigkeiten berücksichtigen.
- Storage-, RAID-, LVM- oder Multipath-Zustand prüfen.
- Backup und Wartungsfenster klären.
- nur die nachgewiesene Ursache korrigieren.
- Mount kontrolliert herstellen.
- Lese- und Schreibfunktion entsprechend dem Sollzustand testen.
- Neustartverhalten gesondert verifizieren.
60. Maßnahmen und Rückwege
Ursache: Syntaxfehler in der Dienstkonfiguration
Nachweis:
- Dienstjournal nennt die Konfigurationsdatei und Zeile;
- anwendungseigener Syntaxprüfer reproduziert den Fehler;
- vorherige Konfiguration war funktionsfähig.
Maßnahme:
- fehlerhafte Anweisung nach dokumentiertem Sollzustand korrigieren.
Rollback:
- gesicherte vorherige Konfiguration wiederherstellen.
Verifikation:
- Syntaxprüfung;
- Dienststart;
- Journal;
- Port;
- praktische Anwendungsfunktion.
Ursache: falsche Dateiberechtigung
Nachweis:
- Dienst läuft unter dem vorgesehenen Benutzer;
- benötigte Aktion schlägt für diesen Benutzer fehl;
-
namei,statodergetfaclzeigt das fehlende Recht; - kein SELinux- oder AppArmor-Problem liegt vor.
Maßnahme:
- Eigentümer, Gruppe oder Mindestberechtigung nach dem Sollzustand korrigieren.
Rollback:
- vorherige Eigentümer-, Modus- und ACL-Werte dokumentiert wiederherstellen.
Verifikation:
- Zugriff als Dienstbenutzer;
- Dienststart;
- keine unnötigen zusätzlichen Rechte;
- Anwendungsfunktion.
Ursache: falscher SELinux-Kontext
Nachweis:
- AVC-Meldung passt zum Fehlerzeitpunkt;
- Pfad besitzt einen vom Richtlinien-Soll abweichenden Kontext;
- Unix-Rechte sind ausreichend.
Maßnahme:
- vorgesehenen persistenten Dateikontext konfigurieren und Kontext kontrolliert wiederherstellen.
Rollback:
- vorherige lokale Kontextregel dokumentiert wiederherstellen oder entfernen.
Verifikation:
- korrekter Kontext;
- keine neue AVC-Ablehnung;
- Dienst- und Benutzerfunktion;
- SELinux bleibt enforcing.
Ursache: Portkonflikt
Nachweis:
- Anwendung meldet „Address already in use“;
-
ssoderlsofzeigt den belegenden Prozess; - Prozess und Zuständigkeit wurden identifiziert.
Maßnahme:
- falsche Doppelinstanz kontrolliert entfernen oder den vorgesehenen Dienstport nach Sollkonfiguration zuordnen.
Rollback:
- ursprüngliche Port- und Dienstkonfiguration wiederherstellen.
Verifikation:
- vorgesehener Prozess besitzt den Port;
- Anwendung antwortet lokal und remote;
- keine zweite Anwendung wurde beeinträchtigt.
Ursache: gelöschte offene Logdatei belegt Speicher
Nachweis:
-
dfzeigt hohe Belegung; -
duerklärt die Belegung nicht; -
lsof +L1zeigt eine große gelöschte Datei; - zuständiger Prozess wurde bestimmt.
Maßnahme:
- Prozess nach betrieblicher Freigabe kontrolliert zum erneuten Öffnen seiner Logs veranlassen oder neu starten.
Rollback:
- bei einem reinen Reopen normalerweise nicht erforderlich; bei Neustart gilt das dienstbezogene Rückfallverfahren.
Verifikation:
- Dateideskriptor geschlossen;
- Speicherplatz freigegeben;
- neue Protokolldatei wird korrekt beschrieben;
- Dienstfunktion bleibt erhalten.
61. Nachkontrolle
Nach einer Maßnahme sind mindestens folgende Punkte zu prüfen:
- Dienst besitzt den erwarteten Zustand;
- Prozess läuft unter dem vorgesehenen Benutzer;
- Prozess wird nicht fortlaufend neu gestartet;
- keine neuen Fehler erscheinen im Journal;
- erwarteter Port wird von der richtigen Anwendung verwendet;
- Bind-Adresse ist korrekt;
- lokale Anwendungsfunktion funktioniert;
- Remotezugriff funktioniert;
- DNS-Name zeigt auf das richtige System;
- Firewallzustand entspricht dem Soll;
- benötigte Dateien sind erreichbar;
- Eigentümer und Berechtigungen sind minimal und korrekt;
- SELinux oder AppArmor bleibt wirksam;
- erforderliche Mounts sind vorhanden;
- Dateisystem ist im vorgesehenen Modus eingehängt;
- Speicherplatz und Inodes sind ausreichend;
- keine gelöschten großen Dateien bleiben geöffnet;
- CPU, RAM, Swap und I/O sind plausibel;
- keine neuen Kernel- oder Storagefehler erscheinen;
- Timer oder Cronjob arbeitet auch automatisch;
- Verhalten nach einem Neustart wurde berücksichtigt;
- temporäre Diagnoseänderungen wurden zurückgenommen;
- Ursache, Maßnahme, Rückweg und Ergebnis wurden dokumentiert.
62. Dokumentationsbeispiel
Symptom:
Der Dienst example-api ließ sich nach einem Konfigurationsupdate nicht mehr
starten. Clients erhielten „Connection refused“ auf TCP-Port 8443.
Zeitpunkt:
02.08.2026, 11:42 Uhr MESZ
Server:
linux-app-01.example.local
Dienst:
example-api.service
Nachweis:
systemctl status zeigte den Zustand „failed“.
Im Journal war unmittelbar nach dem Startversuch ein Berechtigungsfehler für
/etc/example-api/server.key dokumentiert.
Der Dienst lief als Benutzer example-api.
Ein kontrollierter Lesetest als example-api schlug fehl.
Die übergeordneten Verzeichnisse waren zugänglich.
Es gab keine passende SELinux- oder AppArmor-Ablehnung.
Die Schlüsseldatei war nach dem Austausch irrtümlich root:root mit Modus 0600
zugeordnet worden.
Ursache:
Die neue private Schlüsseldatei besaß nicht den vorgesehenen Gruppeneigentümer.
Der Dienstbenutzer konnte sie deshalb nicht lesen.
Maßnahme:
Nach Dokumentation des Ausgangszustands wurde die Datei der vorgesehenen
Dienstgruppe zugeordnet. Der Modus blieb auf das erforderliche Minimum
beschränkt.
Rollback:
Der ursprüngliche Eigentümer und die ursprüngliche Gruppe wurden dokumentiert
und können wiederhergestellt werden.
Verifikation:
Der Konfigurationstest war erfolgreich.
Der Dienst startete ohne neue Fehlermeldung.
TCP-Port 8443 wurde durch den vorgesehenen Prozess geöffnet.
Die lokale und externe HTTPS-Prüfung waren erfolgreich.
Der private Schlüssel ist weiterhin nicht für andere Benutzer lesbar.
Prävention:
Der Zertifikatsaustausch wird künftig durch einen dokumentierten Ablauf mit
Kontrolle von Eigentümer, Gruppe, Modus, Sicherheitskontext und anschließendem
Konfigurationstest durchgeführt.
63. Entscheidungsbaum
Linux-Dienst oder Anwendung gestört
↓
Ist das System erreichbar und die Zeit plausibel?
├── Nein
│ ↓
│ Boot, Netzwerk, Routing, DNS und Zeit prüfen
│
└── Ja
↓
Ist die Unit aktiv?
├── Nein
│ ↓
│ Status, Exit-Code und Dienstjournal prüfen
│
└── Ja
↓
Läuft der erwartete Prozess unter der richtigen Identität?
├── Nein
│ ↓
│ Unit, Drop-ins, Benutzer und Startmethode prüfen
│
└── Ja
↓
Lauscht die Anwendung auf der vorgesehenen Adresse und dem Port?
├── Nein
│ ↓
│ Konfiguration, Portkonflikt und Socket-Aktivierung prüfen
│
└── Ja
↓
Funktioniert die Anwendung lokal?
├── Nein
│ ↓
│ Anwendung, Backend, Rechte, Mounts und Ressourcen prüfen
│
└── Ja
↓
Funktioniert der Zugriff über das Netzwerk?
├── Nein
│ ↓
│ Bind-Adresse, Firewall, Route, DNS und Paketfluss prüfen
│
└── Ja
↓
Benutzerfunktion, Lastverhalten und abhängige Systeme prüfen
64. Typische Prüfungsfragen
Warum reicht der Zustand active eines systemd-Dienstes nicht als vollständiger Funktionsnachweis?
Antwort anzeigen
Der Zustand zeigt, dass systemd die Unit als aktiv betrachtet. Er beweist nicht, dass die Anwendung auf dem richtigen Port lauscht, ihre Backends erreicht oder korrekte Antworten auf Benutzeranfragen liefert.
Worin unterscheiden sich enabled und active?
Antwort anzeigen
enabled beschreibt die Einbindung für einen automatischen Start. active beschreibt den aktuellen Laufzeitzustand. Ein Dienst kann aktiv und gleichzeitig nicht aktiviert sein oder aktiviert, aber aktuell fehlgeschlagen sein.
Warum sollte zuerst SIGTERM und nicht sofort SIGKILL verwendet werden?
Antwort anzeigen
SIGTERM ermöglicht dem Prozess eine kontrollierte Beendigung, beispielsweise das Schreiben von Daten und Schließen von Dateien. SIGKILL kann nicht behandelt werden und verhindert eine geordnete Bereinigung.
Warum können df und du unterschiedliche Speicherbelegungen anzeigen?
Antwort anzeigen
Eine häufige Ursache sind gelöschte Dateien, die von einem laufenden Prozess weiterhin geöffnet gehalten werden. du findet sie nicht mehr im Verzeichnisbaum, während das Dateisystem den belegten Speicher weiterhin berücksichtigt.
Warum kann ein Dateisystem trotz freiem Speicherplatz keine neue Datei aufnehmen?
Antwort anzeigen
Die verfügbaren Inodes können erschöpft sein. In diesem Fall ist noch Datenkapazität frei, aber es können keine weiteren Dateisystemobjekte angelegt werden.
Warum beweist ein erfolgreicher manueller Skriptstart nicht, dass ein Cronjob funktioniert?
Antwort anzeigen
Cron verwendet häufig eine reduzierte Umgebung, einen anderen Benutzer, ein anderes Arbeitsverzeichnis und eine eingeschränkte PATH-Variable. Das Skript kann deshalb manuell funktionieren und automatisch scheitern.
Warum sollte SELinux nicht pauschal deaktiviert werden?
Antwort anzeigen
Dadurch wird eine wichtige Sicherheitsschicht für das gesamte System entfernt, ohne die eigentliche Ursache zu beheben. Stattdessen müssen Ablehnung, Pfad, Dateikontext und notwendige Mindestberechtigung untersucht werden.
Was bedeutet ein Prozess im Zustand D?
Antwort anzeigen
Der Prozess befindet sich in einem nicht unterbrechbaren Schlafzustand und wartet häufig auf eine I/O- oder Kerneloperation. Die zugrunde liegende Storage-, Mount- oder Treiberstörung muss untersucht werden.
Warum kann ein fehlender Mount zu Daten am falschen Ort führen?
Antwort anzeigen
Wenn der vorgesehene Mount fehlt, bleibt das lokale Mountpoint-Verzeichnis sichtbar. Eine Anwendung kann dann unbemerkt in das lokale Root-Dateisystem statt auf das vorgesehene Volume schreiben.
65. Prüfungsfallen
- einen Dienst sofort neu starten, bevor Status und Protokolle gesichert wurden;
-
activemit vollständiger Anwendungsfunktion gleichsetzen; -
enabledmit aktuell laufend gleichsetzen; - nur die letzte statt der ersten ursächlichen Fehlermeldung betrachten;
- Unit-Drop-ins nicht berücksichtigen;
-
After=mit einer Startabhängigkeit gleichsetzen; - Prozess außerhalb von systemd starten und dadurch den Sollzustand verfälschen;
- sofort
SIGKILLverwenden; - Prozess im Zustand
Dwie einen normalen hängenden Prozess behandeln; - Zombieprozess ungeprüft als Hauptursache hoher Last ansehen;
- Anwendung als
rootstarten, um Berechtigungsfehler zu umgehen; - pauschal Modus
777vergeben; - nur die Dateirechte, aber nicht die übergeordneten Verzeichnisse prüfen;
- ACL-Maske nicht berücksichtigen;
- SELinux oder AppArmor pauschal deaktivieren;
- Auditmeldungen ohne zeitlichen Zusammenhang bewerten;
- Portöffnung mit funktionierender Anwendung gleichsetzen;
- nur localhost testen;
- nur Remotezugriff testen, ohne die lokale Anwendung zu prüfen;
- nur IPv4 und nicht IPv6 berücksichtigen;
-
/etc/hosts, NSS und DNS verwechseln; - Firewallregel ändern, ohne Zone und Interface zu prüfen;
- Paketmitschnitte ungeschützt speichern;
- Load Average mit reiner CPU-Auslastung gleichsetzen;
- niedrigen Wert bei
freeautomatisch als Speichermangel bewerten; - hohen Swap-Verbrauch ohne aktuelle Swap-Aktivität als Fehler ansehen;
- OOM-Kill übersehen, weil systemd den Dienst neu gestartet hat;
- nur Speicherplatz, aber keine Inodes prüfen;
- Dateien allein nach Größe ungeprüft löschen;
- Logdatei löschen, obwohl der Prozess sie weiterhin geöffnet hält;
-
dfoderduauf hängenden Netzwerk-Mounts ungeprüft ausführen; - fehlenden Mount übersehen und in das lokale Mountpoint-Verzeichnis schreiben;
- ein read-only-Dateisystem sofort als
rwremounten; -
fsckauf einem schreibend eingehängten Dateisystem ausführen; - LVM-Volume vergrößern, aber das Dateisystem nicht berücksichtigen;
- RAID-Rebuild mit Backup gleichsetzen;
- Paketmanager-Lockdatei ungeprüft löschen;
- Drittanbieter-Repository und Versionsabhängigkeiten nicht berücksichtigen;
- Cronjob mit der interaktiven Benutzerumgebung testen;
- Timerstatus prüfen, aber die zugehörige Service-Unit nicht;
- Systemzeit ungeprüft sprunghaft ändern;
- private Schlüssel in Protokolle oder Tickets kopieren;
- Kernelmodule ungeprüft entladen;
- mehrere Änderungen gleichzeitig durchführen;
- nur den Dienststatus, aber nicht die ursprüngliche Benutzerfunktion nachtesten.
66. Checkliste
- Hostname und Betriebssystem wurden dokumentiert.
- Kernelversion und Architektur wurden erfasst.
- Zeitpunkt und Zeitzone wurden geprüft.
- vollständiger Fehlertext wurde dokumentiert.
- Umfang der Störung wurde bestimmt.
- letzte funktionierende Nutzung wurde erfasst.
- letzte Änderungen wurden geprüft.
- systemd-Gesamtzustand wurde geprüft.
- Unit-Status und Exit-Code wurden geprüft.
- Dienstjournal wurde ausgewertet.
- vorheriger Boot wurde bei Bedarf berücksichtigt.
- tatsächlich verwendete Unit-Datei wurde geprüft.
- Drop-ins wurden berücksichtigt.
- Abhängigkeiten und Startreihenfolge wurden geprüft.
- Anwendungsidentität wurde bestimmt.
- Prozess und Prozesszustand wurden geprüft.
- wiederholte Prozessneustarts wurden berücksichtigt.
- offene Dateien wurden bei Bedarf geprüft.
- tatsächlich verwendete Konfiguration wurde bestimmt.
- Konfigurationssyntax wurde geprüft.
- Eigentümer, Gruppe und Modus wurden geprüft.
- alle Bestandteile des Pfades wurden geprüft.
- ACL wurde berücksichtigt.
- Zugriff wurde als Dienstbenutzer getestet.
- SELinux wurde geprüft.
- AppArmor wurde geprüft.
- Listener, Port und Bind-Adresse wurden geprüft.
- Portkonflikt wurde ausgeschlossen.
- lokale Anwendungsfunktion wurde getestet.
- Remotezugriff wurde getestet.
- IP-Adressen und Routen wurden geprüft.
- DNS und NSS wurden berücksichtigt.
- Firewallregeln wurden geprüft.
- IPv4 und IPv6 wurden unterschieden.
- CPU und Load wurden geprüft.
- RAM und Swap wurden geprüft.
- OOM-Ereignisse wurden geprüft.
- Speicherplatz wurde geprüft.
- Inodes wurden geprüft.
- gelöschte offene Dateien wurden berücksichtigt.
- Mounts wurden geprüft.
-
/etc/fstabwurde bei Mountproblemen geprüft. - read-only-Zustand wurde berücksichtigt.
- Kernel- und I/O-Fehler wurden geprüft.
- LVM oder RAID wurde bei Bedarf geprüft.
- Netzwerk-Mounts wurden berücksichtigt.
- Paketstatus und letzte Updates wurden geprüft.
- Cronjob oder systemd-Timer wurde in seiner tatsächlichen Umgebung geprüft.
- Zeit- und Zertifikatsprobleme wurden berücksichtigt.
- Boot- und Kernelmeldungen wurden geprüft.
- genau eine kontrollierte Maßnahme wurde durchgeführt.
- Rückweg wurde vor der Änderung festgelegt.
- Dienst, Port und Benutzerfunktion wurden nachgetestet.
- temporäre Diagnoseänderungen wurden zurückgenommen.
- Ursache, Maßnahme und Ergebnis wurden dokumentiert.
67. Schnellreferenz
| Beobachtung | Nächstes Werkzeug |
|---|---|
| Betriebssystemversion unklar | cat /etc/os-release |
| Kernelversion unklar | uname -r |
| Systemzustand unklar | systemctl is-system-running |
| fehlgeschlagene Units gesucht | systemctl --failed |
| Dienststatus unklar | systemctl status |
| Exit-Code unklar | systemctl show |
| Dienstprotokoll gesucht | journalctl -u |
| vorheriger Boot relevant | journalctl -b -1 |
| tatsächliche Unit unklar | systemctl cat |
| Drop-ins vermutet | systemctl show -p DropInPaths |
| Unit-Syntax unklar | systemd-analyze verify |
| Prozess gesucht | pgrep -a, ps |
| Prozessbaum benötigt | pstree -ap |
| offene Datei unklar | lsof, fuser |
| gelöschte Datei belegt Speicher | lsof +L1 |
| Dienstbenutzer unklar | systemctl show -p User -p Group |
| Benutzergruppen unklar | id, getent |
| Pfadberechtigung unklar | namei -l, stat |
| ACL unklar | getfacl |
| SELinux-Status unklar | getenforce, sestatus |
| SELinux-Ablehnung vermutet | ausearch |
| AppArmor-Ablehnung vermutet | aa-status, Kerneljournal |
| Listener unklar | ss -ltnp |
| Portkonflikt vermutet | ss, lsof |
| lokale HTTP-Funktion unklar | curl -v |
| TLS-Fehler | openssl s_client |
| IP-Konfiguration unklar | ip -br address |
| Route unklar | ip route get |
| DNS-Auflösung unklar | getent hosts, dig |
| Firewallzustand unklar | firewall-cmd, nft |
| Paketfluss unklar | tcpdump |
| CPU-Last unklar | top, mpstat, pidstat |
| RAM unklar | free -h, vmstat |
| OOM vermutet | journalctl -k |
| Swap unklar | swapon --show, vmstat |
| Speicherplatz unklar | df -hT |
| Verzeichnisgröße unklar | du -xhd1 |
| Inodes unklar | df -ih |
| Mount unklar | findmnt |
| Blockgerät unklar | lsblk -f |
| fstab fehlerhaft vermutet | findmnt --verify |
| I/O-Fehler vermutet | Kerneljournal, iostat |
| LVM-Zustand unklar | pvs, vgs, lvs |
| Software-RAID unklar | /proc/mdstat, mdadm --detail |
| Paketdatei verändert | rpm -V, debsums |
| Cronjob unklar | Crontab und Cronjournal |
| systemd-Timer unklar | systemctl list-timers --all |
| Zeitsynchronisation unklar | timedatectl, chronyc |
| Boot langsam | systemd-analyze critical-chain |
| Systemaufruf scheitert | strace |
Merksatz
Auf einem Linux-Server wird vom objektiven Symptom über Unit, Prozess, Protokoll, Identität, Port und Abhängigkeiten bis zu Berechtigungen, Sicherheitsrichtlinien, Ressourcen, Mounts und Kernel geprüft. Ein Dienst wird erst verändert oder neu gestartet, wenn der Fehlerzustand gesichert, die Auswirkung bewertet und ein Rückweg festgelegt wurde.
active, ein offener Port und ein erfolgreicher lokaler Test sind jeweils nur Teilnachweise – entscheidend ist die ursprüngliche Benutzerfunktion.
Quellen und weiterführende Dokumentation
Offizielle systemd-Dokumentation
- systemd – systemctl
- systemd – journalctl
- systemd – systemd.service
- systemd – systemd.unit
- systemd – systemd.timer
- systemd – systemd-analyze
- systemd – systemd.resource-control
Offizielle Linux-Kernel-Dokumentation
- Linux Kernel – Administration Guide
- Linux Kernel – Magic SysRq
- Linux Kernel – Kernel Parameters
- Linux Kernel – Out Of Memory Handling
- Linux Kernel – Software RAID
Offizielle Red-Hat-Dokumentation
- Red Hat Enterprise Linux 9 – Systemadministration und Monitoring
- Red Hat Enterprise Linux 9 – SELinux verwenden
- Red Hat – SELinux-Probleme untersuchen
- Red Hat Enterprise Linux 9 – Dateisysteme verwalten
- Red Hat Enterprise Linux 9 – Systemstatus und Leistung überwachen
- Red Hat Enterprise Linux 9 – Logische Volumes verwalten
Offizielle Ubuntu-Dokumentation
Linux-Handbuchseiten
8.5 macOS – Prozesse, Dienste, Protokolle, Ressourcen und Speicher analysieren
Diese Seite beschreibt die systematische Fehleranalyse auf macOS. Im Mittelpunkt stehen Prozesse, launchd-Dienste, Protokolle, CPU, Arbeitsspeicher, APFS-Datenträger, Dateiberechtigungen, Datenschutzfreigaben und Startprobleme.
8.5.1 Ziel und Abgrenzung
Nach dieser Seite soll beurteilt werden können:
- ob eine Störung nur eine App, einen Benutzer oder das gesamte System betrifft;
- ob ein Prozess ausgeführt wird, blockiert ist, abstürzt oder ungewöhnlich viele Ressourcen verbraucht;
- ob ein Dienst im richtigen
launchd-Bereich registriert ist; - ob Protokolle, Absturzberichte oder Systemdiagnosen eine Ursache belegen;
- ob CPU, Arbeitsspeicher, Datenträger oder Dateisystem den Engpass bilden;
- ob Unix-Berechtigungen, ACLs oder macOS-Datenschutzfreigaben den Zugriff verhindern;
- ob Anmeldeobjekte, Hintergrunddienste oder Systemerweiterungen beteiligt sind;
- ob ein Software-, Konfigurations- oder Hardwareproblem vorliegt.
Eine laufende App, ein vorhandener Prozess oder ein registrierter Dienst beweist noch nicht, dass die ursprüngliche Benutzerfunktion funktioniert.
8.5.2 Besonderheiten der macOS-Systemarchitektur
Für die Fehleranalyse sind insbesondere folgende Komponenten wichtig:
| Komponente | Aufgabe | Bedeutung für die Diagnose |
|---|---|---|
| Kernel | Verwaltet Hardware, Speicher, Prozesse und Systemressourcen | Kernel-Panics, Treiber- oder Hardwareprobleme können das gesamte System betreffen |
launchd |
Startet und verwaltet Dienste, Agents und XPC-Dienste | Ein Dienst kann dauerhaft oder nur bei Bedarf gestartet werden |
| LaunchDaemon | Systemweiter Hintergrunddienst | Wird gewöhnlich im system-Bereich verwaltet |
| LaunchAgent | Benutzerbezogener Hintergrunddienst | Wird gewöhnlich im gui/<UID>-Bereich verwaltet |
| Unified Logging | Zentrales Protokollsystem von macOS | Wird über „Konsole“ oder den Befehl log ausgewertet |
| APFS | Standarddateisystem moderner macOS-Systeme | Container, Volumes, Snapshots und gemeinsam genutzter Speicher müssen unterschieden werden |
| TCC | Datenschutz- und Zugriffssteuerung | Kann Zugriffe trotz korrekter Unix-Berechtigungen verhindern |
| Systemerweiterungen | Erweiterungen für Netzwerk, Sicherheit, Treiber und andere Funktionen | Fehlerhafte Erweiterungen können systemweite Auswirkungen verursachen |
| Aktivitätsanzeige | Grafische Prozess- und Ressourcenanalyse | Zeigt CPU, Speicher, Energie, Datenträger und Netzwerkaktivität |
launchd-Dienste können bedarfsgesteuert arbeiten. Ein registrierter Dienst ohne aktuelle PID ist deshalb nicht automatisch fehlerhaft.
8.5.3 Typische Symptome
- Eine App startet nicht oder beendet sich sofort.
- Eine App reagiert nicht mehr.
- Ein Hintergrunddienst funktioniert nach der Anmeldung oder einem Neustart nicht.
- Das System ist dauerhaft oder zeitweise langsam.
- Der Lüfter läuft stark oder der Energieverbrauch ist ungewöhnlich hoch.
- Der Speicherdruck steigt auf Gelb oder Rot.
- Der verfügbare Datenträgerspeicher nimmt unerwartet ab.
- Ein Prozess verursacht dauerhaft hohe CPU- oder Datenträgeraktivität.
- Eine App kann bestimmte Dateien, Ordner, Geräte oder Netzwerkziele nicht verwenden.
- Eine Funktion arbeitet nur unter einem bestimmten Benutzerkonto.
- Der Fehler verschwindet im sicheren Modus.
- Der Mac startet wiederholt neu oder meldet einen Kernel-Panic.
- Ein externes Speichermedium wird nicht oder nur schreibgeschützt eingebunden.
- Eine App funktioniert nach einem macOS- oder App-Update nicht mehr.
8.5.4 Kennzeichnung der Befehle
| Kennzeichnung | Bedeutung |
|---|---|
[LESEND] |
Liest Informationen aus und verändert normalerweise keine Konfiguration |
[LIVE] |
Beobachtet laufende Ereignisse bis zum Abbruch |
[PRIVILEGIERT] |
Benötigt möglicherweise sudo oder Administratorrechte |
[BELASTEND] |
Kann CPU, Datenträger oder Protokollsystem zusätzlich belasten |
[VERÄNDERND] |
Verändert einen Prozess, Dienst oder eine Systemeinstellung |
[NEUSTART] |
Unterbricht laufende Sitzungen oder Funktionen |
Vor verändernden Maßnahmen müssen Befund, Konfiguration und Rückweg dokumentiert werden.
8.5.5 Sicherheits- und Betriebswarnungen
- Flüchtige Informationen müssen vor dem Beenden einer App oder vor einem Neustart gesichert werden.
-
kill -9, erzwungenes Ausschalten und erzwungenes Aushängen eines Datenträgers können zu Datenverlust führen. - Apple-Systemdienste dürfen nicht versuchsweise deaktiviert oder aus
/System/Libraryentfernt werden. - SIP, Gatekeeper, FileVault und Datenschutzfunktionen dürfen nicht als dauerhafte Fehlerlösung deaktiviert werden.
- Protokolle, Systemberichte und
sysdiagnose-Archive können Benutzernamen, Pfade, Seriennummern, Netzwerkdaten und andere vertrauliche Informationen enthalten. -
diskutilbesitzt sowohl lesende als auch destruktive Unterbefehle. Datenträgerkennung und Unterbefehl müssen vor der Ausführung kontrolliert werden. - Eine Dateisystemreparatur ersetzt kein Backup.
- Das manuelle Löschen unbekannter Dateien aus
/Library,/System,/privateoder APFS-Systembereichen ist keine sichere Standardmaßnahme. - Bei verwalteten Macs können MDM-Richtlinien Einstellungen absichtlich erzwingen.
- Befehlsoptionen können sich zwischen macOS-Versionen ändern. Maßgeblich ist die lokale Manpage der tatsächlich installierten Version.
Beispiel:
man launchctl
man log
man diskutil
8.5.6 Benötigte Informationen
Vor der Diagnose sollten mindestens folgende Angaben erfasst werden:
- genaue macOS-Version und Buildnummer;
- Apple-Chip oder Intel-Prozessor;
- Zeitpunkt und Häufigkeit der Störung;
- betroffene App, Funktion, Benutzer und Geräte;
- letzte Updates, Installationen oder Konfigurationsänderungen;
- angemeldeter Benutzer und vorhandene Administratorrechte;
- MDM- oder Unternehmensverwaltung;
- angeschlossene Datenträger, Docks und USB-Geräte;
- freier Speicherplatz;
- genaue Fehlermeldung;
- Verhalten nach Ab- und Anmeldung oder Neustart;
- Verhalten unter einem anderen Benutzerkonto;
- Verhalten im sicheren Modus;
- vorhandene Absturz-, Spin- oder Panic-Berichte.
8.5.7 Systemzustand und Basisdaten sichern
Die folgenden Befehle sind lesend. Systeminformationen können Seriennummern und andere vertrauliche Daten enthalten und müssen vor einer Weitergabe geprüft werden.
date
sw_vers
uname -a
uname -m
uptime
who
last reboot | head -n 10
system_profiler SPHardwareDataType SPSoftwareDataType
Wichtige Fragen:
- Stimmt die Systemzeit?
- Welche macOS-Version und welcher Build sind installiert?
- Wurde das System kurz vor der Störung neu gestartet?
- Betrifft das Problem einen Mac mit Apple-Chip oder einen Intel-Mac?
- Ist die problematische App für die vorhandene Prozessorarchitektur geeignet?
- Trat der Fehler unmittelbar nach einem Update auf?
Die Installationshistorie kann ergänzend geprüft werden:
system_profiler SPInstallHistoryDataType
Die zeitliche Übereinstimmung zwischen einer Installation und dem Beginn der Störung ist ein Hinweis, aber noch kein Ursachenbeweis.
8.5.8 Ungefährliche Schnellprüfung
df -h
df -ih
diskutil list
vm_stat
sysctl vm.swapusage
ps -axo pid,ppid,user,state,%cpu,%mem,etime,command | head -n 30
log show --last 15m --style compact \
--predicate 'messageType == error OR messageType == fault'
Zusätzlich in der grafischen Oberfläche prüfen:
- „Aktivitätsanzeige“ öffnen.
- CPU, Speicher, Energie, Festplatte und Netzwerk kontrollieren.
- Nach ungewöhnlich belastenden oder nicht reagierenden Prozessen suchen.
- „Konsole“ öffnen und den Fehlerzeitraum untersuchen.
- Unter „Systemeinstellungen → Allgemein → Speicher“ den verfügbaren Speicher prüfen.
- Unter „Systemeinstellungen → Allgemein → Anmeldeobjekte & Erweiterungen“ auffällige Hintergrundobjekte erfassen.
- Unter „Datenschutz & Sicherheit“ prüfen, ob die betroffene App die tatsächlich benötigten Freigaben besitzt.
Noch keine Prozesse beenden, Dienste neu starten oder Dateien löschen.
8.5.9 Prozesse systematisch untersuchen
Prozesse können über die Aktivitätsanzeige oder das Terminal untersucht werden.
Alle Prozesse anzeigen:
ps -axo pid,ppid,user,state,%cpu,%mem,etime,command
Mehrere Messungen der aktiven Prozesse durchführen:
top -l 3 -s 2 -o cpu \
-stats pid,command,cpu,mem,threads,state,time
Nach einem Prozess suchen:
pgrep -fl "BeispielApp"
Einen bestimmten Prozess untersuchen, wobei 1234 durch die tatsächliche PID ersetzt wird:
ps -p 1234 \
-o pid,ppid,user,state,%cpu,%mem,etime,command
Geöffnete Dateien und Verbindungen des Prozesses anzeigen:
lsof -nP -p 1234 | head -n 100
Einen Prozess für zehn Sekunden analysieren:
sample 1234 10 -file "$HOME/Desktop/BeispielApp-sample.txt"
Alternativ kann in der Aktivitätsanzeige ein Prozess ausgewählt und über „Mehr → Prozess analysieren“ untersucht werden.
Zu prüfen sind:
- Elternprozess;
- ausführender Benutzer;
- Laufzeit;
- CPU- und Speicherverbrauch;
- geöffnete Dateien;
- Netzwerkverbindungen;
- wiederholte Neustarts;
- nicht reagierende Threads;
- zugehörige Protokoll- und Absturzmeldungen.
Ein hoher Messwert während eines kurzen Startvorgangs kann normal sein. Aussagekräftiger ist eine wiederholte oder dauerhaft hohe Auslastung im Fehlerzeitraum.
8.5.10 Prozesse kontrolliert beenden
Zuerst sollte die App regulär beendet werden. Reagiert sie nicht, kann die Aktivitätsanzeige verwendet werden.
Ein Prozess kann im Terminal zunächst mit SIGTERM zum geordneten Beenden aufgefordert werden:
kill -TERM 1234
Kennzeichnung: [VERÄNDERND]
Risiken:
- nicht gespeicherte Daten können verloren gehen;
- verbundene Anwendungen können ihre Verbindung verlieren;
- ein von
launchdverwalteter Prozess kann automatisch erneut gestartet werden.
SIGKILL beziehungsweise kill -9 beendet einen Prozess ohne geordnetes Aufräumen und ist nur die letzte Eskalationsstufe:
kill -KILL 1234
Kennzeichnung: [VERÄNDERND] [HOHES RISIKO]
Vorher müssen PID, Prozessname, Benutzer und Auswirkungen eindeutig geprüft werden.
8.5.11 Dienste und Agents mit launchd analysieren
Systemweite Dienste und benutzerbezogene Agents liegen in unterschiedlichen launchd-Bereichen.
| Bereich | Typische Verwendung |
|---|---|
system |
Systemweite Daemons |
user/<UID> |
Benutzerbereich ohne zwingenden Bezug zur grafischen Anmeldung |
gui/<UID> |
Grafische Anmeldesitzung eines Benutzers |
Systembereich anzeigen:
launchctl print system
Bereich des aktuell angemeldeten Benutzers anzeigen:
launchctl print gui/$(id -u)
Einen konkreten systemweiten Dienst prüfen:
launchctl print system/com.example.service
Einen konkreten Benutzer-Agent prüfen:
launchctl print gui/$(id -u)/com.example.agent
Deaktivierungszustände anzeigen:
launchctl print-disabled system
launchctl print-disabled gui/$(id -u)
Typische Speicherorte:
~/Library/LaunchAgents
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons
Eine Drittanbieter-Property-List syntaktisch prüfen:
plutil -lint "/Library/LaunchDaemons/com.example.service.plist"
Zu untersuchen sind:
- korrekter
launchd-Bereich; - exaktes Dienstlabel;
- Programmpfad und Argumente;
- ausführender Benutzer;
- letzte Exit-Codes;
- Startbedingungen;
- Standardausgabe und Fehlerausgabe;
- Dateiberechtigungen der Property-List;
- Existenz und Ausführbarkeit des hinterlegten Programms;
- Abhängigkeiten und benötigte Dateien.
Ein nicht laufender On-Demand-Dienst kann sich im Normalzustand befinden. Entscheidend ist, ob der vorgesehene Auslöser den Dienst startet und die Benutzerfunktion anschließend funktioniert.
8.5.12 Dienst kontrolliert neu starten
Ein eindeutig identifizierter Drittanbieterdienst kann zu Diagnosezwecken neu gestartet werden.
Systemweiter Dienst:
sudo launchctl kickstart -k system/com.example.service
Benutzer-Agent:
launchctl kickstart -k gui/$(id -u)/com.example.agent
Kennzeichnung: [VERÄNDERND]
Vorher dokumentieren:
- Dienstlabel;
- aktueller Status;
- PID;
- offene Verbindungen;
- aktuelle Protokollmeldungen;
- mögliche Benutzerunterbrechung;
- erwartetes Ergebnis.
Ein erfolgreicher Neustart beweist nur, dass der Dienst erneut gestartet werden konnte. Danach muss die ursprüngliche Funktion getestet werden.
8.5.13 Unified Logging und Konsole
Die App „Konsole“ und der Befehl log greifen auf das zentrale macOS-Protokollsystem zu.
Fehler und Fault-Meldungen der letzten 30 Minuten:
log show --last 30m --style compact \
--predicate 'messageType == error OR messageType == fault'
Meldungen eines bestimmten Prozesses:
log show --last 30m --style compact \
--predicate 'process == "BeispielApp"'
Bestimmten Zeitraum untersuchen:
log show \
--start "2026-08-02 13:00:00" \
--end "2026-08-02 13:30:00" \
--style compact
Protokollmeldungen live verfolgen:
log stream --style compact --level info \
--predicate 'process == "BeispielApp"'
Kennzeichnung: [LIVE]
Die Live-Ausgabe wird mit Ctrl-C beendet.
Ein Protokollarchiv der letzten 30 Minuten erstellen:
sudo log collect --last 30m \
--output "$HOME/Desktop/macOS-30m.logarchive"
Kennzeichnung: [PRIVILEGIERT] [DATENSCHUTZRELEVANT]
Bei der Auswertung beachten:
- Fehlerzeitpunkt möglichst genau eingrenzen;
- Prozess, Subsystem und Kategorie berücksichtigen;
- erste Fehlermeldung einer Fehlerkette suchen;
- wiederholte Folgefehler nicht automatisch als Ursache interpretieren;
- Meldungen vor und nach dem Fehler vergleichen;
- normale Warnungen von reproduzierbaren Fehlern unterscheiden;
- fehlende Protokollmeldungen sind kein Beweis für Fehlerfreiheit;
- Info- und Debug-Meldungen werden nicht immer dauerhaft gespeichert.
8.5.14 Absturz-, Spin- und Diagnoseberichte
Die App „Konsole“ zeigt unter anderem:
- Absturzberichte mit der Erweiterung
.ips; - Spin-Berichte nicht reagierender Prozesse;
- Protokollberichte;
- Diagnoseberichte;
- ältere Einträge aus
system.log; - System- und Benutzerberichte.
Benutzerbezogene Diagnoseberichte können zusätzlich in folgendem Verzeichnis liegen:
ls -lt "$HOME/Library/Logs/DiagnosticReports" | head -n 20
Systemweite Diagnoseberichte:
sudo ls -lt "/Library/Logs/DiagnosticReports" | head -n 20
Wichtige Inhalte eines Absturzberichts:
- betroffener Prozess und Version;
- Zeitpunkt;
- Prozessorarchitektur;
- Exception Type;
- Termination Reason;
- auslösender Thread;
- verwendete Bibliotheken;
- wiederkehrende Funktionsnamen oder Module;
- Übereinstimmung mit dem tatsächlichen Fehlerzeitpunkt.
Ein einzelner Absturzbericht beweist nicht automatisch einen dauerhaften Defekt. Entscheidend sind Reproduzierbarkeit, Häufigkeit und Übereinstimmung mit der beobachteten Störung.
8.5.15 CPU-Auslastung analysieren
Grafisch:
- Aktivitätsanzeige öffnen.
- Bereich „CPU“ auswählen.
- Nach
% CPUsortieren. - Messung während der Störung beobachten.
- Prozess analysieren oder Spindump erstellen.
Im Terminal:
top -l 5 -s 2 -o cpu \
-stats pid,command,cpu,mem,threads,state,time
Mögliche Befunde:
| Befund | Mögliche Bedeutung |
|---|---|
| Ein Prozess dauerhaft stark ausgelastet | Endlosschleife, fehlerhafte Verarbeitung oder außergewöhnliche Arbeitslast |
| Viele Prozesse gleichzeitig ausgelastet | Systemweite Last, Indizierung, Update oder konkurrierende Aufgaben |
| Hohe CPU mit normaler Benutzerfunktion | Möglicherweise erwartete Verarbeitung |
| Niedrige CPU bei langsamer App | Warten auf Datenträger, Netzwerk, Sperre oder externen Dienst |
| App reagiert nicht und CPU ist nahezu null | Blockierter Thread oder Warten auf eine Ressource |
| Wiederkehrende kurze Lastspitzen | Regelmäßiger Agent, Synchronisation oder geplanter Hintergrundprozess |
Die CPU-Auslastung muss immer zusammen mit Prozesszustand, Benutzerfunktion, Protokollen und I/O-Aktivität bewertet werden.
8.5.16 Arbeitsspeicher analysieren
Apple empfiehlt, den Speicherdruck und nicht nur den freien Arbeitsspeicher zu bewerten.
Grafisch:
- Aktivitätsanzeige öffnen.
- Bereich „Speicher“ auswählen.
- Speicherdruck beobachten.
- Speicher, komprimierten Speicher und Swap-Nutzung prüfen.
- Nach Speicherverbrauch sortieren.
Terminalprüfung:
vm_stat
sysctl vm.swapusage
Mehrere Messungen im Abstand von zwei Sekunden:
vm_stat -c 5 2
Wichtige Werte:
- freie und aktive Speicherseiten;
- komprimierter Speicher;
- Page-ins und Page-outs;
- Swap-ins und Swap-outs;
- Entwicklung der Werte während der Störung.
Interpretation:
| Befund | Bewertung |
|---|---|
| Speicherdruck Grün | Speicherverwaltung arbeitet derzeit ausreichend |
| Speicherdruck Gelb | Ressourcen werden knapp; Verlauf und verursachende Prozesse prüfen |
| Speicherdruck Rot | Akuter Speicherengpass wahrscheinlich |
| Hohe Komprimierung ohne Störung | Kann normal sein |
| Wachsende Swap-Nutzung und Leistungseinbruch | Speicherengpass oder übermäßiger Prozessverbrauch möglich |
| Einzelner Prozess wächst kontinuierlich | Mögliches Speicherleck |
| Hohe historische Swap-Zahl ohne aktuelle Änderung | Kein ausreichender Ursachenbeweis |
Ein einmaliger Gesamtwert ist weniger aussagekräftig als die Veränderung während des reproduzierten Fehlers.
8.5.17 Datenträger, APFS und Speicherplatz analysieren
Dateisystembelegung:
df -h
df -h /System/Volumes/Data
df -ih
Datenträgerstruktur:
diskutil list
diskutil info /
diskutil apfs list
Lokale Time-Machine-Snapshots anzeigen:
tmutil listlocalsnapshots /
Speicherbelegung im Benutzerordner untersuchen:
du -x -h -d 1 "$HOME" 2>/dev/null | sort -h
Datenträgeraktivität beobachten:
iostat -w 2 -c 5
Dateisystem oder Datenträger-I/O für 15 Sekunden verfolgen:
sudo fs_usage -w -f diskio -t 15
Kennzeichnung: [PRIVILEGIERT] [LIVE] [BELASTEND] [DATENSCHUTZRELEVANT]
Ein Volume prüfen:
diskutil verifyVolume /
Kennzeichnung: [PRÜFEND] [POTENZIELL BELASTEND]
Bei APFS beachten:
- mehrere Volumes können Speicher innerhalb eines Containers gemeinsam nutzen;
- lokale Snapshots können Speicher belegen;
- löschbarer Speicher wird nicht in jeder Anzeige identisch dargestellt;
- System- und Datenvolume bilden gemeinsam das startfähige macOS-System;
- ein voller Datenträger kann Updates, Protokollierung, Swap, App-Starts und Datenbanken beeinträchtigen;
- freie Inodes und freier Speicherplatz sind unterschiedliche Größen;
- externe Datenträger können durch Kabel, Stromversorgung, Adapter oder Dateisystemfehler ausfallen.
Für Reparaturen sollte das Festplattendienstprogramm verwendet werden. Apple empfiehlt, „Erste Hilfe“ zuerst für die Volumes, anschließend für die Container und zuletzt für das physische Speichergerät auszuführen. Bei Problemen mit dem Startvolume kann die macOS-Wiederherstellung erforderlich sein.
8.5.18 Dateiberechtigungen, ACLs und erweiterte Attribute
Identität des aktuellen Benutzers prüfen:
id
groups
Datei oder Ordner untersuchen:
ls -ldeO@ "/Pfad/zum/Ordner"
stat -x "/Pfad/zum/Ordner"
Dabei werden unter anderem sichtbar:
- Eigentümer;
- Gruppe;
- klassische Unix-Berechtigungen;
- ACL-Einträge;
- Dateiflags;
- erweiterte Attribute.
Zu prüfen ist der gesamte benötigte Pfad. Schreibrechte auf eine Datei reichen beispielsweise nicht aus, wenn ein übergeordneter Ordner nicht betreten oder verändert werden darf.
Berechtigungen dürfen nicht pauschal mit chmod -R 777 geöffnet werden. Dadurch entstehen Sicherheitsprobleme, und bestehende ACLs oder Eigentümerfehler werden nicht zuverlässig behoben.
8.5.19 Datenschutzfreigaben und TCC
macOS schützt bestimmte Daten und Geräte zusätzlich zu den Unix-Berechtigungen.
Mögliche Freigaben sind unter anderem:
- Dateien und Ordner;
- Festplattenvollzugriff;
- Kamera;
- Mikrofon;
- Bildschirm- und Systemaudioaufnahme;
- Bedienungshilfen;
- Automation;
- Eingabeüberwachung;
- Bluetooth;
- lokales Netzwerk.
Ein Zugriff kann deshalb fehlschlagen, obwohl ls -l korrekte Unix-Berechtigungen anzeigt.
Prüfung:
- „Systemeinstellungen → Datenschutz & Sicherheit“ öffnen.
- Nur die für die App tatsächlich benötigte Kategorie auswählen.
- Prüfen, ob die richtige App oder das richtige Terminalprogramm eingetragen ist.
- Nach einer Änderung die betroffene App gegebenenfalls vollständig beenden und neu starten.
- Funktion erneut testen.
Festplattenvollzugriff sollte nicht pauschal vergeben werden. Die kleinste benötigte Freigabe ist vorzuziehen.
8.5.20 App-Signatur, Gatekeeper und Quarantäne prüfen
Eine App kann wegen einer beschädigten Signatur, einer nicht vertrauenswürdigen Herkunft oder einer unvollständigen Installation nicht starten.
Signatur einer Beispiel-App prüfen:
codesign --verify --deep --strict --verbose=2 \
"/Applications/Beispiel.app"
Gatekeeper-Bewertung prüfen:
spctl --assess --type execute --verbose=4 \
"/Applications/Beispiel.app"
Erweiterte Attribute anzeigen:
xattr -l "/Applications/Beispiel.app"
Diese Befehle sind lesend.
Ein negatives Ergebnis sollte durch eine unveränderte, signierte Installationsdatei des Herstellers behoben werden. Das Entfernen von Quarantäneattributen, das Ad-hoc-Signieren oder das Deaktivieren von Gatekeeper ist keine allgemeine Fehlerlösung.
8.5.21 Anmeldeobjekte, Hintergrunddienste und Erweiterungen
Grafische Prüfung:
- „Systemeinstellungen → Allgemein → Anmeldeobjekte & Erweiterungen“ öffnen.
- „Bei der Anmeldung öffnen“ erfassen.
- „Im Hintergrund erlauben“ erfassen.
- installierte Erweiterungen prüfen.
- unbekannte oder zeitlich zur Störung passende Drittanbieterkomponenten dokumentieren.
Systemerweiterungen anzeigen:
systemextensionsctl list
MDM-Registrierungsstatus prüfen:
profiles status -type enrollment
Sicherheitszustände können ergänzend gelesen werden:
fdesetup status
csrutil status
spctl --status
Diese Zustände dürfen nicht ohne begründete Anforderung verändert werden.
Wenn Anmeldeobjekte als Ursache vermutet werden:
- vollständige Liste sichern;
- verdächtige Drittanbieterobjekte kontrolliert deaktivieren;
- ab- und wieder anmelden oder neu starten;
- ursprüngliche Funktion testen;
- Objekte einzeln wieder aktivieren;
- den tatsächlich verursachenden Eintrag bestätigen.
8.5.22 Netzwerkabhängigkeiten kurz prüfen
Wenn eine App langsam ist oder einen Dienst nicht erreicht, muss zwischen lokalem Prozessproblem und externer Abhängigkeit unterschieden werden.
scutil --dns
route -n get default
netstat -rn
lsof -nP -iTCP -sTCP:LISTEN
Fragen:
- Ist die lokale App blockiert oder wartet sie auf DNS?
- Ist das Ziel per IP und Name erreichbar?
- Ist ein erforderlicher lokaler Listener vorhanden?
- Verhindern Proxy, VPN, Firewall oder lokaler Netzwerkzugriff die Verbindung?
- Wartet die App auf einen Server, eine API, eine Freigabe oder einen Cloud-Dienst?
Die ausführliche Netzwerkdiagnose erfolgt nach den Abläufen aus Kapitel 3.
8.5.23 Fehler auf Benutzer, System oder Hardware eingrenzen
| Test | Erkenntnis |
|---|---|
| Nur eine App betroffen | App-Konfiguration, App-Daten oder Abhängigkeit wahrscheinlich |
| Mehrere Apps eines Benutzers betroffen | Benutzerprofil, TCC, LaunchAgent oder Anmeldeobjekt möglich |
| Alle Benutzer betroffen | Systemdienst, systemweite Konfiguration, Datenträger oder Hardware möglich |
| Fehler nur mit einem externen Gerät | Gerät, Kabel, Adapter, Stromversorgung oder Treiber untersuchen |
| Fehler verschwindet nach App-Neustart | Prozesszustand wahrscheinlich, Ursache aber noch nicht bewiesen |
| Fehler verschwindet nach Abmeldung | Benutzerbezogener Agent oder Sitzungszustand möglich |
| Fehler verschwindet im sicheren Modus | Drittanbietererweiterung, Anmeldeobjekt oder zusätzlich geladene Komponente möglich |
| Fehler bleibt im sicheren Modus bestehen | Grundsystem, Benutzerdateien, Hardware oder weiterhin aktive Abhängigkeit untersuchen |
| Fehler tritt auch in der Wiederherstellung auf | Hardware oder Datenträger wird wahrscheinlicher |
| Apple Diagnose meldet Referenzcode | Hardwarebefund dokumentieren und nach Apple-Vorgabe weiterbearbeiten |
8.5.24 Sicherer Modus
Der sichere Modus hilft zu prüfen, ob beim normalen Start zusätzlich geladene Software beteiligt ist.
Mac mit Apple-Chip:
- Mac vollständig ausschalten.
- Ein-/Ausschalter gedrückt halten, bis die Startoptionen erscheinen.
- Startvolume auswählen.
- Umschalttaste gedrückt halten.
- „Im gesicherten Modus fortfahren“ auswählen.
Intel-Mac:
- Mac einschalten oder neu starten.
- Sofort die Umschalttaste gedrückt halten.
- Taste loslassen, wenn das Anmeldefenster erscheint.
Der sichere Modus ist ein Kreuztest. Wenn der Fehler dort nicht auftritt, ist damit noch keine einzelne Ursache bewiesen. Anschließend müssen Anmeldeobjekte, Agents, Erweiterungen und Drittanbietersoftware einzeln geprüft werden.
Ein normaler Neustart beendet den sicheren Modus.
8.5.25 Apple Diagnose und Wiederherstellung
Apple Diagnose prüft Hardwarekomponenten.
Mac mit Apple-Chip:
- Mac ausschalten.
- Nicht benötigte externe Geräte trennen.
- Ein-/Ausschalter gedrückt halten, bis die Startoptionen erscheinen.
- Befehlstaste und
Dgedrückt halten, bis der Mac neu startet. - Diagnoseanweisungen befolgen.
- angezeigte Referenzcodes dokumentieren.
Intel-Mac:
- Mac einschalten.
- Sofort
Dgedrückt halten. - Falls erforderlich, beim Start
Option-Dverwenden. - Diagnoseanweisungen befolgen.
- Referenzcodes dokumentieren.
Die macOS-Wiederherstellung wird benötigt, wenn beispielsweise das Startvolume nicht im laufenden System repariert werden kann.
- Apple-Chip: Ein-/Ausschalter bis zu den Startoptionen gedrückt halten und „Optionen“ auswählen.
- Intel-Mac: beim Einschalten
Command-Rgedrückt halten.
Eine erfolgreiche Apple Diagnose schließt nicht jede denkbare Hardwarestörung aus. Sporadische Fehler, Kabelprobleme oder externe Geräte müssen weiterhin durch Kreuztests untersucht werden.
8.5.26 Systematischer Diagnoseablauf
-
Störung aufnehmen
Benutzer, App, Funktion, Zeitpunkt, Häufigkeit und genaue Meldung erfassen. -
Umfang bestimmen
Eine App, ein Benutzer, alle Benutzer oder der gesamte Mac? -
Basiszustand sichern
macOS-Version, Build, Architektur, Laufzeit, Installationshistorie und Speicherplatz dokumentieren. -
Fehler reproduzieren
Zeitpunkt notieren und nur den erforderlichen Ablauf ausführen. -
Prozess prüfen
Existenz, Benutzer, Elternprozess, Zustand, CPU, Speicher und offene Dateien untersuchen. -
Dienstzuordnung prüfen
Richtigeslaunchd-Label und richtigen Bereich bestimmen. -
Protokolle korrelieren
Meldungen unmittelbar vor, während und nach dem Fehler auswerten. -
Ressourcen untersuchen
CPU, Speicherdruck, Swap, Datenträgerbelegung und I/O messen. -
Zugriff prüfen
Unix-Berechtigungen, ACLs, TCC-Freigaben und App-Signatur unterscheiden. -
Abhängigkeiten prüfen
Netzwerk, DNS, Server, API, Freigabe, Cloud-Dienst oder externes Gerät kontrollieren. -
Fehlerdomäne isolieren
Anderer Benutzer, sicherer Modus, getrennte Peripherie oder Wiederherstellung verwenden. -
Hypothese formulieren
Erwartetes Prüfergebnis und Gegenbeweis festlegen. -
Eine kontrollierte Maßnahme durchführen
Risiko, Rückweg und Messkriterium dokumentieren. -
Ursprüngliche Funktion verifizieren
Nicht nur den Prozessstatus, sondern den realen Benutzerablauf testen. -
Nachkontrolle durchführen
Protokolle und Ressourcen erneut prüfen sowie Rückfall ausschließen.
8.5.27 Befundmatrix
| Befund | Mögliche Erklärung | Nächster Nachweis |
|---|---|---|
| App-Prozess fehlt | App wurde nicht gestartet oder beendet sich sofort | Absturzbericht und zeitlich passende Logs prüfen |
| Prozess läuft, App reagiert nicht | Thread blockiert oder wartet auf Ressource | Prozessanalyse oder Spindump erstellen |
Dienstlabel im system-Bereich nicht gefunden |
Falsches Label, falscher Bereich oder Dienst nicht geladen | Property-List und tatsächliches Label prüfen |
Agent fehlt im gui/<UID>-Bereich |
Falscher Benutzer oder keine grafische Sitzung | UID und Anmeldesitzung prüfen |
| Dienst besitzt keine PID | On-Demand-Zustand oder Startfehler | Auslöser betätigen und Logs beobachten |
| Hohe CPU bei einem Prozess | Schleife, hohe Last oder fehlerhafte Verarbeitung | Mehrfach messen und Prozess analysieren |
| Niedrige CPU, App trotzdem langsam | Warten auf I/O, Netzwerk oder Sperre | fs_usage, Netzwerk und Prozessanalyse |
| Speicherdruck Gelb oder Rot | Speicherengpass | Speicherverbrauch und zeitliche Entwicklung prüfen |
| Swap wächst während der Störung | Arbeitsspeicher reicht für aktuelle Last nicht aus | verursachende Prozesse bestimmen |
| Startvolume fast voll | Apps, Updates, Logs und Swap beeinträchtigt | große Verzeichnisse und Snapshots prüfen |
| Viele lokale Snapshots | Speicher wird durch Snapshots mitbelegt | Time-Machine-Zustand und Richtlinie prüfen |
| Unix-Rechte korrekt, Zugriff trotzdem verweigert | TCC- oder Sandbox-Einschränkung | Datenschutzfreigabe der richtigen App prüfen |
| Signaturprüfung schlägt fehl | App beschädigt oder verändert | Originaldatei des Herstellers vergleichen |
| Nur ein Benutzer betroffen | Benutzerprofil, LaunchAgent oder TCC | anderes Benutzerkonto als Kreuztest |
| Fehler verschwindet im sicheren Modus | zusätzliche Software beteiligt | Drittanbieterkomponenten einzeln prüfen |
| Kernel-Panics treten wiederholt auf | Treiber-, Erweiterungs- oder Hardwareproblem | Panic-Berichte, Peripherietest und Apple Diagnose |
| Prozess und Port sind vorhanden, Funktion scheitert | Abhängigkeit oder Anwendungsebene fehlerhaft | vollständigen Benutzerpfad Ende zu Ende prüfen |
8.5.28 Mögliche Ursachen und erforderliche Nachweise
| Mögliche Ursache | Erforderlicher Nachweis |
|---|---|
| Fehlerhafte App-Konfiguration | Fehler ist mit gesicherter Standardkonfiguration reproduzierbar beziehungsweise verschwindet kontrolliert ohne diese Konfiguration |
| Beschädigte App-Installation | Signatur- oder Integritätsprüfung schlägt fehl und eine unveränderte Herstellerinstallation funktioniert |
| Fehlerhafter LaunchAgent | Fehler tritt nur im zugehörigen Benutzerkontext auf und verschwindet nach kontrollierter Deaktivierung |
| Fehlerhafter LaunchDaemon | Systemweiter Fehler korreliert mit Dienststatus, Logs und reproduzierbarem Neustartverhalten |
| CPU-Engpass | CPU ist während der Störung dauerhaft ausgelastet und der verursachende Prozess ist bestimmt |
| Speicherengpass | Speicherdruck und Swap wachsen während der reproduzierten Störung |
| Voller Datenträger | Freier Speicher ist kritisch niedrig und die Funktion arbeitet nach kontrollierter Freigabe wieder |
| APFS- oder Dateisystemfehler | diskutil, Erste Hilfe oder Systemprotokolle melden konkrete Fehler |
| Berechtigungsfehler | Zugriff scheitert mit konkretem Berechtigungsbefund und funktioniert nach minimaler Korrektur |
| TCC-Verweigerung | Benötigte Datenschutzfreigabe fehlt und die Funktion arbeitet nach gezielter Freigabe |
| Netzwerkabhängigkeit | Lokaler Prozess arbeitet, aber DNS, Verbindung oder Zielsystem scheitert reproduzierbar |
| Drittanbietererweiterung | Fehler verschwindet im sicheren Modus und kehrt mit der einzeln aktivierten Erweiterung zurück |
| Hardwarefehler | Apple Diagnose, wiederkehrende Panic-Berichte oder unabhängige Kreuztests belegen den Fehler |
8.5.29 Kontrollierte Maßnahmen, Risiko und Rückweg
| Maßnahme | Risiko | Rückweg |
|---|---|---|
| App regulär beenden und neu öffnen | Nicht gespeicherte Daten | App erneut starten und gesicherte Daten öffnen |
Prozess mit SIGTERM beenden |
Funktionsunterbrechung | App oder Dienst kontrolliert neu starten |
Drittanbieterdienst mit kickstart neu starten |
Kurzzeitiger Dienstausfall | dokumentierten Ausgangszustand und Konfiguration wiederherstellen |
| Anmeldeobjekt vorübergehend deaktivieren | Funktion steht nach Anmeldung nicht bereit | Eintrag anhand der gesicherten Liste wieder aktivieren |
| TCC-Freigabe gezielt erteilen | zusätzlicher Datenzugriff | Freigabe nach Test wieder entziehen |
| Drittanbieter-App aktualisieren | neue Version kann Konfiguration verändern | Installationsdatei und Konfiguration der vorherigen Version sichern |
| App aus Originalquelle neu installieren | lokale App-Bestandteile werden ersetzt | Konfiguration und Benutzerdaten vorher sichern |
| Nicht benötigte Benutzerdaten verschieben | Datei steht am alten Ort nicht mehr bereit | Datei aus dem Sicherungsort zurückverschieben |
| Sicherer Modus | eingeschränkte Funktionen | normal neu starten |
| Erste Hilfe ausführen | zusätzliche Datenträgerbelastung | aktuelles Backup bereithalten; bei Fehler abbrechen und Befund sichern |
| Peripheriegerät trennen | zugehörige Funktion steht nicht bereit | Gerät nach Test wieder anschließen |
Pro Maßnahme darf möglichst nur eine relevante Variable verändert werden.
8.5.30 Verifikation
Nach einer Maßnahme müssen mindestens folgende Prüfungen erfolgen:
- ursprünglicher Benutzerablauf funktioniert vollständig;
- App startet und reagiert;
- benötigter Dienst wird im richtigen Kontext ausgeführt;
- erwartete Datei- und Netzwerkzugriffe funktionieren;
- keine neuen Fehler oder Fault-Meldungen erscheinen;
- CPU-Auslastung normalisiert sich;
- Speicherdruck bleibt im normalen Bereich;
- Swap wächst nicht weiter ungewöhnlich;
- ausreichender Datenträgerspeicher ist vorhanden;
- temporär erteilte Rechte wurden geprüft oder zurückgenommen;
- deaktivierte Sicherheitsfunktionen wurden nicht als Dauerlösung belassen;
- Funktion bleibt nach Ab- und Anmeldung stabil;
- falls relevant, Funktion bleibt nach einem kontrollierten Neustart stabil;
- keine andere Benutzerfunktion wurde beeinträchtigt.
8.5.31 Präventionsmaßnahmen
- macOS und Anwendungen kontrolliert aktuell halten;
- vor Updates Kompatibilität geschäftskritischer Software prüfen;
- ausreichend freien Datenträgerspeicher vorhalten;
- Backups regelmäßig durchführen und Wiederherstellung testen;
- Anmeldeobjekte und Hintergrunddienste dokumentieren;
- nicht mehr benötigte Drittanbietererweiterungen entfernen;
- Datenschutzfreigaben nach dem Minimalprinzip vergeben;
- Installationsquellen und Signaturen prüfen;
- Baseline-Werte für CPU, Speicher, Datenträger und Startzeit erfassen;
- zentrale oder regelmäßige Protokollauswertung für wichtige Systeme einrichten;
- Änderungen mit Zeitpunkt, Version und Rückweg dokumentieren;
- Systemdiagnosen und Protokolle datenschutzgerecht behandeln;
- bei wiederkehrenden Kernel-Panics Hardware und Erweiterungen frühzeitig isolieren.
8.5.32 Typische Fehler bei der Diagnose
- Einen Prozess allein wegen eines hohen Einzelwerts beenden.
- Einen fehlenden PID-Wert automatisch als Dienstfehler interpretieren.
- Einen Agent im
system-Bereich suchen, obwohl er im Benutzerkontext läuft. - Nur nach dem Wort „error“ suchen und Zeit, Prozess oder Subsystem ignorieren.
- Alte Protokollmeldungen mit dem aktuellen Fehler verwechseln.
- Freien RAM als einziges Speicherkriterium verwenden.
- APFS-Container, Volume, Snapshot und physisches Laufwerk gleichsetzen.
- Unix-Berechtigungen und TCC-Freigaben verwechseln.
- Gatekeeper oder SIP zum Testen dauerhaft deaktivieren.
-
chmod -R 777als allgemeine Berechtigungslösung verwenden. - unbekannte Systemdateien oder lokale Snapshots manuell löschen.
- sofort
kill -9verwenden. - nach einem Neustart den vorherigen flüchtigen Zustand nicht mehr rekonstruieren können.
- nur prüfen, ob ein Prozess läuft, statt die ursprüngliche Benutzerfunktion zu testen.
8.5.33 Typische Prüfungsfragen
Warum beweist ein laufender Prozess noch keine funktionierende Anwendung?
Der Prozess kann blockiert sein, auf eine Ressource warten oder eine benötigte Abhängigkeit nicht erreichen. Entscheidend ist die vollständige Benutzerfunktion.
Was ist der Unterschied zwischen einem LaunchDaemon und einem LaunchAgent?
Ein LaunchDaemon arbeitet systemweit. Ein LaunchAgent arbeitet im Kontext eines Benutzers beziehungsweise einer Benutzeranmeldung.
Warum kann ein registrierter launchd-Dienst keine PID besitzen, ohne fehlerhaft zu sein?
Bedarfsgesteuerte Dienste werden möglicherweise erst gestartet, wenn ein definierter Auslöser eintritt.
Warum ist der Speicherdruck aussagekräftiger als nur der freie Arbeitsspeicher?
macOS nutzt freien Speicher unter anderem für Caches und Komprimierung. Der Speicherdruck zeigt besser, ob die Speicherverwaltung die aktuelle Last noch ausreichend bewältigt.
Warum sollte kill -9 nicht als erste Maßnahme verwendet werden?
Der Prozess erhält keine Möglichkeit, Dateien zu schließen, Daten zu speichern oder seinen Zustand geordnet zu bereinigen.
Warum können korrekte Unix-Berechtigungen trotzdem zu einer Zugriffsverweigerung führen?
Zusätzliche macOS-Schutzmechanismen wie TCC können den Zugriff auf Dateien, Geräte oder geschützte Daten verhindern.
Was bedeutet es, wenn ein Fehler im sicheren Modus nicht auftritt?
Zusätzlich geladene Software, Anmeldeobjekte oder Erweiterungen werden wahrscheinlicher. Eine konkrete Ursache ist dadurch noch nicht bewiesen.
Warum müssen Protokolle zeitlich mit der Störung korreliert werden?
Ein System erzeugt auch im Normalbetrieb Warnungen und Fehler. Erst die zeitliche und funktionale Übereinstimmung macht eine Meldung für den konkreten Vorfall relevant.
Warum ersetzt eine erfolgreiche Erste-Hilfe-Prüfung kein Backup?
Die Prüfung schützt nicht vor späterem Hardwareausfall, versehentlichem Löschen oder bereits beschädigten beziehungsweise fehlenden Benutzerdaten.
8.5.34 Checkliste
- Störung und ursprüngliche Benutzerfunktion dokumentiert
- betroffene App, Benutzer und Geräte bestimmt
- Zeitpunkt und Häufigkeit erfasst
- macOS-Version, Build und Architektur gesichert
- letzte Installationen und Änderungen geprüft
- Systemlaufzeit und Neustarts erfasst
- Prozessstatus und Ressourcen gemessen
- Elternprozess und ausführender Benutzer geprüft
- richtiges
launchd-Label bestimmt - richtiger
launchd-Bereich geprüft - Protokolle auf den Fehlerzeitraum begrenzt
- Absturz-, Spin- oder Panic-Berichte geprüft
- CPU-Auslastung mehrfach gemessen
- Speicherdruck und Swap geprüft
- Datenträgerspeicher und APFS-Struktur geprüft
- Snapshots und große Verzeichnisse berücksichtigt
- Unix-Berechtigungen und ACLs geprüft
- TCC-Freigaben getrennt geprüft
- App-Signatur bei Startproblemen geprüft
- Anmeldeobjekte und Systemerweiterungen erfasst
- Netzwerk- und externe Abhängigkeiten geprüft
- Kreuztest mit anderem Benutzer durchgeführt
- sicherer Modus bei Bedarf verwendet
- Hardwarediagnose bei entsprechendem Verdacht durchgeführt
- vor Änderung Risiko und Rückweg dokumentiert
- nur eine kontrollierte Änderung durchgeführt
- ursprüngliche Benutzerfunktion verifiziert
- Protokolle und Ressourcen nachkontrolliert
- temporäre Diagnoseänderungen zurückgenommen
- Ergebnis und Präventionsmaßnahme dokumentiert
8.5.35 Schnellreferenz
| Aufgabe | Befehl oder Werkzeug |
|---|---|
| macOS-Version | sw_vers |
| Prozessorarchitektur | uname -m |
| Systemlaufzeit | uptime |
| Hardware- und Softwarebericht | system_profiler SPHardwareDataType SPSoftwareDataType |
| Prozesse | ps -axo pid,ppid,user,state,%cpu,%mem,etime,command |
| Live-Ressourcen | top oder Aktivitätsanzeige |
| Prozess suchen | pgrep -fl "Prozessname" |
| offene Dateien eines Prozesses | lsof -nP -p 1234 |
| Prozess analysieren | sample 1234 10 -file Bericht.txt |
| Systemweite launchd-Dienste | launchctl print system |
| Benutzer-Agents | launchctl print gui/$(id -u) |
| Property-List prüfen | plutil -lint Datei.plist |
| letzte Protokolle | log show --last 30m |
| Protokolle live | log stream |
| Arbeitsspeicher | vm_stat |
| Swap | sysctl vm.swapusage |
| Speicherbelegung | df -h |
| Datenträgerstruktur | diskutil list |
| APFS-Struktur | diskutil apfs list |
| lokale Snapshots | tmutil listlocalsnapshots / |
| Datenträger-I/O | iostat -w 2 -c 5 |
| Dateiaktivität | sudo fs_usage |
| Berechtigungen und ACLs | ls -ldeO@ Pfad |
| Systemerweiterungen | systemextensionsctl list |
| MDM-Status | profiles status -type enrollment |
| App-Signatur | codesign --verify |
| Gatekeeper-Bewertung | spctl --assess |
| grafische Protokolle | Konsole |
| CPU, Speicher und I/O | Aktivitätsanzeige |
| Dateisystemprüfung | Festplattendienstprogramm |
| Hardwareprüfung | Apple Diagnose |
8.5.36 Quellen
Offizielle Apple-Dokumentation
- Aktivitätsanzeige – Benutzerhandbuch
- Mac-Prozesse in der Aktivitätsanzeige anzeigen
- CPU-Aktivität in der Aktivitätsanzeige anzeigen
- Speichernutzung in der Aktivitätsanzeige anzeigen
- Systemdiagnose in der Aktivitätsanzeige ausführen
- Konsole – Benutzerhandbuch
- Protokollmeldungen in der App „Konsole“ anzeigen
- Berichte in der App „Konsole“ anzeigen
- Speichermedium mit dem Festplattendienstprogramm reparieren
- Mac im sicheren Modus starten
- Apple Diagnose verwenden
- Zugriff auf Dateien und Ordner steuern
- Einstellungen für Datenschutz und Sicherheit
- Anmeldeobjekte und Erweiterungen verwalten
- Systeminformationen über den Mac abrufen
Befehlsreferenzen
Die maßgebliche Befehlsreferenz ist die jeweilige lokale macOS-Manpage:
man launchd
man launchctl
man log
man vm_stat
man diskutil
man fs_usage
man system_profiler
Der folgende Spiegel stellt aus Xcode extrahierte Manpages bereit, ist jedoch keine offizielle Apple-Supportseite. Bei Abweichungen gilt die lokale Manpage der installierten macOS-Version: