From Fedora Project Wiki

Revision as of 16:29, 24 May 2008 by Ravidiip (talk | contribs) (1 revision(s))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sicherheitsmerkmale

Fedora ist führend in vielen Linux-Sicherheitsinitiativen. Die folgenden Sicherheitsmerkmale wurden von Fedora-Ingenieuren entwickelt. Im Einklang mit den Fedora-Regeln wurden diese Merkmale gefördert und sind für alle Linux-Distributionen verfügbar.

SELinux

Fedora ist das erste MAINSTREAM-Betriebssystem, das auf SELinux basierenden MAC (Mandatory Access Control) bietet. Es wurde in Zusammenarbeit mit der NSA sowie Entwicklern von Projekten wie Gentoo und Deban entwickelt. Es schützt Nutzer und Prozesse, indem es alle Aktionen vom Öffnen einer Datei bis zum Verwenden eines Sockets überwacht. Anwender können ihre eigenen SELinux-Sicherheitsregeln passend zur eigenen Risikotoleranz schreiben. Standardmäßig arbeitet Fedora mit der "targeted"-Regel, die die prinzipbedingt höher gefährdeten Netzwerkdienste schützt. Diese Programme werden in ihren Möglichkeiten auf das Notwendigste beschränkt, so dass sie wenig Schaden anrichten können, selbst wenn der Root-Account kompromittiert wurde.

Apache ist beispielsweise auf vier verschiedenen Arten gesichert. Das Programm von Apache, httpd, wurde beim Kompilieren mit PIE und Exec-Shield geschützt. Die ausführbare Datei im Dateisystem wurde mit ELF-Hardening. Zu guter Letzt gibt es noch SELinux-Regeln, so dass ein geknackter httpd nur Daten an Logdateien anhängen oder den Inhalt bestimmter Verzeichnisse verändern kann. Er kann nicht in den Nutzerverzeichnisse herumschwirren oder mit dem Rest des Rest des Systems interagieren.

References:

Exec-Shield

  • No eXecute (NX)

Moderne Prozessoren unterstützen ein Merkmal namens NX, das dem System die Ausführung verschiedener Teile des Speichers steuert. Datenspeicher ist als nicht ausführbar gekennzeichnet und Programmbereiche als nicht schreibbar. Dies hilft Pufferüberläufe zu vermeiden.

Da nicht alle Prozessoren dieses Merkmal unterstützen, wurde versucht, dieses über Segmentlimitierung nachzubilden. Ein Segmentlimit schützt Teile des Speichers vor der Ausführung und ist damit der NX-Technologie sehr ähnlich.

  • Position Independent Executables (PIE)

PIE ist eine Exec-Shield-Technology, die es dem Programmierer erlaubt, die ausführbare Datei bei jedem Start an eine andere Stelle im Hauptspeicher laden zu lassen. Dadurch können Angreifer nicht mehr die Lage des Programms im Speicher vorhersehen, was das Ausnutzen von Lücken sehr erschwert. Nicht alle Pakete in Fedora sind aber als PIE-Programme kompiliert, da dessen Benutzung einiges an zusätzlicher Prozessorlast erzeugt, so dass nur ausgewählte Pakete damit versehen werden.

Anwendungen, die nicht mit PIE kompiliert wurden, haben immer noch ein bisschen zusätzlichen Schutz. Die Verwendung von prelink platziert Binaries und Bibliotheken an bekannten Stellen. Fedora enthält ein Merkmal, dass prelink alle zwei Wochen ausführt, wobei die Speicherorte von Binaries und Bibliotheken zufällig gewählt wird. Mit PIE kompilierte Anwendungen verwenden prelink nicht, alle Speicheradressen werden bei jedem Aufruf zufällig gewählt.

Pufferprüfungen beim Kompilieren (FORTIFY_SOURCE)

GCC-Kompiler und die C-Bibliothek glibc enthalten ab Fedora Core 4 ein Merkmal namens "FORTIFY_SOURCE", einen Teil von Pufferüberläufen erkennt und vermeidet, bevor sie Schaden anrichten können. Die Idee dahinter ist relativ einfach: Wenn der Kompiler die Puffergröße kennt (wenn es ein Puffer mit fester Größe ist oder mit der Funktion malloc() angelegt wurde), kann mit Hilfe von Funktionen das Überlaufen des Puffers verhindert werden.

Referenzen:

http://www.redhat.com/magazine/009jul05/features/execshield/

http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html

ELF (Executable and Linkable Format) Data Hardening

Diese Änderungen an Dateikomponenten schützen die Struktur der Datei selbst.

Referenzen:

http://people.redhat.com/drepper/nonselsec.pdf


Begrenzter Kernel-Speicherzugriff

Fedora schränkt das Überschreiben des Kernelspeichers (/dev/mem) ein und verhindert damit das Funktionieren verschiedener Rootkits, was zu einem sicheren System führt.

Referenzen:

http://lwn.net/Articles/160380/

Stack Smash Protection, Buffer Overflow-Erkennung und Variablen-Neuanordnung

Die gesamte Software der Fedora-Paketsammlung wurde mit einem Sicherheitsmerkmal namens fstack-protector kompiliert. Dieser setzt bei Schlüsselfunktionen ein canary value auf den Stack und prüft diesen vor dem Verwenden dieser Daten. Dieser Wert wird zufällig gewählt und kann unmöglich von anderen erraten werden. Wird ein anderer Wert als der erwartete gefunden, wird die Abarbeitung des Programms gestoppt. Dieses Sicherheitsmerkmal wurde aus dem GCC 4.1 entnommen. Es wurde von Red Hat-Entwicklern entworfen [1] und bietet ähnliche Funktionen wie IBMs propolice/ssp-Patches.

Referenzen:

http://gcc.gnu.org/gcc-4.1/changes.html