Configuração

O Firewall Shieldon possui um conjunto abrangente de configurações que permitem personalizar seu comportamento. Abaixo está uma descrição das propriedades disponíveis para configuração:

Você pode ajustar as configurações ao inicializar a instância do Shieldon ou usar as APIs setProperty ou setProperties posteriormente.

Inicializando


$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 Padrão

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

Parâmetros

time_unit_quota

Essa configuração permite definir os limites de visualizações de página para os usuários do seu site com base em uma unidade de tempo específica. As chaves do array são 's' (segundo), 'm' (minuto), 'h' (hora) e 'd' (dia), cada chave corresponde ao limite de visualizações de página por usuário para essa unidade de tempo. O padrão é ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]

  • array
chave valor descrição
s inteiro Visualizações de página por visitante por segundo
m inteiro Visualizações de página por visitante por minuto
h inteiro Visualizações de página por visitante por hora
d inteiro Visualizações de página por visitante por dia
  • Se você deseja limitar um usuário a ver apenas 100 páginas por dia, basta definir s, m e h como um número muito alto e definir d como 100.

  • Lembre-se de que quando os usuários atingem o limite, eles são temporariamente bloqueados e podem ser desbloqueados resolvendo um Captcha, portanto, não defina os valores muito frouxos, caso contrário, não faria sentido usar esta biblioteca.

time_reset_limit

Este é o tempo em segundos após o qual o contador de filtros é redefinido. O valor padrão é 3600 (1 hora).

interval_check_referer

Similar a interval_check_referer, essa propriedade define o atraso em segundos antes de Shieldon começar a verificar o cookie SESSION de um usuário. O padrão é 30 segundos.

Quando um usuário visita seu site pela primeira vez, digitando a URL no navegador, o HTTP_REFERER está vazio. Após interval_check_referer segundos, Shieldon começará a verificar o HTTP_REFERER.

Você pode ignorar esse valor.

interval_check_session

Quando um usuário visita seu site pela primeira vez, após interval_check_session segundos, Shieldon começará a verificar o cookie SESSION.

limit_unusual_behavior

Esta configuração permite definir os limites para serem marcados como comportamento incomum com base em certas condições.

O padrão é ['cookie' => 5, 'session' => 5, 'referer' => 10].

Configurando os limites e quotas para serem marcados como comportamento incomum para os visitantes do seu site.

  • array
chave valor descrição
cookie inteiro Cookie gerado por JavaScript.
session inteiro Sessão do PHP
referer inteiro HTTP_REFERER

cookie_name

Esta propriedade é usada para especificar o nome do cookie usado pelo Shieldon. O padrão é ssjd.

cookie_domain

Esta propriedade define o domínio para o qual o cookie está restrito. Por padrão, o cookie está disponível para todos os subdomínios no servidor.

deny_attempt_enable

Se você habilitar essa opção, o Shieldon registrará todas as falhas consecutivas de CAPTCHA. Quando um usuário atingir o limite especificado, o Shieldon o classificará como um IP bloqueado na tabela de regras, o que persiste até o início do novo ciclo de dados.

Mesmo quando bloqueado, os usuários ainda podem acessar a página de aviso. No entanto, se eles consistentemente falharem em resolver o CAPTCHA, é altamente provável que não sejam humanos. Em resposta, o Shieldon os adiciona à lista de bloqueio do firewall do sistema, efetivamente os banindo permanentemente.

Padrão:

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

record_attempt_detection_period

Para evitar adicionar bots de plataformas sociais ao firewall do iptables, como os do Facebook, Line e outros que capturam imagens das suas páginas da web, você deve ajustar os valores abaixo conforme necessário. (Unidade: segundos)

Padrão:

'record_attempt_detection_period' => 5,

reset_attempt_counter

Este parâmetro determina quanto tempo (em segundos) até o contador de tentativas ser redefinido. Neste caso, o contador é redefinido a cada 30 minutos.

Padrão:

'reset_attempt_counter' => 1800,

iptables_watching_folder

Este parâmetro é o diretório monitorado pelo serviço iptables para comandos do Firewall Shieldon. Neste caso, está monitorando o diretório temporário '/tmp/'.

Outros

Para quaisquer propriedades não mencionadas aqui, você pode consultar a função get_default_properties() na classe Shieldon\Firewall\Helpers.

/**
 * As configurações padrão do núcleo do 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/',
    ];
}

Observação: Você pode definir essas propriedades durante a inicialização da instância do Shieldon ou posteriormente usando as APIs setProperty ou setProperties.