Seminarinformationen

Seminar - Ziel

In diesem 4-tägigen Seminar „Security and the Linux Kernel (LFD441)“ stehen die sicherheitsrelevanten Grundlagen des Linux-Kernels im Mittelpunkt. Sie beschäftigen sich mit Aspekten wie Speicher-, Prozess- und Dateisystemsicherheit sowie dem Schutz von Systemaufrufen. Dabei lernen Sie zentrale Sicherheitsmechanismen des Linux-Kernels kennen, darunter Mandatory Access Control (MAC), Linux Security Modules (LSM) und Secure Boot.

Im Verlauf des Seminars sammeln Sie praktische Erfahrungen in der Absicherung sowohl des Userspace als auch des Kernels durch den gezielten Einsatz verschiedener Sicherheitsfunktionen. So entwickeln Sie ein fundiertes Verständnis dafür, wie Sicherheit auf Kernel-Ebene in modernen Linux-Systemen umgesetzt wird.

Teilnehmer - Zielgruppe

  • Systems Programmers
  • Userspace Developers
  • Kernel Engineers

Kurs - Voraussetzungen

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

  • Beherrschen Sie die Programmiersprache C
  • Seien Sie mit grundlegenden Linux (UNIX) Dienstprogrammen wie ls, grep und tar vertraut.
  • Seien Sie mit der Verwendung eines der verfügbaren Texteditoren (z.B. emacs, vi, etc.) vertraut.
  • Erfahrung mit einer großen Linux-Distribution ist hilfreich, aber nicht zwingend erforderlich.
  • Haben Sie Erfahrungen, die der Teilnahme an LFD420: Linux Kernel Internals and Development entsprechen.

Seminardauer

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

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Angriffsflächen reduzieren

  • Warum Sicherheit?
  • Arten der Sicherheit
  • Schwachstellen
  • Schutzschichten
  • Software-Exploits

Kernel-Funktionen

  • Komponenten des Kernels
  • Benutzerbereich vs. Kernelbereich
  • Was sind Systemaufrufe?
  • Verfügbare Systemaufrufe
  • Scheduling-Algorithmen und Aufgabenstrukturen
  • Prozesskontext

Veraltete Schnittstellen im Kernel

  • Warum veraltet
  • __deprecated
  • BUG() und BUG_ON()
  • Berechnete Größen für kmalloc()
  • Die simple_strtol()-Routine-Familie
  • strcpy(), strncpy(), strlcpy()
  • printk() %p-Formatbezeichner
  • Variable Length Arrays
  • Switch Case Fall-Through
  • Null- und Ein-Element-Arrays in Strukturen

Address Space Layout Randomization (ASLR)

  • Warum ASLR?
  • Wie man ASLR verwendet
  • ASLR für spezifische Programme deaktivieren
  • Kernel-Konfiguration
  • Kernel Address Space Layout Randomization (KASLR)
  • Wie KASLR funktioniert
  • KASLR aktivieren

Kernel-Strukturlayout-Randomisierung

  • Vorteile
  • Wie Strukturrandomisierung funktioniert
  • Strukturanfang
  • Opt-in vs. Opt-out
  • Partielle Randomisierung
  • Strukturrandomisierung aktivieren
  • Out-of-tree-Module mit Strukturrandomisierung bauen

Einführung in die Sicherheit des Linux-Kernels

  • Grundlagen der Linux-Kernel-Sicherheit
  • Discretionary Access Control (DAC)
  • POSIX-ACLs
  • POSIX-Fähigkeiten
  • Namespaces
  • Linux Security Modules (LSM)
  • Netfilter
  • Kryptographische Methoden
  • Das Kernel Self Protection Project

CGroups

  • Einführung in CGroups
  • Überblick
  • Komponenten von CGroups
  • cgroup-Initialisierung
  • cgroup-Aktivierung
  • cgroups-Parameter
  • cgroups testen
  • systemd und cgroups

eBPF

  • BPF
  • eBPF
  • Installation
  • bcc-Tools
  • bpftrace

Seccomp

  • Was ist seccomp?
  • Die seccomp-Schnittstelle
  • seccomp-Strikter Modus
  • seccomp-Filtermodus

Secure Boot

  • Warum Secure Boot?
  • Secure Boot x86
  • Secure Boot für eingebettete Systeme

Modul-Signierung

  • Was ist Modul-Signierung?
  • Grundlagen der Signaturen
  • Modul-Signierschlüssel
  • Modul-Signaturüberprüfung aktivieren
  • Wie es funktioniert
  • Module signieren

Integrity Measurement Architecture (IMA)

  • Warum IMA?
  • Konzeptionelle Operationen
  • Betriebsmodi
  • Collect Mode (Sammeln und Speichern)
  • Logging Mode (Bewerten und Auditieren)
  • Enforcing Mode (Bewerten und Schützen)
  • Extended Verification Module (EVM)

DM-Verity

  • Was ist dm-verity?
  • Wie dm-verity funktioniert
  • dm-verity aktivieren
  • Einrichten von dm-verity
  • Verwendung von dm-verity
  • Signieren mit dm-verity
  • Booten mit dm-verity

Verschlüsselte Speicherung

  • Warum verschlüsselte Speicherung?
  • Datenverschlüsselungslösungen
  • Übersicht der Speicher-Verschlüsselungsoptionen
  • Blockverschlüsselung
  • Verwendung der Blockverschlüsselung
  • Dateisystemverschlüsselung
  • Verwendung der Dateisystemverschlüsselung
  • Geschichtete Dateisystemverschlüsselung
  • Verwendung der geschichteten Dateisystemverschlüsselung

Linux Security Modules (LSM)

  • Was sind Linux Security Modules?
  • Grundlagen der LSM
  • LSM-Auswahl
  • Wie LSM funktioniert
  • Ein LSM-Beispiel: Yama

SELinux

  • SELinux
  • SELinux-Übersicht
  • SELinux-Modi
  • SELinux-Richtlinien
  • Kontext-Dienstprogramme
  • SELinux und Standard-Kommandozeilen-Tools
  • SELinux-Kontext-Vererbung und -Bewahrung
  • restorecon
  • semanage fcontext
  • Verwendung von SELinux-Booleans
  • getsebool und setsebool
  • Fehlerbehebungswerkzeuge

AppArmor

  • Was ist AppArmor?
  • Status überprüfen
  • Modi und Profile
  • Profile
  • Dienstprogramme

Yama (LSM)

  • Warum Yama?
  • Yama konfigurieren
  • Wie Yama funktioniert

LoadPin (LSM)

  • Warum LoadPin?
  • LoadPin aktivieren
  • Verwendung von LoadPin
  • Wie LoadPin funktioniert

Lockdown

  • Warum Lockdown?
  • Lockdown-Modi
  • Was wird gesperrt?
  • Wie es funktioniert
  • Einige Hinweise

Safesetid

  • Warum Safesetid?
  • Safesetid konfigurieren
  • Wie Safesetid funktioniert

Netfilter

  • Was ist Netfilter?
  • Netfilter-Hooks
  • Netfilter-Implementierung
  • In Netfilter einhaken
  • Iptables
  • nftables

Netlink-Sockets

  • Was sind Netlink-Sockets?
  • Öffnen eines Netlink-Sockets
  • Netlink-Nachrichten

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 ...

LFS482 Zero Trust Security with SPIFFE and SPIRE

- u.a. in Berlin, Leipzig, Nürnberg, Koblenz, Erfurt

In dieser 3-tägigen Schulung "LFS482 Zero Trust Security mit SPIFFE und SPIRE" liegt der Fokus darauf, die notwendigen Muster und Praktiken für die Einführung von Zero Trust Networking zu diskutieren sowie Implementierungsmodelle, Anwendungsfälle, Szenarien und Ergebnisse, ...

LFD334 WebAssembly in Action: Develop, Deploy, and Debug

- u.a. in Hamburg, Nürnberg, Zürich, Essen, Kassel

In dieser 2-tägigen Schulung "LFD334 WebAssembly in Action: Develop, Deploy, and Debug" lernen Sie die grundlegenden Konzepte von WebAssembly (Wasm) zu verstehen und lernen, wie Sie diese Technologie in verschiedenen Anwendungsbereichen nutzen können. Sie erhalten einen ...