Hardened Gentoo
Gentoo Hardened es un proyecto de Gentoo que ofrece características de seguridad adicionales encima de la ya conocida instalación de Gentoo Linux. Aunque pueden ser seleccionadas en forma separada, Gentoo Hardened activa múltiples herramientas para la mitigación de riesgos en la cadena de herramientas, soporta PaX, grSecurity, SELinux, TPE y otros.
Ya sea que usted maneje un servidor o una estación de trabajo, cuando lidia con múltiples amenazas, probablemente querrá fortalecer el sistema en lugar de solamente aplicar los últimos parches de seguridad. "Fortalecer" un sistema significa tomar contramedidas adicionales frente a ataques y otros riesgos, y aquello se traduce usualmente en un conjunto combinado de actividades que usted realizará en el sistema.
Dentro de Gentoo Hardened, muchos proyectos estan inmersos y nos ayudaran a fortalecer un sistema Gentoo a través de:
- La activación de opciones específicas en la cadena de herramientas (compilador, enlazador, ...) tales como forzar ejecutables de posición independiente (PIE), protección contra el desbordamiento de pila y comprobación de búfer en tiempo de compilación.
- Activación de la extensiones PaX del núcleo Linux, que ofrece medidas de protección adicionales como la asignación aleatoria de direcciones en memoria y memoria no ejecutable.
- Activación de la extensiones SELinux del núcleo Linux, que ofrece un sistema con Mandatory Access Control (MAC) que mejora las restricciones estándar de permisos en Linux.
- Activación de tecnologías relacionadas con Integrity tal como Integrity Measurement Architecture, para hacer sistemas más resistentes a la manipulación.
Por supuesto que se incluye las correspondientes utilidades en espacio de usuario para el manejo de estas extensiones.
Cambiándo a un perfil fortalecido
Read relevant documentation before performing any profile changes.
Seleccione un perfil fortalecido para que la administración de paquetes se realice de modo fortalecido.
root #
eselect profile list
root #
eselect profile set [numero del perfil fortalecido]
root #
source /etc/profile
Al escoger el perfil fortalecido, ciertas configuraciones del gestor de paquetes (enmascaramiento de paquetes, ajustes USE, etc) se tornan por defecto en el sistema. Esto se aplica a muchos paquetes, incluida la cadena de herramientas. La cadena de herramientas es usada para compilar tus programas, e incluye: la GNU Compiler Collection (GCC), binutils (enlazador, etc), y la GNU C library (glibc). Al reinstalar la cadena de herramientas, aquellas nuevos ajustes por defecto se aplicaran a la cadena de herramientas, lo que permitirá que toda compilación de paquetes posterior se haga de modo fortalecido.
root #
emerge --oneshot gcc
root #
emerge --oneshot binutils virtual/libc
Los comandos anteriores recompilarán GCC, que puede ser ahora utilizado para compilar programas fortalecidos.
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
Finally source the new profile settings:
root #
source /etc/profile
Si usted usa el paquete "pree-enlazado", elimínelo, porque no es compatible con un perfil fortalecido:
root #
emerge --depclean prelink
Ahora, puede reinstalar todos los paquetes con su nueva cadena de herramientas fortalecida:
root #
emerge --emptytree --verbose @world
Instale las fuentes del nucleo fortalecidas, y entonces el núcleo *administrara el sistema en funcionamiento* de modo fortalecido (especialmente si utiliza PaX):
root #
emerge --ask hardened-sources
Ahora configure/compile las fuentes y añada el nuevo núcleo a su gestor de arranque (GRUB, por ejemplo).
Consejos y trucos
Ajustes de fortalecimiento para cada paquete
Este método no es compatible con Gentoo.
Cambiar el perfil de GCC para lidiar con paquetes específicos puede ser muy complicado. Una forma de evitar esto es configurar C(XX)FLAGS para cada paquete, usando package.env. Cree el archivo /etc/portage/env/nossp y agregue:
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"
Para permitir la desactivación de PIE, cree /etc/portage/env/nopie y agregue:
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Finalmente, agregue el paquete que en el que quiera desactivar PIE o SSP a /etc/portage/package.env y el correspondiente /etc/portage/env/<filename>, el siguiente ejemplo es para sys-libs/zlib:
sys-libs/zlib nopie
Vea también
Para más información, revise los siguientes recursos: