Das Seminar "LFD440 Linux Kernel Debugging and Security" ist seitens des Herstellers nicht mehr verfügbar, bzw. abgekündigt. Wir können Ihnen diese Schulung in Form eines Workshops in Ihrem Unternehmen oder in unserem Schulungszentrum anbieten.

Seminarinformationen

Seminar - Ziel

In dieser 4-tägigen Schulung "LFD440 Linux Kernel Debugging and Security" gewinnen Sie ein tiefes Verständnis für die grundlegenden Methoden und die interne Infrastruktur des Linux-Kernels. Der Kurs vermittelt sowohl theoretische Grundlagen als auch praktische Einblicke. Sie werden in die wichtigen Tools eingeführt, die für das Debugging und Monitoring des Kernels genutzt werden.

Teilnehmer - Zielgruppe

  • Programmierer

Kurs - Voraussetzungen

Für eine optimale Teilnahme am Kurs empfehlen wir folgende Vorkenntnisse:

  • 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)

Seminardauer

  • 4 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / 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

Kernel-Architektur I

  • UNIX und Linux **
  • Monolithische und Mikro-Kernel
  • Objekt-orientierte Methoden
  • Hauptkomponenten des Kernels
  • User-Space und Kernel-Space

Kernel-Programmierung Vorschau

  • Error Numbers und Kernel Output
  • Task-Struktur
  • Speicherzuweisung
  • Übertragung von Daten zwischen Benutzer- und Kernelbereich
  • Objektorientierte Vererbung - eine Art von Vererbung
  • Verknüpfte Listen
  • Jiffies

Module

  • Was sind Module?
  • Module kompilieren
  • Module vs. Built-in
  • Modul-Dienstprogramme
  • Automatisches Laden von Modulen
  • Zählung der Modulverwendung
  • Modul-Lizenzierung
  • Exportieren von Symbolen
  • Auflösen von Symbolen **

Kernel-Architektur II

  • Prozesse, Threads und Tasks
  • Kernel-Präemption
  • Echtzeit-Präemptions-Patch

Kernel Konfiguration und Kompilierung

  • Installation und Layout des Kernel-Source
  • Kernel-Browser
  • Kernel-Konfigurationsdateien
  • Kernel-Erstellung und Makefiles
  • initrd und initramfs

Kernel Style und allgemeine Überlegungen

  • Coding-Style
  • Verwendung generischer Kernel-Routinen und -Methoden
  • Einen Kernel-Patch erstellen
  • sparse
  • Verwendung von likely() und unlikely()
  • Schreiben von portierbarem Code, CPU, 32/64-bit, Endianness
  • Schreiben für SMP
  • Schreiben für Systeme mit hohem Speicherbedarf
  • Energie-Management
  • Sicherheit

Race Conditions und Synchronisationsmethoden

  • Gleichzeitigkeit und Synchronisationsmethoden
  • Atomare Operationen
  • Bit-Operationen
  • Spinlocks
  • Seqlocks
  • Deaktivierung der Vorkaufsrechte
  • Mutexe
  • Semaphoren
  • Vervollständigungsfunktionen
  • Read-Copy-Update (RCU)
  • Referenz-Counts

Speicher-Adressierung

  • Virtuelle Speicherverwaltung
  • Systeme mit und ohne MMU und TLB
  • Speicheradressen
  • Hoher und niedriger Speicher
  • Speicher-Zonen
  • Spezielle Device Nodes
  • NUMA
  • Paging
  • Seitentabellen
  • Seitenstruktur

Speicher-Zuweisung

  • Anfordern und Freigeben von Seiten
  • Buddy-System
  • Slabs und Cache-Zuteilungen
  • Speicherpools
  • kmalloc()
  • vmalloc()
  • Frühe Zuweisungen und bootmem()
  • Speicher-Defragmentierung

Weitere Schulungen zu Thema Linux Foundation

LFD459 Kubernetes für App-Entwickler

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...

LFS458 Kubernetes Administration

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...

LFD401 Entwicklung von Anwendungen für Linux

- u.a. in Berlin, Bremen, Hamburg, Köln, Mannheim

In dieser 5-tägigen Schulung "LFD401 Entwicklung von Anwendungen für Linux" erwerben Sie die Fähigkeiten zur Entwicklung von Anwendungen für Linux-Systeme. Dieser Kurs bietet praxisnahe Erfahrungen mit den notwendigen Werkzeugen und Methoden zur Entwicklung von ...

Certified Kubernetes Administrator (CKA)

- u.a. in Berlin, Dresden, Erfurt, Offenbach, Marburg

In diesem 4-tägigen Seminar „Certified Kubernetes Administrator (CKA)“ erwerben Sie das erforderliche Fachwissen, um die Tätigkeiten eines Kubernetes Administrators erfolgreich auszuführen, und erhalten das CKA-Zertifikat als Bestätigung Ihrer Kompetenz. Der Kurs LFS458 ...