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

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

Download:
- ZIP, ca. 15,7 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Pl&ouml;tner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
geb., mit 2 DVDs
1302 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1704-0
Pfeil 32 Einführung in die Sicherheit
  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 Die Backup-Strategie
    Pfeil 32.4.2 Die 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.9.1 Anonymität und tor
  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.12.1 Bei der Analyse Zeit sparen
  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 gcc-propolice
    Pfeil 32.17.1 gcc 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


Galileo Computing - Zum Seitenanfang

32.17 Kernel-Erweiterungen und gcc-propolice  Zur nächsten ÜberschriftZur vorigen Überschrift

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


Galileo Computing - Zum Seitenanfang

32.17.1 gcc propolice  Zur 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.

Die ProPolice Extension 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 einer Stackframe. Zudem werden lokale Funktionsvariablen (bei einer IA32-Architektur) vor den Buffern platziert. Überschreibt ein Angreifer also einen Buffer, so überschreibt er nicht die Variablen. Die gesicherte Rücksprungadresse und der Extendend Instruction Pointer (EIP) werden ebenfalls vor den Buffern platziert und können somit nicht mehr überschrieben werden. Um einen überschriebenen Buffer zu erkennen, wird hinter den Buffern zusätzlich ein Canary-Wert eingefügt (der durch /dev/random mit Zufallswerten arbeitet). Wird dieser Canary-Wert verändert, so wird ein Buffer überschrieben, und es steht fest, dass der Stack beschädigt wurde.


In neueren Versionen des Compilers ist der ProPolice-Patch bereits enthalten. Im Folgenden zeigen wir Ihnen dennoch kurz die Vorgehensweise zur Erstellung des gcc-3.x mit dem Patch.


Die Installation des Patches erfolgt von Hand, wenn Sie nicht gerade eine Distribution benutzen, die bereits den modifizierten gcc verwendet, etwa OpenBSD. Die benötigten Patches finden Sie unter www.trl.ibm.com/projects/security/ssp/.

Im Folgenden wird der gcc auf dieselbe Weise wie früher bei Hardened Linux modifiziert. Verwendet wird dabei die Version 3.4.4.

$ tar -xf gcc-3.4.4.tar.gz
$ cd gcc-3.4.4
$ patch -p0 < ../gcc_3_4_4.dif
$ tar -xzvf ../protector-3.4.4-1.tar.gz
$ mkdir obj && cd obj
$ ../configure --prefix=/usr
$ make bootstrap
$ make install

Listing 32.17  gcc mit Stack Smashing Protection bauen

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 Buffer 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 Buffer »buf« gespeichert werden können, so werden andere Werte auf dem Stack überschrieben. [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.

#include <string.h>
int main(int argc, char *argv[])
{
char buf[10];
       if (argc > 1)
strcpy(buf, argv[1]);
return 0;
}
[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>

Listing 32.18  test.c


Galileo Computing - Zum Seitenanfang

32.17.2 SeLinux/SeBSD und AppArmor  Zur 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 RedHat 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 TrustedBSD MAC Framework 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.


Galileo 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äten 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 der Stack 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. [RLIMIT_NPROC gibt die Anzahl der Prozesse an, die ein Benutzer maximal gleichzeitig laufen lassen kann. Shared Memory ist eine Art der Interprozesskommunikation (IPC).]


Galileo Computing - Zum Seitenanfang

32.17.4 grsecurity  Zur 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.


Galileo Computing - Zum Seitenanfang

32.17.5 PaX  topZur vorigen Überschrift

PaX (Page exec) ist ein Kernel-Patch zur Absicherung von Speicherseiten. Das Primärziel ist die Verhinderung von erfolgreichen Stack-Smashing-Angriffen (die sogenannte 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. [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 es 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 ExecShield bei Fedora Linux).




Ihr Kommentar

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






 <<   zurück
  Zum Katalog
Zum Katalog: Linux, Ausgabe 2011






Linux, Ausgabe 2011
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de