#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
Este es el código para una bomba tenedor.
En nuestra universidad, nos conectamos a través de Telnet, es decir, el protocolo de servicio al cliente. Unos 100 sistemas están conectados al servidor. De repente, vimos que el servidor se volvía lento, y después de un tiempo se bloqueó. Llegué a saber que Sombody implementó una bomba tenedor.
¿Cómo podemos detectar en qué sistema se implementa la bomba tenedor? ¿Y cómo podemos detenerlo?
Un método es limitar el número máximo de procesos que puede poseer un solo usuario. ¿Hay algún método para detenerlo y saber desde qué sistema se ha implementado?
c
process
operating-systems
telnet
Rajesh M
fuente
fuente
Respuestas:
Una forma es limitar la cantidad de procesos que un usuario puede ejecutar.
Simplemente inicie sesión como root y edite este archivo para agregar usuarios y configurar su límite.
Agregue esta línea al archivo
Ahora el usuario John solo puede crear 10 procesos.
fuente
/etc/security/limits.conf
surta efecto.Para detener una bomba tenedor en funcionamiento, puede utilizar
killall <name>
para matar todos los procesos de la bomba. Sin embargo, dado que una bomba de horquilla generalmente produce una carga increíblemente alta en el sistema, es posible que no pueda usar SSH o ejecutarla. Por lo tanto, un reinicio podría ser necesario o al menos mucho más rápido.Si cada usuario tiene su propia cuenta en el sistema, simplemente puede consultar el directorio de inicio de todos y buscar el ejecutable. Es probable que también haya subido el código fuente, por lo que encontrarlo no debería ser demasiado difícil. Si se tratara de una cuenta compartida para todos los estudiantes, no tiene suerte. Especialmente después de que la sesión telnet o ssh del usuario finalizó, no tiene oportunidad de averiguar quién la inició.
Sin embargo, en lugar de castigar al usuario que detonó esa bomba de horquilla, debería arreglar la configuración del sistema para desarmar las bombas de horquilla. Puede establecer límites de proceso por usuario utilizando
/etc/security/limits.conf
y así evitar que una bomba de horquilla se salga de control; por ejemplo, con solo 50 procesos, una bomba de horquilla no causará mucho daño.fuente