# [HARDENED] Servidor desde cero (abierto)

## Coghan

Tengo en mis manos un flamante servidor dual PIII 800, SCSI U320 73GB RAID5, 1.5GB RAM y fuente redundante, todo una joya. Lo estoy reciclando para que vuelva a estar en producción como servidor proxy, correo, s/ftp y samba para una pequeña Lan (pocos usuarios, pero el contenido y la privacidad de los datos prima en importancia).

He pensando en hacer algo más robusta la instalación de gentoo con el proyecto hardened, hasta la fecha nunca me había metido en esto, ya va siendo hora, pero después de leer la dura documentación al respecto me quedo con la sensación de no saber realmente a que me enfrento. Por eso pido algo de ayuda para ir empezando la instalación.

Por ahora estoy en el punto de configurar el make.conf y el perfil desde el Handbook, la primera duda sobre si realmente debo iniciar hardened es aquí, no se si hacer una instalación limpia normal hasta el primer arranque con grub y luego añadir hardened o empezar antes del primer kernel eligiendo el perfil hardened. El perfil que recomienda el manual es /usr/portage/profiles/hardened/x86/2.6, pero antes de entrar ciegamente me ha dado por revisar el resto de perfiles y me encuentro con:

```
livecd ~ # eselect profile list

Available profile symlink targets:

  [1]   default-linux/x86/2006.1

  [2]   default-linux/x86/2006.1/desktop

  [3]   default-linux/x86/2007.0

  [4]   default-linux/x86/2007.0/desktop

  [5]   hardened/x86/2.6

  [6]   selinux/2007.0/x86

  [7]   selinux/2007.0/x86/hardened

  [8]   default/linux/x86/2008.0 *

  [9]   default/linux/x86/2008.0/desktop

  [10]  default/linux/x86/2008.0/developer

  [11]  default/linux/x86/2008.0/server

  [12]  hardened/linux/x86

```

Como se puede ver hay dos perfiles hardened, el que recomienda la documentación tiene la forma como los anteriores al 2008.0 y el "hardened/linux/x86" como las últimas 2008.0, pero no queda ahí la cosa, viendo los cambios de uno a otra me doy cuenta que en las USE eliminan "unicode".

Luego está el seguir adelante y decidir entre grsecurity, SELinux y RSBAC, parece que la declinación por ser la mejor documentada es la primera, pero me gustaría contrastar opiniones de los que ya hayan trabajado con este proyecto.

Realmente me he parado aquí, seguramente no sea tan importante, pero debe ser la hora y ya toca un descanso.   :Smile: 

----------

## Coghan

Me auto-respondo.

Siempre he comentado que una documentación no se entiende realmente la teoría luego de haberla leído 10 veces, pues debo ir mejorando porque la empiezo a comprender después de la 3 lectura   :Wink:  .

Con respecto a que perfil usar, quise comprobar cual de los dos estaba más actualizado y el ganador fue el que el mismo manual recomienda, simplemente con comprobar las fechas de los archivos que integran cada perfil:

```
[5]   hardened/x86/2.6 
```

Sobre el tema de las USE que deshabilita, como -unicode y -phyton, creo que algunas otras, por ahora no me voy a preocupar de este tema, cuando finalice la instalación inicial y siga avanzando en los servicios y configuraciones veré si realmente son incompatibles o las necesito.

Después de estas decisiones tan trascendentales pues toca ver como aplicar los cambios del perfil para compilar el kernel, aquí es donde me resuelvo la duda sobre si aplico hardened desde el chroot del LiveCD o posteriormente en el arranque del kernel. Las dos respuestas son válidas, peeero, en x86-32 hay que degradar las gcc a las versión 3.4.6-r2 porque la 4.1.2 queda enmascarada por el perfil hardened, hay un documento que explica como usar hardened con gcc4 por si a alguien le interesa repasarlo para saber porqué http://www.gentoo.org/proj/en/hardened/toolchain-upgrade-guide.xml. Con lo cual al instalar gcc3 con la USE hardened, la compilación termina correcta pero con avisos de que no se quedan activadas las opciones PaX por no estar el kernel aún configurado, pues sabiendo esto no sigo haciendo los pasos para activar la toolchain nueva y recompilar todo con 'emerge world' hasta que no instale el kernel, para no tener que repetirlo todo de nuevo. Así que queda claro que para usar herdened desde una instalación limpiar seguimos el Handbook hasta la elección del kernel y desde aquí elegimos las hardened-sources compilado con las opciones de la documentación del proyecto. Una vez iniciado toca cambiar de toolchain y recompilar todo.

Y la última duda, me confirmo elegir grsecurity, la documentación y los paquetes son más actuales que SELinux y parece que es la que más se usa actualmente, aparte de que también utiliza RBAC (Control de Accesos con auto-aprendizaje).

Pues sigo adelante con el invento, veremos cual es la siguiente parada.   :Smile: 

----------

## sag

No te olvides de activa en el Kernel la proteccion contra debordamiento de Buffer.

Si sigues con GrSecurity ya me contaras por que SElinux es un poco pesado y puede que me cambie.

----------

## gringo

por si no lo habías visto -> https://forums.gentoo.org/viewtopic-t-705939-highlight-hardened.html

una guía para hardened con gcc4 ( no oficial por supuesto). No lo he probado pero parece que están haciendo un buen trabajo.

Hay un largo hilo sobre el trabajo que están haciendo -> https://forums.gentoo.org/viewtopic-t-668885.html

saluetes

----------

## Coghan

 *sag wrote:*   

> No te olvides de activa en el Kernel la proteccion contra debordamiento de Buffer.
> 
> Si sigues con GrSecurity ya me contaras por que SElinux es un poco pesado y puede que me cambie.

 

No me había olvidado, lo primero que hice al compilar el primer kernel fue ver las opciones nuevas y quería seguir el manual para las opciones sobre Pax, pero me llevé una grata sorpresa cuando veo que el proyecto ha avanzado mucho en los últimos núcleos, ahora puedes elegir el nivel de seguridad y usar "Hardened Gentoo (server)"  (o workstation), esto te habilitará el resto opciones incluidas las de Pax, sin tener que preocuparte más de esto. (Por su puesto si te fías de que los dev hayan hecho bien su trabajo   :Twisted Evil:  ).

```
Security options  --->

    Grsecurity  --->

         [*] Grsecurity

            Security Level (Hardened Gentoo [server])  --->

                ( ) Low

                ( ) Medium

                ( ) High

                (X) Hardened Gentoo [server]

                ( ) Hardened Gentoo [workstation]

                ( ) Custom   
```

De entrada la documentación está obsoleta, pero los pasos generales son los mismos, hay herramientas que indica el manual como 'chpax' que ya no se deben usar en favor de 'paxctl'. Por ahora ya estoy con el arranque autónomo del equipo y funciona correctamente, estoy probando java para la herramienta que suministra Adaptec para la controladora raid SCSI 2120S, y de entrada ya no hace falta cambiar a mano los flags de los binarios, el ebuild ya lo hace el solito. No instalaré las X (no creo que las necesite).

 *gringo wrote:*   

> por si no lo habías visto -> https://forums.gentoo.org/viewtopic-t-705939-highlight-hardened.html
> 
> una guía para hardened con gcc4 ( no oficial por supuesto). No lo he probado pero parece que están haciendo un buen trabajo.
> 
> Hay un largo hilo sobre el trabajo que están haciendo -> https://forums.gentoo.org/viewtopic-t-668885.html
> ...

 

Pues no lo había visto, gracias por la info, aunque en un principio me llamó la atención tener que volver a gcc3, ahora ya no me preocupa, prefiero la estabilidad de que esté 100% testeado (prácticamente) y para PIII no necesito más, cuando gcc4 pase a estable en el perfil hardened ya me plantearé cambiar. Pero igual me lo anoto para probarlo en alguna PC de pruebas.

----------

## sag

He estado mirando en la web oficial y me he encontrado con un manual de configuración del kernel que esta traducido.

Lo mejor que tiene es la explicación de cada modulo y de los niveles de seguridad.

si te interesa lo tienes en 

http://www.hacktimes.com/?q=system/files&file=GRSECURITY-HackTimes.com.V1.0.pdf

Seguiré investigado, ya que esto me empieza a picar el gusanillo.

----------

## Coghan

 *sag wrote:*   

> He estado mirando en la web oficial y me he encontrado con un manual de configuración del kernel que esta traducido.
> 
> Lo mejor que tiene es la explicación de cada modulo y de los niveles de seguridad.
> 
> si te interesa lo tienes en 
> ...

 

Gracias @sag, me había encontrado también con este documento y de paso con la web del tipo este, tiene artículos muy currados sobre otros temas. De todas formas no creo que ya sea necesario, como comento más arriba, dado que en el núcleo los desarrolladores ya han hecho el trabajo por uno, sólo hay que fiarse de ellos.

----------

## sag

Un comentario ahora me ha dado por quitar Selinux para pasarme a GrSecurity y no ves como estoy rompiendo el sistema.

Como consejo no instalar Selinux y después quitarlo.

Aun siguiendo la guía del wiki http://gentoo-wiki.com/HOWTO_Null_Selinux_on_non-SELinux_profile

No lo consigo.

Voy a seguir probando y ya comentare que tal.

----------

## gringo

 *Quote:*   

> ahora ya no me preocupa, prefiero la estabilidad de que esté 100% testeado (prácticamente) 

 

desde luego, realmente de lo que se trata es de tener algo lo mas sólido posible, sobre todo si es algo destinado para entornos de producción, así que gcc y sus optimizaciones y demás chuminadas son algo secundario.

 *Quote:*   

> me ha dado por quitar Selinux para pasarme a GrSecurity y no ves como estoy rompiendo el sistema. 

 

ya casi no uso gentoo y apenas he probado una vez selinux en gentoo, pero si, andar jugando con selinux si no se tiene muy claro lo que se está haciendo sólo te traerá problemas y dolores de cabeza. Trata de deshabilitarlo simplemente, ya se que es una cochinada pero "desinstalar" selinux se me antoja como algo muy complejo.

saluetes

----------

## Coghan

 *sag wrote:*   

> Un comentario ahora me ha dado por quitar Selinux para pasarme a GrSecurity y no ves como estoy rompiendo el sistema.

 

Lamento leer esto, no conozco nada de SELinux, no podré ayudarte, pero hasta ahora con GrSecurity estoy contento, no me dado más quebraderos de cabeza que los de empezar a entender como funciona, el resto está bien digerido por el mismo sistema.

 *gringo wrote:*   

> desde luego, realmente de lo que se trata es de tener algo lo mas sólido posible, sobre todo si es algo destinado para entornos de producción, así que gcc y sus optimizaciones y demás chuminadas son algo secundario. 

 

Si, precisamente esta máquina es muy estable de hardware, algo antigua pero robusta, y me apetecía aprovechando la coyuntura del cambio, instalar algo acorde. Con Gentoo estoy muy cómodo, es la distro que mejor domino, y tenía ganas de avanzar con respecto a la seguridad. No necesito velocidad ni optimización, sólo un sistema robusto con cuatro servicios contados. Aunque me ha sorprendido lo rápido que compila, me había preparado para una instalación eterna.

Estás dos semanas he estado algo liado y le he prestado poca atención a este servidor, pero lleva con un sistema mínimo todo este tiempo 24*7 sin problemas, seguiré implementando y viendo en que se diferencia de una instalación estándar.

----------

## sag

Ya me librado de SeLinux

Por si alguien le pasa, lo que he tenido que hacer, es primero enmascarar las librería, para que "depclean" no me la elimine.

Segundo. limpiar todas la politicas que tiene Selinux para cada programa, con 'depclean' 

Tercero. Una vez hecho esto, he eliminado lo paquete a mano con 'emerge -C paquete'.

Cuarto. Otro depclean por si no hemos dejado alguna dependecia colgada.

Quinto. revdep-rebuild por si no hemos pasado con la limpieza.

Paquete que dan problemas, y que he enmacarado.

```

sys-libs/libsemanage-1.10.9 

dev-lang/swig-1.3.36

sys-libs/libselinux-1.34.14

sys-process/audit-1.7.3

```

P.D.

Todo esto pasos van vinculados a los del wiki que puse en una respuesta anterior.

----------

## Txema

Bueno ya ha pasado un tiempo pero, ¿qué tal te va con el servidor hardened?

He estado mirando un poco el tema, pero no estoy seguro de si me conviene o sería algo excesivo para mi servidor doméstico.

----------

## Coghan

@Txema, la verdad es que sigue bastante estable y muy bien, lo toco poco una vez finalicé la instalación, todo sea dicho, algunas actualizaciones de vez en cuando por eso de mantenerlo al día, que además son muy pocas en la rama estable. Lo dejé con un entorno sin X. El uso diario no tiene diferencias.

----------

## ZaPa

Ahora la tipica pregunta del tipico novato jeje...  :Very Happy: 

¿Que diferencias tiene el perfil hardenet respecto a los demás?

¿Para que equipos es conveniente elegir este perfil?

Un saludo.

----------

