Ich habe mich gefragt, ob das gehärtete Profil von Gentoo wirklich sicherer ist als jede andere Distribution (wie Debian, RHEL, Arch … ). Für diejenigen, die es nicht wissen, ermöglicht Gentoo Hardened den systemweiten Aufbau eines Systems mit spezifischen GCC-Optionen für das Härten (pie, ssp, relro, …) und anderen wenigen Dingen (grsec / selinux …).

Ich weiß zum Beispiel, dass Arch Linux nicht alle Binärdateien mit diesen GCC-Härtungsflags erstellt. Bedeutet dies also, dass Sicherheitsbedenken bestehen?

Ich weiß, dass OpenVPN ohne PIE und teilweise erstellt wird relro. Bedeutet dies, dass eine Arch-Installation möglicherweise weniger sicher ist als eine Gentoo-Installation, wenn ein Exploit gegen OpenVPN gefunden wird?

TL; DR: Ist die Verwendung von Gentoo Hardened gegenüber anderen Distributionen ein echter Vorteil? Sicherheitsbedingungen für Binärdateien?

Antwort

Es ist alles in der Quelle! Gentoo gehärtet ist eine sicherheitsgetriebene Distribution, die das gehärtete Profil wirklich unterstützt Packt viel dazu, es wirklich sicher zu machen.

Aber ist es das Kompilieren wert? Eine große Frage in den Linux-Foren.

Schauen wir uns das gehärtete Gentoo-Profil im Hinblick auf die Sicherheit an:

, während es einige Sekunden hinzufügt Es ist so wenig, dass es sich in den meisten Fällen nicht lohnt. Es bietet mehr Sicherheit in einer Binärdistribution, da jeder die gleichen Binärdateien hat und ein Angreifer nicht raten muss, wo ein bestimmter Code geladen werden kann, aber durch Ausführen einer Quelldistribution ist Ihr Adressraum bereits ziemlich einzigartig. Der einzige Fall, in dem Es bietet Sicherheit, wenn ein Angreifer versucht, eine Adresse für einen Exploit zu erraten. Wenn Sie eine falsche Vermutung anstellen, wird der Prozess wahrscheinlich zum Absturz gebracht und auf eine neue Adresse neu geladen. Haben Sie genügend Daten, damit ein Angreifer diese durchgehen kann? Wenn Sie dies tun, sollten Sie ein gehärtetes Profil verwenden, aber physische Sicherheit und Festplattenverschlüsselung sind wichtiger, denn wenn es so viel wert ist, ist es einfacher, Sie einfach auszurauben.

Beachten Sie, dass es kein gehärtetes Desktop-Profil gibt, sodass es allein etwas schwieriger wird, wenn Sie es auf einem Desktop verwenden möchten.

Ein weiterer Grund ist, wenn Sie etwas wie SELinux verwenden möchten (für das kein gehärtetes Profil erforderlich ist), das Ihnen eine sehr genaue Kontrolle über die Zugriffskontrolle bietet, aber auch sehr restriktiv ist. Ich denke, es lohnt sich nur für große Netzwerke mit vielen Benutzern und unterschiedlichem Zugriff auf vertrauliche Daten.

Ich brauchte einige SELinux-Funktionen, entschied mich jedoch dafür, AppArmor auf ungewöhnliche Weise zu verwenden, um sie zu erreichen, weil SELinux Alles, was AppArmor wirklich tut, ist Prozessisolierung oder Sandboxing. Wenn ein Angreifer über einen Exploint Zugriff erhält, kann er nur auf die Dateien zugreifen, auf die der ausgenutzte Dienst Zugriff hat. Ich verwende es mit einem Catch-All-Profil, das Verhindert die Ausführung aus allen beschreibbaren und Home-Verzeichnissen der Welt sowie den Zugriff auf SSH- / PGP-Schlüssel, Schlüsselringe usw. Dies funktioniert gut für Server und Desktops und ist nicht zu restriktiv. Und wenn ich Code aus meinem Home-Verzeichnis für die Entwicklung ausführen muss, kann ich Starten Sie eine uneingeschränkte Shell über sudo. Ich kann meinen Laptop bei geöffnetem Portemonnaie entsperrt lassen (ich verwende das kwallet pam-Modul), und es wird für Sie sehr schwierig sein, etwas wie SSH-Schlüssel oder Passwörter zu erhalten (ich habe auch Patches für kwallet, damit es erfordert einen Passw ord, um gespeicherte Passwörter anzuzeigen), aber die Programme, die sie benötigen, haben Zugriff darauf.

Aber was macht es hart? Schauen wir uns auch einige dieser Elemente an:

  • PaX ist ein Kernel-Patch, der uns vor Stapel- und Heap-Überläufen schützt. PaX verwendet dazu ASLR (Address Space Layout Randomization), das zufällige Speicherorte im Speicher verwendet. Jeder Shellcode muss eine Adresse verwenden, um zu einer darin eingebetteten Adresse zu springen, um die Codeausführung zu erreichen. Da die Adresse des Puffers im Speicher zufällig ausgewählt wird, ist dies viel schwieriger zu erreichen. PaX fügt eine zusätzliche Schutzschicht hinzu, indem die vom Programm verwendeten Daten in einem nicht ausführbaren Speicherbereich gespeichert werden. Dies bedeutet, dass ein Angreifer den Code, den er in den Speicher schreiben konnte, nicht ausführen kann. Um PaX verwenden zu können, müssen wir einen PaX-fähigen Kernel verwenden, z. B. gehärtete Quellen.
  • PIE / PIC (positionsunabhängiger Code): Normalerweise hat eine ausführbare Datei eine feste Basisadresse, an der sie sich befinden geladen sind. Dies ist auch die Adresse, die den RVAs hinzugefügt wird, um die Adresse der Funktionen in der ausführbaren Datei zu berechnen. Wenn die ausführbare Datei mit PIE-Unterstützung kompiliert wird, kann sie an einer beliebigen Stelle im Speicher geladen werden, während sie bei Kompilierung ohne PIE-Unterstützung an einer festen Adresse geladen werden muss. Die PIE muss aktiviert sein, wenn wir PaX verwenden möchten, um die Vorteile von ASLR zu nutzen.
  • RELRO (schreibgeschützt): Wenn wir die ausführbare Datei ausführen, muss das geladene Programm in einige Abschnitte schreiben, die dies nicht tun muss nach dem Start der Anwendung nicht als beschreibbar markiert werden. Solche Abschnitte sind .ctors, .dtors, .jcr, .dynamic und .got [4].Wenn wir diese Abschnitte als schreibgeschützt markieren, kann ein Angreifer bestimmte Angriffe nicht verwenden, die möglicherweise verwendet werden, um die Codeausführung zu erreichen, z. B. das Überschreiben von Einträgen in einer GOT-Tabelle.
  • SSP ( Stack-Smashing Protector) wird im Benutzermodus verwendet; Es schützt vor Stapelüberläufen, indem ein Kanarienvogel auf den Stapel gelegt wird. Wenn ein Angreifer die EIP-Rücksprungadresse auf dem Stapel überlaufen möchte, muss er auch den zufällig ausgewählten Kanarienvogel überlaufen. In diesem Fall kann das System erkennen, dass der Kanarienvogel überschrieben wurde. In diesem Fall wird die Anwendung beendet, sodass ein Angreifer nicht zu einer beliebigen Stelle im Speicher springen und von dort aus Code ausführen kann.
  • RBAC (rollenbasierte Zugriffskontrolle): Beachten Sie, dass RBAC nicht mit RSBAC identisch ist, das wir später vorstellen werden. Der RBAC ist eine Zugriffssteuerung, die von SELinux, Grsecurity usw. verwendet werden kann. Standardmäßig hat der Ersteller einer Datei die vollständige Kontrolle über die Datei, während der RBAC den Root-Benutzer dazu zwingt, die Kontrolle über die Datei zu haben, unabhängig davon, wer sie erstellt hat es. Daher müssen alle Benutzer im System die vom Administrator des Systems festgelegten RBAC-Regeln befolgen.

Zusätzlich können wir die folgenden Zugriffskontrollsysteme verwenden, mit denen der Zugriff zwischen Prozessen und gesteuert wird Objekte. Normalerweise müssen wir eines der unten beschriebenen Systeme auswählen, da jeweils nur eines der Zugriffskontrollsysteme verwendet werden kann. Zu den Zugriffskontrollsystemen gehören:

  • SELinux (sicherheitsverbessertes Linux)
  • AppArmor (Anwendungspanzerung)
  • Grsecurity, die verschiedene Patches enthält, die kann auf den Kernel angewendet werden, um die Sicherheit eines gesamten Systems zu erhöhen. Wenn wir Grsecurity im Kernel aktivieren möchten, müssen wir einen Grsecurity-fähigen Kernel verwenden, der aus gehärteten Quellen besteht.
  • RSBAC (Regelsatz-basierte Zugriffssteuerung): Wir müssen den Kernel rsbac-sources verwenden um einen Kernel mit rsbac-Unterstützung zu erstellen.

Es kommt alles auf die große Frage an, wie bereits erwähnt? Die Kompilierung wert? Kommt es wirklich darauf an, wie oder was Sie sichern und lohnt sich der Aufwand? Oder können Sie wirklich sicherstellen, was neugierige Augen nicht sehen sollen?

Kommentare

  • Okay, danke für die Klarstellung aller diese Technologien zur Durchsetzung der Sicherheit. Wenn ich Ihren Standpunkt verstehe, sind diese Punkte sehr nützlich, um die Sicherheit eines Systems zu verbessern. aber Sie fragen " lohnt sich das Kompilieren? ". Warum sind sie in einigen wichtigen Distributionen nicht standardmäßig aktiviert? Ich habe gelesen, dass PaX auf einem Desktop einige Binärdateien beschädigen kann (von Java oder Firefox gehört). Ist dies der einzige Grund?
  • Der Grund, warum PaX und Sicherheit in vielen Distributionen nicht die Standardeinstellung sind, liegt in der Politik und im Ego. Die Entwickler beider haben Persönlichkeiten, die stark mit dem Linux-Kernel-Entwicklerteam kollidieren. Darüber hinaus möchten sie sich nicht die Zeit nehmen, ihren Patch in Blöcke aufzuteilen, die im Upstream akzeptiert werden, und stattdessen ihre Zeit nutzen, um weitere Sicherheitsfunktionen zu entwickeln.
  • Beachten Sie auch, dass grsecurity dies ist kein Zugangskontrollsystem. Spender (Schöpfer von grsecurity) ist sehr irritiert, wenn Leute es als Zugangskontrollsystem bezeichnen und es dann mit SELinux vergleichen. : P Grsecurity ist eine Kombination von Kernel-Patches, die die Kernel-Sicherheit erhöht, indem Fehlerklassen eliminiert werden. Das RBAC-Zugangskontrollsystem spielt im Vergleich zu den anderen keine Rolle. Die Sicherheitsfunktionen von Grsecurity ' sind so umfangreich, dass sie weitaus mehr Platz beanspruchen würden, als in einem einzelnen Beitrag enthalten sein könnten. Schauen Sie sich grsecurity.net an, um eine ziemlich umfassende Liste zu sehen.
  • Während es etwas Sicherheit hinzufügt, ist ' so wenig, dass es ' ist es in den meisten Fällen nicht wert – Äh, das ist völlig falsch. Und die Sicherheit hat überhaupt nichts mit dem Verstecken von Adressen zu tun. Ich ' bin erstaunt , dass diese Antwort positiv bewertet wurde.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.