Gehärtetes Gentoo (Hardened Gentoo)
Gentoo Hardened ist ein Gentoo Projekt, das mehrere zusätzliche Sicherheitsdienste zusätzlich zur gut bekannten Gentoo Linux Installation bietet. Obwohl jeder Dienst separat ausgewählt werden kann, ermöglicht Gentoo Hardened mehrere Risikominderungs-Optionen in der Toolchain. Unterstützt werden SELinux, TPE und weitere.
Unabhängig davon, ob es sich um einen Server mit Internetzugang oder eine flexible Workstation handelt, kann es beim Umgang mit verschiedenen Bedrohungen von Vorteil sein, das System weiter zu härten, als nur automatisch die neusten Sicherheitspatches anzuwenden. Das "Hardening" eines Systems bedeutet, zusätzliche Gegenmaßnahmen gegen Angriffe und andere Risiken zu ergreifen, und ist in der Regel eine Kombination von Aktivitäten, die auf dem System durchgeführt werden.
In Gentoo Hardened sind mehrere Projekte aktiv, die Ihnen helfen Ihr Gentoo System noch härter zu machen durch ...
- Aktivieren bestimmter Optionen in der Toolchain (Compiler, Linker, ...), wie z.B. das Erzwingen von positionsunabhängigen ausführbaren Dateien (PIE), Stack-Smashing-Schutz und Kompilierzeit-Pufferprüfungen. Siehe die Tabelle.
- Aktivierung der SELinux-Erweiterungen im Linux-Kernel, die ein obligatorisches Zugriffskontrollsystem bieten, das die Standard-Linux-Berechtigungsbeschränkungen erweitert.
- Ermöglichung von Integrity-bezogenen Technologien, wie z.B. Integrity Measurement Architecture, um Systeme widerstandsfähig gegen Manipulationen zu machen.
Selbstverständlich schliesst das die notwendigen Userspace-Dienstprogramme mit ein, um diese Erweiterungen handzuhaben.
Zu einem gehärteten Profil wechseln
Lesen Sie die relevante Dokumentation bevor Sie Profiländerungen vornehmen.
Wählen Sie ein gehärtetes Profil, so dass das Paket Management auf härte Weise gehandhabt wird.
root #
eselect profile list
root #
eselect profile set [Nummer des gehärteten Profils]
root #
source /etc/profile
Durch die Wahl des gehärteten Profils werden bestimmte Paketmanagement-Einstellungen (masks, USE-Flags, etc.) zum Standard für das System. Dies betrifft viele Pakete, eingeschlossen die Toolchain. Die Toolchain wird zum Bau/ zur Kompilierung der Programme verwendet und schließt folgendes ein: Die GNU Compiler Collection (GCC), binutils (linker, etc.) und die GNU C library (glibc). Durch einen re-emerge der Toolchain treten diese neuen Standard-Einstellung für die Toolchain in Kraft. Dies gestattet es alle zukünftigen Paket-Kompilierungen auf gehärtete Weise durchzuführen.
root #
emerge --oneshot sys-devel/gcc
root #
emerge --oneshot sys-devel/binutils sys-libs/glibc
Die obigen Befehle haben GCC neu erstellt, das nun zum Kompilieren von gehärteter Software verwendet werden kann. Vergewissern Sie sich, dass der ausgewählt Compiler die soeben erstellte Version ist:
root #
gcc-config -l
[1] x86_64-pc-linux-gnu-9.3.0 * [2] x86_64-pc-linux-gnu-8.5.0
Sourcen Sie schließlich die neuen Profileinstellungen:
root #
source /etc/profile
Wenn das "prelink" Paket verwendet wird, entfernen Sie es, da es mit dem gehärteten Profil nicht kompatibel ist:
root #
emerge --depclean prelink
Installieren Sie nun alle Pakete mit der neuen gehärteten Toolchain neu:
root #
emerge --emptytree --verbose @world
Installieren Sie die Kernel Quellen:
root #
emerge --ask gentoo-sources
Konfigurieren/kompilieren Sie nun die Quellen und fügen Sie den neuen Kernel in den Bootmanager (z.B. GRUB) ein.
Tipps und Tricks
Paketweise Härtungs-Einstellungen
Diese Methode wird von Gentoo nicht unterstützt und es ist extrem unwahrscheinlich, dass sie heutzutage notwendig ist. Alle großen Distributionen liefern PIE jetzt standardmäßig aus.
Um den Schutz pro Paket zu deaktivieren, verwenden Sie C(XX)FLAGS über package.env. Erstellen Sie die Datei /etc/portage/env/nossp und fügen Sie dies hinzu:
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"
Um PIE zu deaktivieren, erstellen Sie /etc/portage/env/nopie und fügen Sie hinzu:
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Fügen Sie schließlich das Paket, für das Sie entweder PIE oder SSP deaktivieren möchten, zu /etc/portage/package.env und dem entsprechenden /etc/portage/env/<Dateiname> hinzu, für dieses Beispiel wird hier sys-libs/zlib verwendet:
sys-libs/zlib nopie
Siehe auch
Für weitere Informationen sehen Sie sich die folgenden Ressourcen an: