Härdad Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Hardened Gentoo and the translation is 33% complete.
Resources

Härdad Gentoo (Gentoo Hardened) är ett Gentoo-projekt som tillhandahåller ytterligare säkerhetstjänster ovanpå den välkända Gentoo Linux-installationen. Fastän varje alternativ kan väljas separat, möjliggör Gentoo Hardened för flera riskreducerande alternativ i verktygskedjan, som PaX, grSecurity, SELinux, TPE och mer.

Vare sig du kör en Internetriktad server eller en flexibel arbetsstation, när du hanterar flera säkerhetshot kommer du vilja härda ditt system ytterligare än att bara tillämpa de senaste programfixar. Härdandet av ett system betyder att du tar fler åtgärder gentemot attacker och andra risker och är ofta ett flertal aktiveteter du utför på ett system.

Inom Gentoo Hardened finns flera aktiva projekt som hjälper till att härda ett Gentoo-system genom att:

  • Möjliggöra specifika alternativ i verktygskedjan (kompilator, länkare...), exempelvis att tvinga positionsoberoende körbara filer (eng: position-independent executables (PIE)), buffer-överflöde och buffertkontroller vid kompilering.
  • Möjliggöra PaX-tillägg i Linux-kärnan, som erbjuder ytterligare skyddsåtgärder som slumpmässig layout av adressutrymme (eng: address space layout randomization) och icke-körbart minne.
  • Möjliggöra grSecurity-tillägg i Linux-kärnan, därigenom ytterligare chroot-restriktioner, revisioner, processbegränsningar osv.
  • Möjiggöra SELinux-tillägget i Linux-kärnan som erbjuder Mandatory Access Control-system som höjer standarden för Linux-tillståndsbegränsningar.
  • Möjliggöra Integrity-relaterade teknologier, exempelvis Integrity Measurement Architecture för att göra system uthålliga mot manipulering.

Detta inkluderar givetvis de nödvändiga userspace-verktygen för att hantera dessa tillägg.

Växla till en Hardened-profil

Välj en härdad profil så att pakethantering görs på ett härdat vis.

root #eselect profile list
root #eselect profile set [den härdade profilens nummer]
root #source /etc/profile

Genom att välja en härdad profil kan vissa inställningar för pakethantering (maskar, USE-flaggor osv.) bli standard för ditt system. Detta gäller för många paket, inklusive verktygskedjan. Verktygskedjan används för att bygga/kompilera dina program, och omfattar: GNU Compiler Collection (GCC), binutils (länkare osv.), och GNU C-biblioteket (glibc). Genom att omkompilera verktyskedjan, kommer de nya standarder att appliceras på verktyskedjan, som gör att all framtida paketkompilering görs på ett härdat sätt.

root #emerge --oneshot gcc
root #emerge --oneshot binutils virtual/libc

De ovanstående kommandon bygger om GCC, som nu kan användas för att kompilera härdad programvara. Se till att hardened-alternativet har valts för GCC.

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 the example output above, the hardened GCC profile is the one without a suffix. If you want to disable PIE or SSP, choose the relevant hardenedno(pie|ssp) or both, hardenednopiessp. The vanilla profile is of course the one with hardening disabled. Finally source your new profile settings:

root #source /etc/profile

If you use the "prelink" package, remove it, since it isn't compatible with the hardened profile:

root #emerge --depclean prelink

Now you can reinstall all packages with your new hardened toolchain:

root #emerge --emptytree --verbose @world

Install hardened kernel sources, so that the kernel will *manage your running system* in a hardened way (especially using PaX):

root #emerge --ask hardened-sources

Now configure/compile the sources and add the new kernel to your boot manager (ie., GRUB).

Tips and tricks

Hardened 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

Warning
This method is not supported by Gentoo.

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:

FILE /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:

FILE /etc/portage/env/nopieDisable PIE
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Note
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:

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

See also

For more information, check out the following resources:

External resources