Los conejos o bacterias son programas que de forma directa no dañan al
sistema,
sino que se limitan a reproducirse, generalmente de forma exponencial, hasta
que la cantidad de recursos consumidos (procesador, memoria, disco...) se
convierte en una negación de servicio para el sistema afectado. Por ejemplo,
imaginemos una máquina Unix sin una quota de procesos establecida;
cualquier usuario podría ejecutar un código como el siguiente:
main(){
while(1){
malloc(1024);
fork();
}
}
Este programa reservaría un kilobyte de memoria y a continuación
crearía una copia de él mismo; el programa original y la copia
repetirían estas acciones, generando cuatro copias en memoria que
volverían a hacer lo mismo. Así, tras un intervalo de ejecución,
el código anterior consumiría toda la memoria del sistema, pudiendo
provocar incluso su parada.
La mejor forma de prevenir ataques de conejos (o simples errores en los
programas, que hagan que éstos consuman excesivos recursos) es utilizar las
facilidades que los núcleos de cualquier Unix moderno ofrecen para limitar
los recursos que un determinado proceso o usuario puede llegar a consumir en
nuestro sistema; en la sección tres se repasan algunos de los
parámetros necesarios para realizar esta tarea sobre diversos clones del
sistema Unix.
© 2002 Antonio Villalón Huerta