Introducción
La seguridad de un sitio web no solo depende de firewalls o plugins. Una forma muy eficaz de detectar ataques tempranos es implementar un sistema que avise cuando haya accesos sospechosos, como muchos intentos desde la misma IP, bots o scrapers masivos.
En este artículo te enseño cómo crear un sistema de alertas ante accesos sospechosos en PHP. Está pensado tanto para desarrolladores como para quienes no tienen conocimientos técnicos.
Índice
- 1. Por qué detectar accesos sospechosos
- 2. Datos recomendados a registrar
- 3. Script PHP para registrar accesos y disparar alertas
- 4. Ejemplo de log generado
- 5. Buenas prácticas y RGPD
- 6. Conclusión
1. Por qué detectar accesos sospechosos
- 🔐 Identificar ataques de fuerza bruta (múltiples intentos de login).
- 📈 Detectar scrapers que copian datos de tu web.
- 🚨 Evitar saturación de tu servidor por bots no deseados.
2. Datos recomendados a registrar
Dato | Descripción |
---|---|
IP | Identificar el origen de la visita. |
User-Agent | Navegador o bot que hace la petición. |
URL accedida | Página que intenta visitar. |
Fecha y hora | Para analizar patrones de comportamiento. |
Recuento de accesos | Número de veces que la IP ha accedido. |
3. Script PHP para registrar accesos y disparar alertas
A continuación un script PHP que:
- Registra accesos en un archivo de log.
- Cuenta cuántas veces se repite una misma IP.
- Dispara un email de alerta si una IP supera 50 accesos en 10 minutos.
<?php // Configuración $limite = 50; // Máximo accesos permitidos $tiempo = 600; // Segundos (10 min) $ip = $_SERVER['REMOTE_ADDR'] ?? 'desconocida'; $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? 'desconocido'; $url = $_SERVER['REQUEST_URI'] ?? 'desconocido'; $time = time(); $registro = "$time|$ip|$user_agent|$url\n"; file_put_contents(__DIR__.'/logs/accesos.log', $registro, FILE_APPEND); // Analizar el log $conteo = 0; $lines = file(__DIR__.'/logs/accesos.log'); foreach ($lines as $line) { list($log_time, $log_ip) = explode('|', $line); if ($ip == $log_ip && ($time - (int)$log_time) < $tiempo) { $conteo++; } } if ($conteo > $limite) { $mensaje = "Alerta: La IP $ip ha accedido $conteo veces en los últimos 10 minutos."; mail("tuseguridad@tuweb.com", "Alerta de Acceso Sospechoso", $mensaje); } ?>
Explicación:
- Guarda cada acceso en un log separado por pipe (|).
- Cuenta cuántas veces aparece la misma IP en los últimos 10 minutos.
- Envía un correo si supera el límite configurado.
4. Ejemplo de log generado
1718123456|203.0.113.45|Mozilla/5.0|/login 1718123460|203.0.113.45|Mozilla/5.0|/login
Esto facilita revisar qué URLs son atacadas y con qué frecuencia.
5. Buenas prácticas y RGPD
- 💾 Borra o rota el log cada cierto tiempo.
- 🔐 Guarda el archivo de log fuera de la carpeta pública.
- ⚖️ Informa en tu política de privacidad si registras IPs.
6. Conclusión
Con un script sencillo en PHP puedes detectar patrones sospechosos y proteger tu web antes de que un ataque tenga éxito.
📩 ¿Quieres implementar algo más avanzado con panel y alertas? ¡Contáctanos!