PS PrestaShop Intermédio

Admin Shield: proteger o back office do PrestaShop 8 e 9

Instalar e configurar o Admin Shield: limite de tentativas, bloqueio por IP e país, captcha, ligação secreta, alertas, sessões, registo de atividade e relatório.

Atualizado Versão do módulo 1.3.0

O Admin Shield protege o acesso ao back office do PrestaShop 8 e 9. O módulo configura-se em Parâmetros avançados > Admin Shield, organizado em sete separadores: Painel, Histórico de acessos, Registo de atividade, Sessões ativas, Banimentos e bloqueios, Definições e Acesso ao back office.

Instalação

  1. Em Módulos > Gestor de módulos, clique em Carregar um módulo e envie o ficheiro ZIP.
  2. A instalação limpa a cache do PrestaShop: todas as páginas do back office ficam protegidas a partir do pedido seguinte.
  3. O módulo concede a todos os perfis de funcionário a permissão de ver o módulo. Sem ela, o PrestaShop não executaria os seus hooks para esses funcionários e as suas ações não seriam registadas.

Primeiras definições recomendadas

  1. Separador Definições, bloco Endereços IP: clique em Adicionar o meu IP atual à lista branca. Um IP da lista branca nunca é bloqueado.
  2. Verifique a linha IP do cliente detetado. Atrás do Cloudflare ou de um proxy, mantenha o modo Automático ou escolha o modo adequado.
  3. Configure a verificação anti-bot (ver abaixo) e teste as chaves.
  4. Clique em Enviar-me um e-mail de teste para confirmar que os e-mails da loja são enviados.
  5. Separador Acesso ao back office: renomeie a pasta admin se a lista de verificação a indicar como fácil de adivinhar.

Teste cada proteção a partir de uma janela de navegação privada sem fechar a sua sessão principal.

Limite de tentativas de início de sessão

Por predefinição, 5 falhas na mesma conta a partir do mesmo IP, ou 15 falhas a partir de um IP em todas as contas, numa janela de 15 minutos, bloqueiam o acesso durante 15 minutos. Com o bloqueio progressivo, a duração duplica a cada repetição em 24 horas, até 24 horas. Após 3 bloqueios em 24 horas, o IP é banido durante 7 dias. O bloqueio aplica-se ao par IP e conta: um atacante não consegue bloquear um funcionário legítimo que se liga a partir de outro endereço. Os pedidos de senha esquecida estão limitados a 5 por IP e por hora.

O separador Banimentos e bloqueios lista os bloqueios ativos, que pode levantar, e os banimentos, que pode remover. Também pode banir manualmente um IP ou um intervalo CIDR.

Endereços IP e filtro por país

A lista branca aceita IP e intervalos CIDR IPv4 e IPv6, um por linha. A opção Permitir apenas a lista branca recusa qualquer outro endereço; só é guardada se o seu IP atual estiver na lista.

O filtro por país funciona em modo permitir (apenas os países escolhidos) ou bloquear. O país vem do cabeçalho do Cloudflare quando o pedido vem mesmo dos seus servidores, caso contrário de uma base MMDB. Clique em Transferir a base DB-IP Lite para instalar a base de países gratuita, a atualizar mais ou menos de dois em dois meses. Os endereços da rede local nunca são filtrados, e a gravação é recusada se bloquear a sua própria ligação.

Os visitantes recusados recebem uma página 403, ou uma página 404 se preferir ocultar a existência do back office.

Verificação anti-bot: Turnstile ou hCaptcha

  1. Crie um widget em dash.cloudflare.com (Turnstile) ou dashboard.hcaptcha.com, autorizando o domínio do seu back office.
  2. Nas Definições, escolha o fornecedor, cole a chave do site e a chave secreta e guarde.
  3. Resolva o widget de teste e clique em Verificar e ativar.

A verificação só se aplica à página de acesso após este teste bem-sucedido: uma chave errada não consegue bloquear os administradores. Qualquer alteração das chaves desativa-a até ao teste seguinte. Por predefinição, os acessos passam se o fornecedor estiver inacessível.

Acesso ao back office: ligação secreta e pasta admin

Ligação de acesso secreta

Depois de ativada, o back office só abre num navegador que tenha visitado a ligação secreta uma vez; todos os outros recebem uma página 404. O navegador que a ativa mantém o acesso, e a ligação é enviada por e-mail aos destinatários dos alertas. Gerar uma nova ligação invalida todos os navegadores exceto o seu. Os IP da lista branca nunca precisam da ligação.

Renomear a pasta admin

É sugerido um nome aleatório. Antes da renomeação, o novo endereço é enviado por e-mail; depois a pasta é renomeada e a cache limpa. Volte a iniciar sessão no novo endereço e atualize as tarefas cron que apontam para a pasta antiga. Se o servidor web não puder renomear a pasta, faça-o por FTP e depois limpe a cache em Parâmetros avançados > Desempenho.

Alertas de início de sessão invulgar

O primeiro início de sessão de cada funcionário após a instalação serve de referência. Depois, é enviado um alerta para um novo IP, um novo país, um novo navegador ou sistema, ou um acesso fora do horário indicado (por exemplo 07-21). Os destinatários são o funcionário, os superadministradores e os endereços adicionais. A ligação Não fui eu do e-mail, válida durante 7 dias, bane o IP, fecha as sessões do funcionário e invalida a sua senha; o funcionário escolhe uma nova com Esqueceu a senha?

O campo webhook publica também estes alertas, os bloqueios e as alterações sensíveis no Slack, Microsoft Teams, Discord, Google Chat ou Mattermost.

Sessões ativas e inatividade

O separador Sessões ativas lista as sessões abertas com o IP, o país e o dispositivo do acesso. Pode fechar uma sessão, terminar todas as suas outras sessões ou terminar a sessão de um funcionário em todo o lado. A definição Terminar sessão após inatividade fecha as sessões inativas para além do prazo escolhido; as atualizações automáticas do back office não contam como atividade.

Registo de atividade

Cada criação, alteração e eliminação feita no back office é registada com o funcionário, o IP, a página e, numa alteração, o valor anterior e o novo de cada campo. As senhas e os tokens são ocultados. As instalações, desinstalações e atualizações de módulos também são registadas. As alterações de funcionários, perfis, chaves API, URL da loja e as instalações de módulos são marcadas como sensíveis e enviadas por e-mail aos administradores. Filtre por funcionário, ação ou objeto e exporte em CSV. Adicione nas Definições as classes de objetos que não devem ser registadas.

Relatório de segurança

O relatório é enviado todas as semanas ou todos os meses aos superadministradores e aos endereços adicionais. Para um envio fiável, chame uma vez por dia o URL de cron indicado nas Definições. Sem cron, o relatório é enviado na visita seguinte ao back office depois de chegar a data. O botão Enviar-me o relatório agora serve de pré-visualização.

Acesso de emergência

Se ficar bloqueado, crie por FTP um ficheiro vazio chamado disable.flag em modules/dfadminshield/: todas as proteções param até ser eliminado. Não apague a pasta do módulo, o contentor Symfony do PrestaShop faz-lhe referência. O valor DFAS_KEY da tabela configuration contém a chave da ligação secreta.

Autenticação de dois fatores

O Admin Shield protege a página de acesso e vigia os acessos, sem pedir um código após a senha. Para acrescentar esse passo, instale também o módulo 2FA Google Authenticator da DataFirefly: os dois funcionam em conjunto.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte