
Como administrador de un servidor web, es importante monitorear y analizar el tráfico hacia y desde su servidor web, incluida la identificación de direcciones IP de nivel superior para obtener información sobre los patrones de tráfico y las posibles amenazas a la seguridad.
Un beneficio de identificar la dirección IP de nivel superior al acceder a un servidor web es la existencia de un archivo de registro de acceso, que almacena información sobre cada actividad de acceso que ocurre en el servidor.
Siempre es importante utilizar archivos de registro porque le permiten comprender todo lo que sucede dentro de su sistema o aplicación (en este caso, el servidor web Apache).
Si surge algún problema relacionado con el rendimiento o el acceso, los archivos de registro pueden ayudar a identificar qué pudo haber salido mal o qué está pasando.
En este artículo, exploraremos cómo usar comandos en Linux para encontrar las 10 principales direcciones IP que acceden a un servidor web Apache o Nginx.
Acceder a los archivos de registro del servidor web
El primer paso es acceder al archivo de registro generado por el servidor web, que contiene información detallada sobre cada solicitud realizada al servidor, incluida la dirección IP del cliente que accede al servidor.
La ruta predeterminada es apache El registro del servidor web es:
/var/log/httpd/access_log [For RedHat based systems] /var/log/apache2/access.log [For Debian based systems]
La ruta predeterminada es nginx El registro del servidor web es:
/var/log/nginx/access_log
Vea el registro usando cualquier editor de texto de su elección. Si su servidor Apache utiliza un archivo de registro o una ubicación diferente, ajuste el comando en consecuencia.
Encuentre las 10 mejores IP para servidores web
Para encontrar las 10 direcciones IP principales de los servidores web que acceden a este dominio, puede utilizar el comando awk.
Encuentra una dirección IP única apache Servidor web, utilice:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10
Encuentra una dirección IP única nginx Servidor web, utilice:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
salida de muestra:
5482 103.28.37.178 5356 66.249.78.168 1977 66.249.93.145 1962 157.55.39.251 1924 66.249.93.142 1921 66.249.93.148 1890 64.233.173.178 1860 108.61.183.134 1841 64.233.173.182 1582 157.55.39.251
Explicación del comando anterior:
awk '{print $1}'– Extraiga la primera columna (dirección IP) del registro.sort– Ayuda a ordenar líneas en el archivo access.log,-nLa opción compara sumas de filas basadas en valores de cadena.-rOpción de invertir el resultado de la comparación.uniq– Ayuda para informar sumas de filas duplicadas-cLa opción ayuda a prefijar líneas según el número de apariciones.head -n 10– Muestra las 10 direcciones IP principales.
Alternativamente, puede usar el comando grep para filtrar los registros de acceso para un rango de tiempo específico o una coincidencia de patrón.
grep "2023-10-10 12:00" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
Para automatizar este proceso, puede configurar un script que se ejecute periódicamente para extraer y analizar los registros de acceso. Luego, el script puede enviar los resultados por correo electrónico o activar una alerta cuando ciertas direcciones IP superen los umbrales definidos.
#!/bin/bash
# Define variables
LOG_FILE="/var/log/nginx/access.log"
OUTPUT_FILE="/path/to/output.txt"
# Run the command and save the output
result=$(awk '{print $1}' "$LOG_FILE" | sort | uniq -c | sort -nr | head -10)
# Save the result to a file
echo "$result" > "$OUTPUT_FILE"
# Optionally, you can also send an email with the result
# mail -s "Top 10 IP Addresses Report" [email protected] < "$OUTPUT_FILE"
Recuerde ajustar las variables del script a su entorno específico.
generalizar
Hay muchas maneras de lograr esto, si conoce una mejor manera, puede compartirla en los comentarios, si tiene alguna sugerencia o pregunta, recuerde dejar un comentario en la sección de comentarios a continuación y lo discutiremos juntos.










