Yonohesido
Usuari@ ADSLzone
- Mensajes
- 86
He encontrado un par de páginas muy interesantes, donde explican cómo podemos prevenir el uso de bombas fork en nuestro sistema operativo.
http://www.cyberciti.biz/tips/linux-lim ... ocess.html
http://ubunteate.es/bombas-fork/
Básicamente consiste en controlar el número de procesos permitidos en el sistema, de modo que no llegue a colapsar nuestra máquina. Podemos configurar o establecer dicha limitación para usuarios y/o grupos específicos, o de modo general.
Es importante no poner unos límites por debajo de los procesos que necesita nuestro SO para funcionar, de lo contrario vamos a tener problemas. Escritorios como Gnome o KDE necesitan lanzar un número relativamente alto de procesos.
Para conocer el número de procesos que permite ejecutar el SO:
Para obtener el número de procesos que está corriendo actualmente nuestro sistema:
Una vez que tenemos claros los datos y sabiendo que el límite debe ser bastante holgado, para no pillarse los dedos, nos ponemos manos a la obra.
Lo que debemos hacer es editar (como root) el archivo /etc/security/limits.conf y establecer (escribiéndolo al final del archivo) el número máximo de procesos que permitiremos. La orden tiene la siguiente forma:
<dominio> <tipo> <valor> <límite>
Donde:
dominio puede ser:
- un nombre de usuario
- un grupo, con la sintaxis @grupo
- asterisco (*), para hacer la orden general a todos los usuarios y grupos
tipo puede ser:
- soft para una limitación suave. Limita los procesos hasta el número indicado, pero permite que el usuario pueda aumentar ese número en caso necesario. Ver ejemplo más abajo.
- hard para una limitación dura. No permite que el usuario cambie dicha limitación.
valor, para nuestro propósito será:
- nproc para indicar que el cambio se realizará sobre el número de procesos. (Echadle un ojo a la primera página que enlacé al inicio, para ver otros posibles valores)
límite, para indicar el número máximo de procesos permitidos.
Así pues, editamos /etc/security/limits.conf y añadimos al final del todo la orden deseada.
Algunos ejemplos:
Limita a 500 el número de procesos corriendo en el SO, para cualquier usuario o grupo.
Limita a 500 los procesos para el usuario pepito.
Limita a 500 los procesos para todos los usuarios del grupo users.
Limita a 500 los procesos para los usuarios del grupo users, pero permite que estos puedan aumentar dicho límite hasta un máximo de 1000 procesos. Esto lo harían con el siguiente comando:
Esto es válido para todos los procesos (incluidos sus hijos) que hagan uso de los módulos del PAM.
Para que los cambios surtan efecto, debemos reiniciar nuestra sesión de usuario. Podemos comprobar si el número de procesos máximos ha cambiado:
Luego podemos ejecutar una bomba fork, para probar que el método funciona:
No ejecutar si no se ha limitado el número de procesos.
ATENCIÓN:
Limitar el número máximo de procesos de nuestro SO puede ser peligroso si no se sabe lo que se hace. Establecer un límite menor al número de procesos que necesita nuestro sistema para correr, o demasiado bajo, no permitiendo ejecutar los procesos que solicitamos (al abrir aplicaciones por ejemplo) , puede derivar en errores y problemas que impidan el correcto funcionamiento de nuestro sistema operativo.
No sigáis este manual a menos que sepáis lo que estáis haciendo. No me hago responsable de los problemas derivados de un mal uso de la información facilitada.
http://www.cyberciti.biz/tips/linux-lim ... ocess.html
http://ubunteate.es/bombas-fork/
Básicamente consiste en controlar el número de procesos permitidos en el sistema, de modo que no llegue a colapsar nuestra máquina. Podemos configurar o establecer dicha limitación para usuarios y/o grupos específicos, o de modo general.
Es importante no poner unos límites por debajo de los procesos que necesita nuestro SO para funcionar, de lo contrario vamos a tener problemas. Escritorios como Gnome o KDE necesitan lanzar un número relativamente alto de procesos.
Para conocer el número de procesos que permite ejecutar el SO:
Código:
ulimit -u
Para obtener el número de procesos que está corriendo actualmente nuestro sistema:
Código:
ps aux | wc -l
Una vez que tenemos claros los datos y sabiendo que el límite debe ser bastante holgado, para no pillarse los dedos, nos ponemos manos a la obra.
Lo que debemos hacer es editar (como root) el archivo /etc/security/limits.conf y establecer (escribiéndolo al final del archivo) el número máximo de procesos que permitiremos. La orden tiene la siguiente forma:
<dominio> <tipo> <valor> <límite>
Donde:
dominio puede ser:
- un nombre de usuario
- un grupo, con la sintaxis @grupo
- asterisco (*), para hacer la orden general a todos los usuarios y grupos
tipo puede ser:
- soft para una limitación suave. Limita los procesos hasta el número indicado, pero permite que el usuario pueda aumentar ese número en caso necesario. Ver ejemplo más abajo.
- hard para una limitación dura. No permite que el usuario cambie dicha limitación.
valor, para nuestro propósito será:
- nproc para indicar que el cambio se realizará sobre el número de procesos. (Echadle un ojo a la primera página que enlacé al inicio, para ver otros posibles valores)
límite, para indicar el número máximo de procesos permitidos.
Así pues, editamos /etc/security/limits.conf y añadimos al final del todo la orden deseada.
Algunos ejemplos:
Código:
* hard nproc 500
Código:
pepito hard nproc 500
Código:
@users hard nproc 500
Código:
@users soft nproc 500
@users hard nproc 1000
Código:
ulimit -Su 1000
Esto es válido para todos los procesos (incluidos sus hijos) que hagan uso de los módulos del PAM.
Para que los cambios surtan efecto, debemos reiniciar nuestra sesión de usuario. Podemos comprobar si el número de procesos máximos ha cambiado:
Código:
ulimit -u
Luego podemos ejecutar una bomba fork, para probar que el método funciona:
No ejecutar si no se ha limitado el número de procesos.
Código:
:(){ :|:& };:
ATENCIÓN:
Limitar el número máximo de procesos de nuestro SO puede ser peligroso si no se sabe lo que se hace. Establecer un límite menor al número de procesos que necesita nuestro sistema para correr, o demasiado bajo, no permitiendo ejecutar los procesos que solicitamos (al abrir aplicaciones por ejemplo) , puede derivar en errores y problemas que impidan el correcto funcionamiento de nuestro sistema operativo.
No sigáis este manual a menos que sepáis lo que estáis haciendo. No me hago responsable de los problemas derivados de un mal uso de la información facilitada.