Configuración

El Firewall de Shieldon tiene un amplio conjunto de configuraciones que te permiten personalizar su comportamiento. A continuación se muestra una descripción de las propiedades disponibles para configurar:

Puedes ajustar la configuración al inicializar una instancia de Shieldon, o utilizando más adelante las API setProperty o setProperties.

Inicialización


$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel = new \Shieldon\Shieldon($config);

setProperty

$kernel->setProperty('time_unit_quota', [
    's' => 2, 'm' => 10, 'h' => 30, 'd' => 60
]);

setProperties


$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel->setProperties($config);

Valores predeterminados

clave tipo valor
time_unit_quota array ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
time_reset_limit entero 3600
interval_check_referer entero 5
interval_check_session entero 30
limit_unusual_behavior array ['cookie' => 5, 'session' => 5, 'referer' => 10]
cookie_name cadena ssjd
cookie_domain cadena "

Parámetros

time_unit_quota

Esta configuración te permite definir los límites de visitas a páginas para los usuarios de tu sitio web en función de una unidad de tiempo determinada. Las claves del array son 's' (segundo), 'm' (minuto), 'h' (hora) y 'd' (día), y cada clave corresponde al límite de visitas a páginas por usuario para esa unidad de tiempo. El valor predeterminado es ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]

  • array
clave valor descripción
s entero Visitas a páginas por visitante por segundo
m entero Visitas a páginas por visitante por minuto
h entero Visitas a páginas por visitante por hora
d entero Visitas a páginas por visitante por día
  • Si solo deseas limitar a un usuario a ver 100 páginas al día, simplemente establece s, m, h en un número muy alto y establece d en 100.

  • Ten en cuenta que cuando los usuarios alcanzan el límite, se les bloquea temporalmente y pueden ser desbloqueados resolviendo un Captcha, así que no establezcas los valores muy altos, de lo contrario no tendría sentido utilizar esta librería.

time_reset_limit

Es el tiempo en segundos después del cual se reinicia el contador de filtros. El valor predeterminado es 3600 (1 hora).

interval_check_referer

Al igual que interval_check_referer, esta propiedad establece el retraso en segundos antes de que Shieldon comience a comprobar la cookie SESSION de un usuario. El valor predeterminado es 30 segundos.

Cuando un usuario visita tu sitio web por primera vez ingresando la URL en el navegador, el HTTP_REFERER está vacío. Después de interval_check_referer segundos, Shieldon comenzará a comprobar el HTTP_REFERER.

Puedes ignorar este valor.

interval_check_session

Cuando un usuario visita tu sitio web por primera vez, después de interval_check_session segundos, Shieldon comenzará a comprobar la cookie SESSION.

limit_unusual_behavior

Esta configuración te permite definir los límites para ser marcado como un comportamiento inusual basado en ciertas condiciones.

El valor predeterminado es ['cookie' => 5, 'session' => 5, 'referer' => 10].

Establece los límites y cuotas para ser marcado como un comportamiento inusual para los visitantes de tu sitio web.

  • array
clave valor descripción
cookie entero Cookie generada por JavaScript.
session entero Sesión de PHP
referer entero HTTP_REFERER

cookie_name

Esta propiedad se utiliza para especificar el nombre de la cookie que utiliza Shieldon. El valor predeterminado es ssjd.

cookie_domain

Esta propiedad define el dominio al que se restringe la cookie. De forma predeterminada, la cookie está disponible para todos los subdominios del servidor.

deny_attempt_enable

Si habilitas esta opción, Shieldon registrará cada fallo consecutivo de CAPTCHA. Una vez que un usuario alcance el límite especificado, Shieldon lo clasificará como una IP bloqueada en la tabla de reglas, lo cual persiste hasta que comienza el nuevo ciclo de datos.

Incluso cuando está bloqueado, los usuarios aún pueden acceder a la página de advertencia. Sin embargo, si consistentemente no pueden resolver el CAPTCHA, es muy probable que no sean humanos. En respuesta, Shieldon los agrega a la lista negra del firewall del sistema, lo que los prohíbe permanentemente.

Por defecto:

'deny_attempt_enable' => [
        'data_circle'     => false,
        'system_firewall' => false,
    ],

record_attempt_detection_period

Para evitar agregar bots de plataformas sociales al firewall de iptables, como los de Facebook, Line y otros que obtienen capturas de pantalla de tus páginas web, debes ajustar los valores a continuación según tus necesidades. (Unidad: segundos)

Por defecto:

'record_attempt_detection_period' => 5,

reset_attempt_counter

Este parámetro determina cada cuánto tiempo (en segundos) se reinicia el contador de intentos. En este caso, el contador se reinicia cada 30 minutos.

Por defecto:

'reset_attempt_counter' => 1800,

iptables_watching_folder

Este parámetro es el directorio que el servicio iptables supervisa en busca de comandos del Firewall de Shieldon. En este caso, está supervisando el directorio temporal '/tmp/'.

Otros

Para cualquier propiedad que no se mencione aquí, puedes consultar la función get_default_properties() de la clase Shieldon\Firewall\Helpers.

/**
 * Las configuraciones predeterminadas del núcleo de Shieldon.
 *
 * @return array
 */
function get_default_properties(): array
{
    return [
        'time_unit_quota' => [
            's' => 2,
            'm' => 10,
            'h' => 30,
            'd' => 60
        ],
        'time_reset_limit' => 3600,
        'interval_check_referer' => 5,
        'interval_check_session' => 5,
        'limit_unusual_behavior' => [
            'cookie' => 5,
            'session' => 5,
            'referer' => 10
        ],
        'cookie_name' => 'ssjd',
        'cookie_domain' => '',
        'cookie_value' => '1',
        'display_online_info' => true,
        'display_user_info' => false,
        'display_http_code' => false,
        'display_reason_code' => false,
        'display_reason_text' => false,

        'deny_attempt_enable' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_notify' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_buffer' => [
            'data_circle' => 10,
            'system_firewall' => 10,
        ],
        'record_attempt_detection_period' => 5,
        'reset_attempt_counter' => 1800,
        'iptables_watching_folder' => '/tmp/',
    ];
}

Nota: Puedes establecer estas propiedades durante la inicialización de la instancia de Shieldon o más tarde utilizando las API setProperty o setProperties.