Log acceso servidor Web#
En este apartado veremos como obtener las direcciones IP (sin repeticiones) de las diferentes conexiones que recibe el servidor web. Para llevar a cabo esto utilizaremos un script sencillo que se explicará en el siguiente apartado.
Note
Es interesante que cada vez que se descubra una dirección IP diferente a la que se encuentra en el fichero destino, se notifique al administrador. Una forma de hacerlo es utilizando el comando mail
.
Script#
El script que utilizaremos será el siguiente. Incluye comentarios para explicar cual es el proceso que sigue el script.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #Declaramos la variable para el fichero donde se encuentra el log de acceso ficherolog='/var/log/nginx/access.log' #Cortamos la parte de la ip de la línea del fichero log lineafichero=`cut -d ' ' -f 1 $ficherolog` #Declaramos la variable con el fichero donde almacenaremos las direcciones IP que han accedido al servidor web ficherodestino='/root/IPs' #Utilizamos la función "for" para comprobar línea a línea si la dirección ip ya se encuentra en el fichero for i in $lineafichero ; do linea=`echo $i` #Buscamos la línea en el fichero destino. grep $linea $ficherodestino #Introducimos la función "if" para comprobar si la dirección IP no se encuentra en el fichero destino. En el caso de que no se encuentre se añadirá al fichero. if [ $? -eq 1 ]; then echo `date | cut -d ' ' -f 1-3` $i >> $ficherodestino fi done |
Note
El script se puede descargar pulsando aquí.
Ejecución diaria#
Es necesario que el script se ejecute diariamente a las 09:00 de la mañana, por lo tanto deberemos utilizar cron para ellos. El funcionamiento del mismo se ha explicado en el apartado Cron del Proyecto Celulosa.
1 2 3 4 | #Añadimos el script a crontab. crontab -e 0 9 * * * sh /root/script.sh |