Muchas veces tenemos que bucear en el log de apache para filtrar la información que nos es necesaria en un momento determinado. Con la siguiente línea, extraemos la IP de todo el log de apache de un día determinado, la ordenamos y obligamos a que se cuenten sus ocurrencias, y luego volvemos a ordenar interpretando la columna 1, como números y no como strings, por último sacamos sólo la cabecera que es lo que nos interesa. ¡Ojo! Con el comando awk vamos sacando los elementos de cada una de las líneas $1, $2, $3… En este caso previamente le echamos un vistazo al log y vemos que la IP de las peticiones se inicia al principio de cada línea, por eso es la primera variables que detecta awk.

 
cat access_log-20160414 | awk '{print $1}' | sort | uniq -c | sort -gr | head

Una vez aplicado esto, obtendremos un resultado tal que:

 45911 XX.126.XX.120
 29396 XXX.104.XXX.61
 29296 XXX.68.5.2X9
 29042 XXX.238.1X2.156
 28554 XXX.54.36.213
 23404 XXX.247.X6.239
 21417 XXX.96.6X.108
 17821 XXX.163.0.154
 16371 XXX.247.52.14
 14938 XXX.67.5X.66

He maquillado con X las IP’s dado que es un ejemplo real. El siguiente paso podría ser  identificar alguna ip como sospechosa y bannearla en nuestro iptables, o en nuestro servidor apache.

Aunque pueda parecer una consecución de comandos algo ingenua, considero que la clave de todo está en el  “sort -gr” .  Con -g interpretamos como números las ocurrencias detectadas, y con -r las ordenamos al revés para que nos muestre las más numerosas al principio.

doctor-tux

Esto os va a ahorrar tiempo.

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s