jueves, 5 de septiembre de 2013

Seguiridad en Linux: Grsecurity

Hoy vamos a ver como aplicar el parche Grsecurity a nuestro kernel para aumentar la seguridad de nuestro servidor. Cuando sepa que hace ya hare una entrada explicando más, pero por ahora a instalarlo.

Lo primero que hay que tener en cuenta es que hay que compilar el kernel, cosa que puede llegar a ser un coñazo por las múltiples configuraciones que hay. Lo que voy a hacer es instalar en una Debian 7 el kernel 3.10.10, el ultimo del que hay parche pero hasta donde he visto el proceso es el mismo. Lo primero es descargarse los paquetes del kernel e instalarlos:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.10.10-saucy/linux-headers-3.10.10-031010-generic_3.10.10-031010.201308291422_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.10.10-saucy/linux-image-3.10.10-031010-generic_3.10.10-031010.201308291422_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.10.10-saucy/linux-headers-3.10.10-031010_3.10.10-031010.201308291422_all.deb
dpkg -i *.deb


Una vez reiniciado, ya tenemos el kernel (sin parchear) actualizado. Realmente no hace falta esto, pero ahora veréis el porque.

Lo siguiente que necesitamos es descargar el parche y el código del kernel:

wget http://grsecurity.net/test/grsecurity-2.9.1-3.10.10-201309011630.patch
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.10.tar.gz
tar xzvf linux-3.10.10.tar.gz


Antes de seguir, vamos a instalar las dependencias:

apt-get install gcc-4.7-plugin-dev buil-essential paxctl


Ahora que ya tenemos todo preparado, aplicamos el parche y lanzamos el make para preparar el kernel:

cd linux-3.10.10.tar.gz/
Patch -p1 < ../grsecurity-2.9.1-3.10.10-201309011630.patch


Con el parche aplicado, queda compilar:

Make menuconfig


-"Espera ¿me estas diciendo que tengo que revisar TODAS las opciones y poner las que necesite? Que son un huevo..." Pues...

La verdad es que se puede hacer trampas. ¿Recordáis que hemos instalado previamente el kernel con la misma versión que el que queríamos parchear en un paquete con todo configurado? Con el comando make oldconfig lo que hará sera coger las opciones que tenia el kernel instalado y preguntar por las nuevas (buena opción si queremos ir actualizando los kernels a mano cada vez que sale una nueva versión). En este caso como las versiones son las mismas, lo que nos preguntara sera por las opciones del parche :D eso si, no es con menú "bonito" como el anterior. En mi caso, escogí las reglas automáticas para servidores y poco mas. Leer que es cada cosa y elegir.

Una vez hecho el make solo queda instalar el kernel. Hasta aquí los pasos son validos para cualquier distro, pero como estoy usando Debian, voy a crear un .deb para instalar el kernel.

fakeroot make deb-pkg
dpkg -i kernel-gr.deb *


Y listo, solo queda reiniciar y ver que esta todo correcto. En mi caso el único problema que hubo fue que por defecto el grub no cargaba el kernel con el Grsecurity. Simplemente modificamos el /etc/default/grub y recargamos el grub update-grub. En mi caso aparecía como salida al comando un "killed", dado que ya estaba trabajando con el kernel modificado (seleccionándolo manualmente en la carga del sistema). Tuve que permitir la ejecución de algunos programas para que funcionase:

paxctl -Cpemrxs /usr/sbin/grub-probe
paxctl -Cpemrxs /usr/sbin/grub-mkdevicemap
paxctl -Cpemrxs /usr/sbin/grub-setup
update-grub


Y listo. Ya esta configurado y funcionando el kernel con el Grsecutiry. Toca aprender a usarlo y ver para que sirve ;)

Fuentes:
Kernels Ubuntu/Debian/Mint
GrSecutiry
Kernels Linux
HowToForge
Error Grub + GrSecurity

* El nombre del kernel no es ese, pero no tengo ahora la máquina con la que hice las pruebas y no se como lo renombra, pero vamos algo parecido.

No hay comentarios:

Publicar un comentario