Si has encontrado algún error, por favor publícalo en el informe de incidencias.
Sí, puedes limitar el número de sesiones solo para una página específica. Sin embargo, primero debes desactivar la opción "Límite de Sesiones en Línea" en el Panel de Firewall, ya que su alcance es global y no puede utilizarse en el mismo grupo de datos.
Después de desactivar el "Límite de Sesiones en Línea", puedes utilizar la API pública de Shieldon. Por ejemplo, considera el siguiente código:
if (strpos($_SERVER['REQUEST_URI'], 'faq/online-session-limit.html') !== false) {
$firewall->getKernel()->limitSession(5, 300);
}
Esta página limita el número máximo de usuarios a 5, permitiendo que cada usuario vea la página durante 300 segundos.
Cuando un usuario accede a esta página y se ha alcanzado el límite de usuarios, se mostrará un cuadro de diálogo similar a la siguiente captura de pantalla:
No he incluido la función "Bloquear todo" en el Panel de Firewall para evitar que algunas personas bloqueen todas las direcciones IP asociadas con la URL /. Esto bloquearía todas las URL, incluido el acceso al Panel de Firewall. En cambio, te sugiero utilizar el administrador de IP y configurar un rango de IP específico según sea necesario.
Si deseas bloquear todas las direcciones IP para una URL específica, el siguiente código te ayudará:
// Coloca este código antes de $firewall->run();
if (strpos($_SERVER['REQUEST_URI'], 'example/block-all.html') !== false) {
$firewall->getKernel()->getComponent('Ip')->denyAll();
}
Esta es una página de ejemplo que bloquea todas las direcciones IP que intenten acceder a ella.
Cuando un usuario es bloqueado, se encontrará con un cuadro de diálogo similar a la siguiente captura de pantalla.
Advertencia: Si haces clic en este enlace de ejemplo, serás bloqueado y no podrás acceder a este sitio web. Deberás esperar 60 minutos hasta que se levante el bloqueo.
El nombre de usuario predeterminado es shieldon_user
y la contraseña es shieldon_pass
. Después de iniciar sesión en el Panel de Firewall, lo primero que debes hacer es cambiar el nombre de usuario y la contraseña.
Para ataques DDoS de tipo HTTP a pequeña escala, mi respuesta es SÍ, pero el escenario real puede depender de muchos factores como el ancho de banda, la calidad del hardware, las configuraciones del sistema, la calidad del código y más.
Consideremos un ejemplo sencillo. Supongamos que tu sitio web tiene un tamaño promedio de página de 3 MB y tu servidor tiene un ancho de banda de 100 Mbps. Tu servidor puede manejar una velocidad de datos de aproximadamente 12,5 MB/s
. Si alguien decide atacar maliciosamente tu sitio web, ¿cuántas fuentes de ataque crees que se necesitarían para abrumar tu servidor? Esto ni siquiera tiene en cuenta la posible carga en tus conexiones de MySQL.
El Firewall Shieldon interrumpe estas conexiones maliciosas, mostrando una página CAPTCHA que tiene menos de 50 KB de tamaño. Detiene la ejecución adicional de scripts de PHP, previniendo más conexiones de MySQL. De esta manera, el Firewall Shieldon puede ahorrar memoria y uso de CPU cuando tu sitio web está bajo ataque. Sin embargo, esta es simplemente una estrategia de mitigación para ataques DDoS de tipo HTTP, no es una solución definitiva.