Ver y examinar tu access.log a través de SSH

Generalidades

Es posible que encuentres abuso de IP específicas, y a menudo esto se debe a que los bots golpean tu sitio. Sin embargo, también puedes encontrar direcciones IP que no están asociadas con los robots que navegan demasiado en tu sitio.

Esta sección enumera algunos comandos que puedes ejecutar a través de SSH para ayudar a identificar qué IP están afectando tu sitio.

Los registros se rotan diariamente, lo que significa que solo hay unos pocos días en cualquier momento. Si necesitas registros a largo plazo, debes respaldarlos continuamente. Por GDPR, DreamHost almacena registros HTTP de forma predeterminada durante 3 días.

Iniciar sesión en tu servidor

Para ejecutar los siguientes comandos, primero debes iniciar sesión en tu servidor a través de SSH:

Después de iniciar sesión, navega al directorio de registros correcto.

¿Qué directorio de registros debo ver?

Si ha agregado un certificado SSL a su sitio web, verá dos carpetas. Uno para / http y otro para / https. Por ejemplo: 

  • /logs/example.com/http
  • /logs/example.com/https

Si visitas tu sitio y ves que está usando HTTPS en la URL (https://example.com), esto significa que debes ver el directorio/https. Si tu sitio muestra HTTP cuando lo visitas, deberías ver el directorio/http en su lugar. Los siguientes ejemplos asumen que tu sitio está usando HTTPS.

[server]$ cd ~/logs/example.com/https

Aquí es donde ejecutará los siguientes comandos.

Listado de visitas de IP

Comando Descripción
[server]$ cat access.log| awk '{print $1}' | sort | uniq -c |sort -n
Genera una lista de direcciones IP precedida por la cantidad de veces que llega a un sitio.
[server]$ tail -10000 access.log| awk '{print $1}' | sort | uniq -c |sort -n
Genera una lista que muestra los últimos 10,000 accesos a un sitio.
[server]$ host 66.249.66.167
167.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-167.googlebot.com
El comando 'host' determina la compañía de hosting desde la cual una IP específica está golpeando un sitio. En este ejemplo, la IP pertenece a Google.
[server]$ tail -f -q access.log
Mira los registros de su servidor en tiempo real para ver si el problema se presenta con una IP específica (para problemas intermitentes).
order allow,deny
deny from 66.249.66.167
allow from all 
Bloquea la IP en un archivo .htaccess. En este ejemplo, el archivo .htaccess bloquea la IP de Google anterior.

Listado de archivos, carpetas y dominios principales

Comando Descripción
[server]$ awk '{print $7}' access.log|cut -d? -f1|sort|uniq -c|sort -nk1|tail -n10
Genera una lista de archivos o directorios en su sitio que se llama más.
[server]$ for k in `ls -S */https/access.log`; do wc -l $k | sort -r -n; done
  • Genera una lista de tráfico para todos los dominios listados bajo un usuario específico (en un servidor compartido).
  • Este comando debe ejecutarse en su directorio /logs/.

SHELL usuarios en un VPS o plan Dedicado

Los siguientes comandos solo muestran sitios bajo un solo usuario Shell. Si necesitas ver todos los registros del sitio en su servidor, ve la sección a continuación titulada 'Usuarios administradores en un plan Dedicado'

Comando Descripción
[server]$ for k in `ls -S /home/*/logs/*/https/access.log`; do wc -l $k | sort -r -n; done
  • Genera una lista de todo el tráfico para todos los dominios bajo un solo usuario de SHELL.
  • Puede ejecutar este comando desde cualquier directorio.
[server]$ tail -f -q /home/*/logs/*/https/access.log
  • Mira los registros de tu servidor (bajo un solo usuario de Shell) en tiempo real para ver si el problema se presenta con una IP específica (para problemas intermitentes).
  • Puedes ejecutar este comando desde cualquier directorio.

Administrar usuarios en un plan dedicado

Los siguientes comandos solo funcionan si tiene un usuario 'Admin' en tu servidor dedicado. Luego debe cambiar a su usuario 'root'. Sólo entonces verás todos los registros de todos los sitios en tu servidor.

Cómo cambiar al usuario 'root' después de iniciar sesión como usuario 'admin'

Los siguientes pasos detallan cómo iniciar sesión como usuario 'root' en tu servidor DESPUÉS de iniciar sesión como tu usuario 'admin' primero.

  1. Inicie sesión en tu servidor como su usuario 'admin'.
  2. Corre 'sudo su':
    [server]$ sudo su
    [sudo] password for exampleuser:
    
  3. Ingresa tu contraseña para su usuario 'admin'.
  4. Ahora ha iniciado sesión como usuario 'root'. Puedes ver esto en el símbolo del sistema:
    root@ds123456#
    
Después de iniciar sesión como usuario 'root', ejecuta los siguientes comandos para ver los registros de todos los sitios en tu servidor.
Comando Descripción
[server]$ for k in `ls -S /home/*/logs/*/https/access.log`; do wc -l $k | sort -r -n; done
  • Genera una lista de todo el tráfico para todos los dominios en un servidor dedicado.
  • Puedes ejecutar este comando desde cualquier directorio.
[server]$ tail -f -q /home/*/logs/*/https/access.log
  • Mira los registros de tu servidor en tiempo real para ver si el problema se presenta con una IP específica (para problemas intermitentes).
  • Puedes ejecutar este comando desde cualquier directorio.

Mi IP única está haciendo muchas conexiones

Puedes encontrar en tu access.log que la IP única de tu sitio está haciendo muchas conexiones. Esto no es un problema y puede ignorarse con seguridad.

Esto ocurre porque Apache está generando internamente estas conexiones para cerrar procesos innecesarios.

Puedes leer más al respecto aquí.

Solución de problemas

Puedes ver la siguiente respuesta de error después de ejecutar el comando para ver todo el tráfico de todos los dominios en un servidor.

[server]$ for k in `ls -S /home/*/logs/*/https/access.log`; do wc -l $k | sort -r -n; done
ls: cannot access /home/*/logs/*/https/access.log: No such file or directory

Este error ocurre cuando ejecuta el comando como un usuario SFTP. Debes ejecutarlo como usuario 'Shell' en un VPS o usuario 'Shell' o 'Admin' en un servidor dedicado.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?