Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 32 Einführung in Computersicherheit
Pfeil 32.1 Sicherheitskonzepte
Pfeil 32.2 Unix und Sicherheit
Pfeil 32.2.1 Benutzer und Rechte
Pfeil 32.2.2 Logging
Pfeil 32.2.3 Netzwerkdienste
Pfeil 32.3 Grundlegende Absicherung
Pfeil 32.3.1 Nach der Installation
Pfeil 32.3.2 Ein einfaches Sicherheitskonzept
Pfeil 32.4 Backups und Datensicherungen
Pfeil 32.4.1 Backup-Strategien
Pfeil 32.4.2 Software
Pfeil 32.5 Updates
Pfeil 32.6 Firewalls
Pfeil 32.6.1 Grundlagen
Pfeil 32.6.2 Firewalling unter Linux: Netfilter/iptables
Pfeil 32.6.3 iptables im Detail
Pfeil 32.7 Proxyserver
Pfeil 32.7.1 Funktion
Pfeil 32.7.2 Einsatz
Pfeil 32.7.3 Beispiel: Squid unter Linux
Pfeil 32.8 Virtuelle private Netzwerke mit OpenVPN
Pfeil 32.8.1 Pre-shared Keys
Pfeil 32.8.2 Zertifikate mit OpenSSL
Pfeil 32.8.3 OpenVPN als Server einrichten
Pfeil 32.8.4 OpenVPN als Client
Pfeil 32.9 Verdeckte Kanäle und Anonymität
Pfeil 32.10 Mails verschlüsseln: PGP und S/MIME
Pfeil 32.10.1 PGP/GPG
Pfeil 32.10.2 S/MIME
Pfeil 32.11 Trojanische Pferde
Pfeil 32.12 Logging
Pfeil 32.13 Partitionierungen
Pfeil 32.14 Restricted Shells
Pfeil 32.15 Loadable Kernel Modules
Pfeil 32.16 chroot
Pfeil 32.17 Kernel-Erweiterungen und ProPolice
Pfeil 32.17.1 ProPolice
Pfeil 32.17.2 SELinux/SEBSD und AppArmor
Pfeil 32.17.3 Openwall (OWL)
Pfeil 32.17.4 grsecurity
Pfeil 32.17.5 PaX
Pfeil 32.18 Sichere Derivate und Distributionen
Pfeil 32.18.1 Trusted Solaris (jetzt Teil von Solaris)
Pfeil 32.18.2 OpenBSD
Pfeil 32.18.3 TrustedBSD
Pfeil 32.18.4 Hardened Gentoo
Pfeil 32.18.5 Openwall
Pfeil 32.18.6 Fedora Core
Pfeil 32.19 Zusammenfassung
Pfeil 32.20 Aufgaben

Rheinwerk Computing - Zum Seitenanfang

32.17 Kernel-Erweiterungen und ProPoliceZur nächsten Überschrift

Im Folgenden sollen einige interessante Erweiterungen für Linux- und BSD-Kernel besprochen werden. Die einzelnen Erweiterungen werden dabei nur sehr grundlegend behandelt.


Rheinwerk Computing - Zum Seitenanfang

32.17.1 ProPoliceZur nächsten ÜberschriftZur vorigen Überschrift

Bevor wir zu den eigentlichen Kernel-Patches kommen, soll an dieser Stelle noch der sogenannte ProPolice-Patch für den GNU C Compiler (gcc) besprochen werden. Dieses Feature aus dem Hause IBM ist auch als GCC Stack Smashing Protection bekannt.

ProPolice baut verschiedene Schutzmechanismen für den Stack ein, um Angriffe wie Buffer-Overflows zu erschweren.

Zu diesen Features gehört der Schutz der Pointer innerhalb eines Stackframes. Zudem werden lokale Funktionsvariablen (bei einer IA32-Architektur) vor den Puffern platziert. Überschreibt ein Angreifer also einen Puffer, so überschreibt er keine Variablen. Die gesicherte Rücksprungadresse und der Extended Instruction Pointer (EIP) werden ebenfalls vor den Puffern platziert und können somit auch nicht überschrieben werden. Um einen überschriebenen Puffer zu erkennen, wird hinter den Puffern zusätzlich ein Canary-Wert eingefügt (der durch /dev/random mit Zufallswerten arbeitet). Wird dieser Wert verändert, so wird ein Puffer überschrieben, und es steht fest, dass der Stack beschädigt wurde.

Anwendungen mit SSP kompilieren

Um ein Programm nun so zu kompilieren, dass es durch die SSP geschützt wird, übergibt man beim Kompilieren den Parameter -fstack-protector.

Achtung: Im Normalfall werden nur Puffer ab einer Größe von 8 Bytes durch den Patch geschützt. Modifiziert man allerdings den Patch bzw. den Quellcode des GCC, so lässt sich diese Grenze anpassen.

Das folgende Programm soll nun einmal mit und einmal ohne SSP übersetzt werden. Falls mehr Byte übergeben werden, als in dem Puffer »buf« gespeichert werden können, so werden andere Werte auf dem Stack überschrieben. [Fn. Es muss nicht unbedingt eine andere Variable überschrieben werden, da der gcc manchmal mehr Speicher als nötig reserviert.] Wir werden uns den Unterschied einmal ansehen.

Listing 32.18 test.c

#include <string.h>

int main(int argc, char *argv[])
{
char buf[10];

if (argc > 1)
strcpy(buf, argv[1]);
return 0;
}

Listing 32.19 SSP-Test

hikoki:/tmp/ssp> gcc -o test test.c
hikoki:/tmp/ssp> ./test abcdefffffffffffffffffffffffff
Segmentation fault

hikoki:/tmp/ssp> gcc -o test -fstack-protector test.c
hikoki:/tmp/ssp> ./test abcdefffffffffffffffffffffffff
*** stack smashing detected ***: ./test terminated

Abort
hikoki:/tmp/ssp>

Rheinwerk Computing - Zum Seitenanfang

32.17.2 SELinux/SEBSD und AppArmorZur nächsten ÜberschriftZur vorigen Überschrift

Beim SELinux-Projekt (Security enchanged Linux) handelt es sich um eine Erweiterung des Linux-Kernels (inklusive einiger Programme) zur Verbesserung der Sicherheit. Das Projekt wird von der NSA und von Red Hat entwickelt. SELinux bietet Mandatory Access Control (MAC) für Linux; dabei handelt es sich um die Möglichkeit, Regeln für den Zugriff auf Systemressourcen zu erstellen, die unabhängig vom Benutzer und vom Prozess sind. SELinux ist in fast allen populären Distributionen integriert, wird jedoch wegen seiner Komplexität auch kritisiert. In der BSD-Welt steht mit SEBSD eine SeLinux-Portierung auf FreeBSD bereit, die mit dem MAC- Framework TrustedBSD lauffähig ist.

AppArmor wurde von der Firma Immunix entwickelt, die mittlerweile von Novell übernommen wurden. Im Gegensatz zu SELinux lassen sich mit AppArmor (das sich ebenfalls in diversen populären Distributionen findet) Regeln gezielt für einzelne Prozesse definieren.


Rheinwerk Computing - Zum Seitenanfang

32.17.3 Openwall (OWL)Zur nächsten ÜberschriftZur vorigen Überschrift

Das Openwall-Projekt ist Bestandteil vieler gehärteter Linux-Distributionen. Die Funktionalität von Openwall werden teilweise auch von anderen Kernel-Patches unterstützt (besonders von grsecurity/PaX).

Zu den Features gehört eine Stack-Härtung: Der Stack eines Programms kann oft durch Buffer-Overflow-Exploits angegriffen werden, wozu er ausführbar sein muss. Openwall unterbindet diese Möglichkeit.

Die Links und FIFOs im Verzeichnis /tmp und der Zugriff auf /proc werden ebenfalls durch OWL gehärtet.

Weitere Features sind die RLIMIT_NPROC-Überprüfung für den Syscall execve() und das Löschen von nicht verwendeten Shared Memory Pages im Speicher. [Fn. RLIMIT_NPROC gibt die Anzahl der Prozesse an, die ein Benutzer maximal gleichzeitig laufen lassen kann. Shared Memory ist eine Art der Interprozesskommunikation (IPC).]


Rheinwerk Computing - Zum Seitenanfang

32.17.4 grsecurityZur nächsten ÜberschriftZur vorigen Überschrift

Bei grsecurity handelt es sich um einen sehr umfangreichen Kernel-Patch plus Administrationstools. grsecurity implementiert diverse Features, die auch Openwall kennt (FIFO-Restrictions etc.), Rule Set Based Access Control (RSBAC), zufällige Prozess-IDs, chdir()-Hardening, Unterstützung für zufällige TCP-Quell-Ports, Logging von Signalen, Zugriffsbeschränkungen auf /dev/kmem und /dev/mem sowie das komplette PaX-Projekt, das wir im folgenden Abschnitt besprechen werden.

Eine ausführliche Auflistung der aktuellen Features erhalten Sie auf der Seite http://www.grsecurity.net/features.php.


Rheinwerk Computing - Zum Seitenanfang

32.17.5 PaXZur vorigen Überschrift

PaX (Page exec) ist ein Kernel-Patch zur Absicherung von Speicherseiten. Das Primärziel ist die Verhinderung erfolgreicher Stack-Smashing-Angriffe (die so genannte Stack Smashing Protection), die nicht mit dem ProPolice-Patch des GCC zu verwechseln ist. Zu diesem Zweck wurde eine Executable Space Protection implementiert, die – vereinfacht gesagt – verhindern soll, dass es zur Ausführung von Shellcode und zu erfolgreichen Return-to-Libc-Angriffen kommt. [Fn. Dieses Thema ist sehr umfassend und es wird leider wesentlich mehr Security- und Kernel-Know-how zum Verständnis von PaX benötigt, als wir Ihnen hier bieten können.]

PaX erreicht das Ziel durch zwei Techniken:

  1. Nicht ausführbare Speicherseiten
    Eingeschleuster Code, der zur Ausführung gebracht werden soll, muss sich innerhalb von Speicherseiten (Pages) befinden, denen das Ausführen von Programmcode erlaubt ist. Sind diese Seiten nicht ausführbar, so wird auch der Code nicht ausgeführt.
  2. Zufällige Speicheradressen
    Wenn ein Angreifer versucht, eine bestimmte Funktion im Speicher aufzurufen, obwohl dies nicht geplant ist, so wird dazu die Speicheradresse dieser Funktion benötigt. Durch die sogenannte Address Space Layout Randomzation wählt PaX diese Adressen bei jedem Programmstart neu und erschwert so das Erraten der Adresse einer Funktion.

Wir möchten nicht verschweigen, dass es noch weitere ähnliche Projekte gibt (z. B. W{}X unter OpenBSD oder Exec Shield bei Fedora Linux).



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de