Hardened Gentoo/ru

Gentoo Hardened это проект Gentoo, который предоставляет вам несколько дополнительных сервисов безопасности, по сравнению с обычной установкой Gentoo Linux. Хотя каждый из таких сервисов может быть выбран по отдельности, Gentoo Hardened позволяет использовать несколько таких опций в комплексе и поддерживает PaX, grSecurity, SELinux, TPE, и многое другое.

Запускаете ли вы сервер, имеющий выход в Интернет, или рабочую станцию, принимая во внимание множество угроз, вы можете захотеть улучшить защищенность вашей системы больше, чем просто автоматически применить последние патчи безопасности. Если вы хотите защитить систему, это значит, что вы принимаете дополнительные контрмеры против атак и других рисков, и обычно это означает некоторый набор действий, которые вы выполняете над системой.

Gentoo Hardened включает в себя несколько активных проектов, которые помогут вам дополнительно защитить вашу систему Gentoo с помощью
 * Включения специфических опций в toolchain (то есть, компиляторе, линковщике, и т.д.), например, заставив компьютер выдавать только исполняемые файлы, которые работают независимо от адреса загрузки (PIE), включив защиту от разрушения стека, а также проверку буферов во время компиляции.
 * Включения расширений PaX для ядра Linux, что дает дополнительные меры защиты, например, случайное распределение адресного пространства и неисполняемую память.
 * Включения расширений grSecurity для ядра Linux, например, дополнительные ограничения chroot, дополнительный аудит, ограничения процессов, и т.д.
 * Включения расширений SELinux в ядре Linux, что позволяет вам использовать систему мандатного управления доступом, что улучшает стандартные ограничения разрешений Linux.
 * Включения технологий, относящихся к целостности, например, архитектуры измерения целостности, для того, чтобы сделать систему невосприимчивой к несанкционированному изменению.

Естественно, существуют и необходимые утилиты для управления всеми этими расширениями.

Переключение на защищенный профиль
Выберите защищенный (hardened) профиль, чтобы работа с пакетами проводилась защищенным способом:

By choosing the hardened profile, certain package management settings (masks, USE flags, etc) become default for your system. This applies to many packages, including the toolchain. The toolchain is used for building/compiling your programs, and includes: the GNU Compiler Collection (GCC), binutils (linker, etc.), and the GNU C library (glibc). By re-emerging the toolchain, these new default settings will apply to the toolchain, which will allow all future package compiling to be done in a hardened way.

The above command rebuilt GCC, which can now be used to compile hardened software. Make sure that the hardened option is selected for GCC.

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:

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

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

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

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

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

To allow for disabling PIE, create and add to :

Finally add the package you want to disable either PIE or SSP for to /etc/portage/package.env and the relevant /etc/portage/env/, for this example is used here:

External resources

 * http://www.rockfloat.com/howto/gentoo-hardened.html#kernel