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

Tags

Diese Seite weiterempfehlen