lunes, 26 de octubre de 2009

Fork bomb en Ubuntu

La mayoría de distribuciones Linux y Unix vienen con un límite de procesos por usuario bastante relajado o incluso inexistente. Haciendo uso de esta configuración por defecto, se puede realizar una denegación de servicio a un equipo/servidor.

El fork bomb consiste en ejecutar el siguiente comando (con cualquier usuario):

$ :(){ :|:& };:

Esto hará que nuestro bash comience a generar procesos hasta ocupar toda la CPU y bloquear, literalmente, nuestra máquina. Así pues, no hagáis pruebas sobre equipos en producción!! Es curioso ver cómo un usuario sin privilegios de root puede tumbar un equipo.

Si ejecutamos el comando

$ ulimit -u

Observaremos el número de procesos máximos que el usuario actual puede generar. Si queremos limitar este número basta con ejecutar el comando:

$ ulimit -u 1000

Para limitar a 1000 el número de procesos. Este valor se puede definir en el fichero /etc/security/limits.conf. Añadir la siguiente entrada para limitar el número máximo de procesos para cualquier usuario a 1000:

* hard nproc 1000