LFD440 Linux Kernel Debugging and Security
Classroom Schulung | Deutsch | Anspruch
Schulungsdauer: 4 Tage
Ziele
Lernen Sie die grundlegenden Methoden und die interne Infrastruktur des Linux-Kernels kennen, indem Sie sowohl die theoretischen als auch die praktischen Underpinnings verstehen. Lassen Sie sich einführen in die wichtigen Werkzeuge, die zum Debugging und Monitoring des Kernels genutzt werden.
Zielgruppe
Programmierer
Voraussetzungen
- Erfahrung in der C-Programmierung
- Vertrautheit mit den grundlegenden Linux (UNIX) Dienstprogrammen wie ls, grep und tar
- Erste Erfahrungen mit Text-Editoren (z. B. emacs, vi, etc.)
- Erfahrung mit einer großen Linux Distribution (von Vorteil)
Agenda
Kernel-Merkmale
- Komponenten des Kernels
- Anwenderbereich vs. Kernel-Bereich
- Was sind Systemaufrufe?
- Verfügbare Systemaufrufe
- Zeitplanungsalgorithmen und Task-Strukturen
- Prozess-Kontext
Überwachung und Fehlersuche
- Debuginfo-Package
- Tracing und Profiling
- sysctl
- SysRq-Schlüssel
- oops-Meldungen
- Kernel-Debugger
- debugfs
Das proc-Dateisystem
- Einträge erstellen und entfernen
- Einträge lesen und schreiben
- Die seq-Dateischnittstelle
kprobes
- kprobes
- kretprobes
- SystemTap
Ftrace
- ftrace, trace-cmd und kernelshark
- Verfügbare Tracer
- Verwendung von ftrace
- Dateien im Tracing-Verzeichnis
- Tracing-Optionen
- Drucken mit trace printk()
- Trace-Markierungen
- Dumpen des Puffers
- trace-cmd
Perf
- Perf-Statistik
- Perf-Liste
- Perf-Aufzeichnung
- Perf-Bericht
- perf kommentieren
- perf spitze
eBPF
- BFP
- eBPF
- Installation
- bcc Werkzeuge
- bpftrace
Absturz
- Haupt-Befehle
Kernel-Core-Dumps
- Erzeugung von Kernel-Core-Dumps
- kexec
- Einrichten von Kernel Core Dumps
Virtualisierung
- Bereiche der Virtualisierung
- Hypervisoren
QEMU
- Was ist QEMU?
- Simulierte Architekturen
- Bildformate
- Einbindung von Drittanbieter-Hypervisoren
Linux-Kernel-Debugging-Werkzeuge
- Linux-Kernel (eingebaute) Werkzeuge und Hilfsmittel
- kdb
- qemu+gdb
- kgdb: Hardware+seriell+gdb
Embedded Linux
- Embedded- und Real Time Betriebssysteme
- Erstellung einer kleinen Linux-Umgebung
- Real Time Linuxe
Notifiers
- Daten-Strukturen
- Rückrufe und Benachrichtigungen
- Melderketten erstellen
CPU-Frequenz-Skalierung
- Was ist Frequenz- und Spannungsskalierung?
- Melder
- Treiber
- Regler
Netlink Sockets
- netlink Socket öffnen
- netlink-Nachrichten
Einführung in die Sicherheit des Linux-Kernels
- Grundlagen der Linux-Kernel-Sicherheit
- Diskretionäre Zugriffskontrolle (DAC)
- POSIX ACLs
- POSIX-Fähigkeiten
- Namensräume (Namespaces)
- Linux Sicherheitsmodule (LSM)
- Netfilter
- Kryptographische Methoden
- Das Kernel-Selbstschutz-Projekt
Linux-Sicherheitsmodule (LSM)
- LSM-Grundlagen
- LSM Auswahlmöglichkeiten
- Arbeitsweise von LSM
- Ein LSM-Beispiel: Tomoyo
SELinux
- SELinux-Übersicht
- SELinux-Modi
- SELinux-Richtlinien
- Kontext-Dienstprogramme
- SELinux und Standard-Kommandozeilenwerkzeuge
- SELinux-Kontext-Vererbung und -Erhaltung**
- restorecon**
- semanage fcontext**
- SELinux-Boleans verwenden**
- getsebool und setsebool**
- Werkzeuge zur Fehlerbehebung
AppArmor
- Prüfen des Status
- Modi und Profile
- Profile
- Dienstprogramme
Netzfilter
- Netfilter-Haken
- Netfilter-Implementierung
- Einhaken in Netfilter
- Iptables
Das virtuelle Dateisystem
- Verfügbare Dateisysteme
- Spezielle Dateisysteme
- Das tmpfs-Dateisystem
- Das ext2/ext3-Dateisystem
- Das ext4-Dateisystem
- Das btrfs-Dateisystem
- Allgemeines Dateimodell
- VFS-Systemaufrufe
- Dateien und Prozesse
- Einbindung von Dateisystemen
Dateisysteme im Userspace (FUSE)
- Schreiben eines Dateisystems
Journaling-Dateisysteme
- Verfügbare Journaling-Dateisysteme
- Gegensätzliche Merkmale
Ziele
Lernen Sie die grundlegenden Methoden und die interne Infrastruktur des Linux-Kernels kennen, indem Sie sowohl die theoretischen als auch die praktischen Underpinnings verstehen. Lassen Sie sich einführen in die wichtigen Werkzeuge, die zum Debugging und Monitoring des Kernels genutzt werden.
Zielgruppe
Programmierer
Voraussetzungen
- Erfahrung in der C-Programmierung
- Vertrautheit mit den grundlegenden Linux (UNIX) Dienstprogrammen wie ls, grep und tar
- Erste Erfahrungen mit Text-Editoren (z. B. emacs, vi, etc.)
- Erfahrung mit einer großen Linux Distribution (von Vorteil)
Agenda
Kernel-Merkmale
- Komponenten des Kernels
- Anwenderbereich vs. Kernel-Bereich
- Was sind Systemaufrufe?
- Verfügbare Systemaufrufe
- Zeitplanungsalgorithmen und Task-Strukturen
- Prozess-Kontext
Überwachung und Fehlersuche
- Debuginfo-Package
- Tracing und Profiling
- sysctl
- SysRq-Schlüssel
- oops-Meldungen
- Kernel-Debugger
- debugfs
Das proc-Dateisystem
- Einträge erstellen und entfernen
- Einträge lesen und schreiben
- Die seq-Dateischnittstelle
kprobes
- kprobes
- kretprobes
- SystemTap
Ftrace
- ftrace, trace-cmd und kernelshark
- Verfügbare Tracer
- Verwendung von ftrace
- Dateien im Tracing-Verzeichnis
- Tracing-Optionen
- Drucken mit trace printk()
- Trace-Markierungen
- Dumpen des Puffers
- trace-cmd
Perf
- Perf-Statistik
- Perf-Liste
- Perf-Aufzeichnung
- Perf-Bericht
- perf kommentieren
- perf spitze
eBPF
- BFP
- eBPF
- Installation
- bcc Werkzeuge
- bpftrace
Absturz
- Haupt-Befehle
Kernel-Core-Dumps
- Erzeugung von Kernel-Core-Dumps
- kexec
- Einrichten von Kernel Core Dumps
Virtualisierung
- Bereiche der Virtualisierung
- Hypervisoren
QEMU
- Was ist QEMU?
- Simulierte Architekturen
- Bildformate
- Einbindung von Drittanbieter-Hypervisoren
Linux-Kernel-Debugging-Werkzeuge
- Linux-Kernel (eingebaute) Werkzeuge und Hilfsmittel
- kdb
- qemu+gdb
- kgdb: Hardware+seriell+gdb
Embedded Linux
- Embedded- und Real Time Betriebssysteme
- Erstellung einer kleinen Linux-Umgebung
- Real Time Linuxe
Notifiers
- Daten-Strukturen
- Rückrufe und Benachrichtigungen
- Melderketten erstellen
CPU-Frequenz-Skalierung
- Was ist Frequenz- und Spannungsskalierung?
- Melder
- Treiber
- Regler
Netlink Sockets
- netlink Socket öffnen
- netlink-Nachrichten
Einführung in die Sicherheit des Linux-Kernels
- Grundlagen der Linux-Kernel-Sicherheit
- Diskretionäre Zugriffskontrolle (DAC)
- POSIX ACLs
- POSIX-Fähigkeiten
- Namensräume (Namespaces)
- Linux Sicherheitsmodule (LSM)
- Netfilter
- Kryptographische Methoden
- Das Kernel-Selbstschutz-Projekt
Linux-Sicherheitsmodule (LSM)
- LSM-Grundlagen
- LSM Auswahlmöglichkeiten
- Arbeitsweise von LSM
- Ein LSM-Beispiel: Tomoyo
SELinux
- SELinux-Übersicht
- SELinux-Modi
- SELinux-Richtlinien
- Kontext-Dienstprogramme
- SELinux und Standard-Kommandozeilenwerkzeuge
- SELinux-Kontext-Vererbung und -Erhaltung**
- restorecon**
- semanage fcontext**
- SELinux-Boleans verwenden**
- getsebool und setsebool**
- Werkzeuge zur Fehlerbehebung
AppArmor
- Prüfen des Status
- Modi und Profile
- Profile
- Dienstprogramme
Netzfilter
- Netfilter-Haken
- Netfilter-Implementierung
- Einhaken in Netfilter
- Iptables
Das virtuelle Dateisystem
- Verfügbare Dateisysteme
- Spezielle Dateisysteme
- Das tmpfs-Dateisystem
- Das ext2/ext3-Dateisystem
- Das ext4-Dateisystem
- Das btrfs-Dateisystem
- Allgemeines Dateimodell
- VFS-Systemaufrufe
- Dateien und Prozesse
- Einbindung von Dateisystemen
Dateisysteme im Userspace (FUSE)
- Schreiben eines Dateisystems
Journaling-Dateisysteme
- Verfügbare Journaling-Dateisysteme
- Gegensätzliche Merkmale