Cuando ninguno de los servicios de protección pudo repeler el ataque o el servidor comenzó a trabajar bajo carga alta por otro motivo. Sugerimos instalar el script y ejecutarlo cada minuto a través del servicio crontab. Esto le permitirá no perder el acceso al servidor durante cargas críticas y tomar medidas para eliminar esta situación.
/etc/cron.daily/load-average-2.sh
#!/bin/bash
loadavg=`uptime | awk '{print $10+0}'`
# bash doesn't understand floating point
# so convert the number to an interger
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "2" ]; then
echo "Busy - Load Average $loadavg ($thisloadavg) "
echo 'Warning - Load AVG (my.server.tld) on:' `date` `uptime` | mailx -s "Warning: LA from `uptime | cut -d'(' -f2 | cut -d')' -f1`" -S smtp=smtp://mail.server.tld -S smtp-auth=login -S smtp-auth user=user@domain.tld -S smtp-auth-password=PassW0rd -S from="LLC COMPANY" to@domain.tld
else
echo "Okay - Load Average $loadavg ($thisloadavg) "
fi
Este script debe guardarse en el archivo load-average-2.sh en la carpeta /etc/cron.daily y establecer los derechos de ejecución.
Luego necesitas agregar una línea mediante el comando crontab -e para ejecutarlo cada 2 minutos:
*/2 * * * * /etc/cron.daily/load-average-2.sh >> /dev/null 2>&1
Los valores deben ser reemplazados por los tuyos propios:
- my.server.tld: el nombre del servidor en el que está instalando el script.
- mail.server.tld: el nombre de dominio del servidor de correo a través del cual el script le enviará notificaciones.
- user@domain.tld: nombre del buzón para conectarse al servidor de correo (iniciar sesión).
- PassW0rd: contraseña de su cuenta de correo.
- LLC COMPANY: nombre y dirección de quien se enviará la carta.
- to@domain.tld - dirección postal donde se enviará la notificación.
Si el promedio de carga excede 2, es decir 200% (2 núcleos), el script enviará una notificación. Este parámetro está resaltado, puede cambiarlo por uno propio dependiendo de la cantidad de núcleos que tenga el servidor. Por ejemplo, si tiene 4 núcleos, entonces la carga máxima será 4, es decir 400%.
Si es necesario, puede agregar comandos al script que deben ejecutarse, por ejemplo, reiniciar los servicios para aliviar la carga. Debes agregarlos antes, por ejemplo:
service nginx restart
service ddos restart
service httpd restart