This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Gehärtetes Gentoo (Hardened Gentoo)

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Hardened Gentoo and the translation is 55% complete.
Outdated translations are marked like this.
Resources

Gehärtetes Gentoo (Hardened Gentoo) 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 PaX, grSecurity, SELinux, TPE und weitere.

Ob Sie einen mit dem Internet verbundenen Server oder eine flexible Workstation betreiben, wenn Sie mit unterschiedlichen Bedrohungen umgehen, wollen Sie vermutlich Ihr System weiter härten als nur automatisch die letzten Sicherheitspatches anwenden. Ein System härten bedeutet dass Sie zusätzliche Gegenmassnahmen gegen Angriffe oder andere Risiken ergreifen und das ist normalerweise eine Kombination von Aktivitäten die Sie am System durchführen.

Within Gentoo Hardened, several projects are active that help further harden a Gentoo system through:

  • Enabling specific options in the toolchain (compiler, linker ...) such as forcing position-independent executables (PIE), stack smashing protection and compile-time buffer checks.
  • Enabling PaX extensions in the Linux kernel, which offer additional protection measures like address space layout randomization and non-executable memory.
  • Enabling grSecurity extensions in the Linux kernel, including additional chroot restrictions, additional auditing, process restrictions, etc..
  • Enabling SELinux extensions in the Linux kernel, which offers a Mandatory Access Control system enhancing the standard Linux permission restrictions.
  • Enabling Integrity related technologies, such as Integrity Measurement Architecture, for making systems resilient against tampering

Selbstverständlich schliesst das die notwendigen Userspace-Dienstprogramme mit ein, um diese Erweiterungen handzuhaben.

Switching to a Hardened profile

Select a hardened profile, so that package management will be done in a hardened way.

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 Ihr System. Dies betrifft viele Pakete, eingeschlossen die Toolchain. Die Toolchain wird zum Bau/ zur Kompilierung Ihrer Programme verwendet und schliesst 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 gcc
root #emerge --oneshot binutils virtual/libc

Die oben stehenden Befehle bauen GCC erneut, es kann nun dazu verwendet werden gehärtete Software zu kompilieren. Stellen Sie sicher, dass die gehärtete Option für GCC ausgewählt ist.

root #gcc-config -l
[1] i686-pc-linux-gnu-4.5.3 *
[2] i686-pc-linux-gnu-4.5.3-hardenednopie
[3] i686-pc-linux-gnu-4.5.3-hardenednopiessp
[4] i686-pc-linux-gnu-4.5.3-hardenednossp
[5] i686-pc-linux-gnu-4.5.3-vanilla

In der Beispielausgabe oben ist das gehärtete GCC Profil jenes ohne Suffix. Wenn Sie PIE oder SSP deaktivieren möchten, wählen Sie entsprechend hardenedno(pie|ssp) oder beides, hardenednopiessp. Das Profil vanilla ist natürlich das eine mit deaktivierter Härtung. Abschliessend lassen Sie Ihre neuen Profileinstellungen neu einlesen:

root #source /etc/profile

Wenn sie das "prelink" Paket verwenden entfernen Sie es, weil es mit dem gehärteten Profil nicht kompatibel ist:

root #emerge --depclean prelink

Nun können Sie alle Pakete mit Ihrer neuen, gehärteten Toolchain erneut installieren:

root #emerge --emptytree --verbose @world

Installieren Sie die gehärteten Kernel Quellen, so dass der Kernel Ihr laufendes System auf gehärtete Weise verwaltet (und im Besonderen PaX verwendet):

root #emerge --ask hardened-sources

Konfigurieren und kompilieren Sie nun die Quellen und fügen Die den neuen Kernel Ihrem Bootmanager hinzu (z.B. GRUB).

Tips and tricks

Gehärtetes Gentoo/ Grsecurity Chroot

If you want to chroot to a copied environment where the CONFIG_GRKERNSEC_CHROOT is enabled you must use the cd grub and change the root(cd) kernel(cd) initrd(cd) setting to from (cd) to (hdx,y).

Now you can install the grub environment.

Per package hardening settings

Warnung
Diese Methode wird von Gentoo nicht unterstützt.

Changing the GCC profile to deal with specific packages can be a pain. A way to avoid this is to set per-package C(XX)FLAGS using package.env. Create the file /etc/portage/env/nossp and add to that:

DATEI /etc/portage/env/nosspDisable SSP
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"

To allow for disabling PIE, create and add to /etc/portage/env/nopie:

DATEI /etc/portage/env/nopieDisable PIE
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Notiz
GCC version 4.x uses -nopie instead of -no-pie.

Finally add the package you want to disable either PIE or SSP for to /etc/portage/package.env and the relevant /etc/portage/env/<filename>, for this example sys-libs/zlib is used here:

DATEI /etc/portage/package.envDisable PIE for sys-libs/zlib
sys-libs/zlib nopie

Siehe auch

For more information, check out the following resources:

Externe Ressourcen