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.
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
- Em Módulos > Gestor de módulos, clique em Carregar um módulo e envie o ficheiro ZIP.
- A instalação limpa a cache do PrestaShop: todas as páginas do back office ficam protegidas a partir do pedido seguinte.
- 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
- Separador Definições, bloco Endereços IP: clique em Adicionar o meu IP atual à lista branca. Um IP da lista branca nunca é bloqueado.
- 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.
- Configure a verificação anti-bot (ver abaixo) e teste as chaves.
- Clique em Enviar-me um e-mail de teste para confirmar que os e-mails da loja são enviados.
- 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
- Crie um widget em dash.cloudflare.com (Turnstile) ou dashboard.hcaptcha.com, autorizando o domínio do seu back office.
- Nas Definições, escolha o fornecedor, cole a chave do site e a chave secreta e guarde.
- 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.