Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

Iniciar sessão: palavras-passe, autenticação de dois fatores e força bruta

Módulo 7: Segurança · Tempo de leitura: 9 minutos

Objetivo de aprendizagem: Após esta lição, é capaz de proteger o início de sessão do seu site com palavras-passe fortes, autenticação de dois fatores e limitação de tentativas de início de sessão, e sabe o que é o xmlrpc.php.

Conceitos-chave: gestor de palavras-passe, frase-passe, palavra-passe única, autenticação de dois fatores (2FA, TOTP), passkey, força bruta, limitação de tentativas de início de sessão, wp-login.php por endereço IP, xmlrpc.php, nomes de utilizador que são revelados (REST, ?author=), palavras-passe de aplicação

A palavra-passe: longa e única

Uma boa palavra-passe tem duas características:

  1. Longa: o comprimento conta mais do que caracteres estranhos. Uma frase-passe de quatro ou cinco palavras aleatórias (peneira-pinguim-outubro-lanterna) é mais forte e mais fácil de memorizar do que P4ssw0rd!. Recomenda-se uma palavra-passe única de pelo menos 12 caracteres, de preferência uma frase-passe.
  2. Única: não usada em mais nenhum lado. O credential stuffing (lição 7.1) só funciona se reutilizar uma palavra-passe.

Ninguém memoriza dezenas de palavras-passe longas e únicas. Por isso, utilize um gestor de palavras-passe: um programa que as cria, guarda e preenche por si. Assim só precisa de memorizar uma: a do próprio gestor, que também protege com autenticação de dois fatores.

Para saber se uma palavra-passe consta de uma fuga de dados conhecida, pode consultar haveibeenpwned.com. Se o seu endereço de e-mail constar de uma fuga, altere a palavra-passe em todos os serviços onde usou essa mesma palavra-passe.

Autenticação de dois fatores

Com a autenticação de dois fatores (2FA), para além da palavra-passe, precisa ainda de algo mais ao iniciar sessão: normalmente um código de seis dígitos gerado por uma aplicação no telemóvel (um autenticador, segundo o padrão TOTP). Um atacante que tenha a sua palavra-passe não consegue entrar.

O WordPress não tem autenticação de dois fatores incorporada. Adiciona-a com um plugin. Existem muitos; um simples é o Two Factor, criado por colaboradores do próprio WordPress. Os plugins de segurança também costumam incluí-la. Ao escolher, tenha em atenção:

  • aplicações TOTP e códigos de recuperação (para caso perca o telemóvel); os códigos por e-mail são mais fracos, porque a sua caixa de correio também pode ser pirateada;
  • a possibilidade de a tornar obrigatória para administradores e editores;
  • passkeys: iniciar sessão com a sua impressão digital, rosto ou uma chave de segurança, sem palavra-passe. Existem plugins para isso. As passkeys são resistentes a phishing, porque só funcionam no site verdadeiro.

Ative também a autenticação de dois fatores em tudo o que está à volta do seu site: o seu painel de alojamento, o seu e-mail, o seu registrar e o seu gestor de palavras-passe. Um atacante que tome conta do seu painel de alojamento não precisa da sua palavra-passe do WordPress.

Força bruta e limitação de tentativas de início de sessão

Um site WordPress aberto recebe tentativas de início de sessão em wp-login.php o dia todo, muitas vezes com admin e listas de palavras-passe comuns. Com uma palavra-passe longa e 2FA não conseguem entrar, mas cada tentativa custa processamento ao seu servidor (um arranque completo do WordPress). Numa vaga grande, o seu site fica lento.

O próprio WordPress não limita o número de tentativas. O que ajuda, por ordem de "bloquear o mais cedo possível":

  1. No servidor: muitos alojamentos bloqueiam um endereço IP que faça muitas tentativas falhadas num curto espaço de tempo, ainda antes de o WordPress arrancar (com uma firewall ou uma função do servidor web). Pergunte ao seu alojamento o que acontece.
  2. wp-login.php apenas para o seu endereço IP: com algumas linhas em .htaccess (no LiteSpeed e Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>

Isto funciona bem se tiver um endereço IP fixo. Se não tiver (em casa, no telemóvel), fica fora do seu próprio site se o endereço mudar. Uma alternativa é uma palavra-passe adicional na página de início de sessão (uma "pasta protegida", basic authentication) com uma palavra-passe diferente da sua palavra-passe do WordPress.

  1. Um plugin que limita tentativas: após cinco tentativas falhadas, o endereço IP fica bloqueado durante algum tempo. Funciona, mas só depois de o WordPress já estar a correr, pelo que o processamento continua a existir.

Ocultar ou renomear a página de início de sessão (por exemplo, /minha-entrada em vez de /wp-login.php) reduz o ruído no seu registo. Não é uma proteção real, e alguns plugins e temas esperam o endereço padrão. Serve bem como extra, nunca em vez de uma boa palavra-passe e 2FA.

xmlrpc.php

xmlrpc.php é uma ligação antiga de antes da REST API, através da qual aplicações e outras sites comunicam com o WordPress. Ainda é usada por algumas aplicações, pelo Jetpack e por algumas integrações. Para a maioria dos sites, é dispensável.

Os atacantes gostam do xmlrpc.php, porque permite experimentar centenas de palavras-passe de uma só vez num único pedido (com a função system.multicall), e porque pode ser utilizado em ataques a outros sites (pingbacks). O que fazer:

  • Não a utiliza: bloqueie-a. Alguns alojamentos, incluindo a WebOké, bloqueiam o xmlrpc.php por predefinição no servidor. Caso contrário, com uma linha em .htaccess ou com um plugin de segurança.
  • Utiliza-a (por exemplo, para uma aplicação que precisa dela): mantenha-a aberta, mas garanta palavras-passe fortes, 2FA e uma limitação de tentativas. As aplicações modernas costumam usar a REST API com uma palavra-passe de aplicação (lição 3.3).

Nomes de utilizador que são revelados

Na lição 3.3 viu que o WordPress mostra uma derivação dos nomes de utilizador:

  • https://example.com/?author=1 redireciona para /author/<nome>/;
  • https://example.com/wp-json/wp/v2/users mostra uma lista com os slugs de todos os que publicaram algo.

Isso é grave? Um nome de utilizador não é uma palavra-passe. Com uma palavra-passe longa e única e 2FA, faz pouca diferença. Mas dá a um atacante metade dos dados de início de sessão e facilita o phishing dirigido. Medidas razoáveis:

  • dê aos administradores um nome de utilizador que não seja o seu nome público, e não publique com uma conta de administrador (lição 3.3);
  • limite a lista de utilizadores na REST API com um plugin de segurança ou algumas linhas de código, se não precisar dela. Não feche completamente a REST API: o editor de blocos e muitos plugins precisam dela.

Palavras-passe de aplicação

As palavras-passe de aplicação (lição 3.3) são uma forma segura de dar acesso a uma aplicação ou sistema, mas contornam a sua autenticação de dois fatores: uma aplicação com uma palavra-passe de aplicação não precisa de código. Crie-as apenas quando necessário, numa conta com uma função de baixo nível, e revogue-as quando deixar de usar a integração.

Resumo

  • Utilize palavras-passe longas e únicas (frases-passe) num gestor de palavras-passe.
  • Ative a autenticação de dois fatores, com um plugin no WordPress e também no seu painel de alojamento, e-mail e registrar.
  • Bloqueie as tentativas de início de sessão o mais cedo possível: no servidor, com uma regra de IP ou palavra-passe adicional, ou com um plugin.
  • Bloqueie o xmlrpc.php se não o utilizar.
  • Nomes de utilizador revelados não são um desastre, mas sim um indício: não publique como administrador e limite a lista de utilizadores da REST se não precisar dela.

Questionário

1. Qual é a palavra-passe mais forte?



2. Porque é que o xmlrpc.php é popular entre os atacantes?



3. Restringe o wp-login.php ao endereço IP do seu escritório. Qual é o risco?



4. Renomear a página de início de sessão para um endereço secreto é proteção suficiente?



Exercício

Exercício A7.3: O que o seu site revela ao iniciar sessão? Introduza o endereço do seu site e comprove que é o seu próprio site (com o código do exercício, como registo TXT ou como ficheiro). O programa verifica três coisas: se xmlrpc.php devolve uma lista de funções (aberto) ou está bloqueado, se /wp-json/wp/v2/users mostra nomes de utilizador (slugs), e para onde /?author=1 redireciona. Indique se precisa do xmlrpc.php; se não precisar, um xmlrpc.php aberto fica a vermelho. Slugs revelados ficam a laranja com explicação.

Exercício A7.3: O que o seu site revela ao iniciar sessão?

Esta verificação pede caminhos que só deve indicar para o seu próprio site. Clique primeiro em "Mostrar o meu código" e coloque esse código como registo TXT em _weboke-cursus.<o seu domínio> ou como ficheiro no seu site (consulte a explicação junto ao código).



O que preenche e o que encontramos não ficam guardados. O seu navegador memoriza as suas respostas e se concluiu o exercício com sucesso. Se tiver sessão iniciada, guardamos apenas que concluiu o exercício (quase) com sucesso em Os meus cursos; aí também o pode eliminar.

Exercício D7.3: Ativar a autenticação de dois fatores. Ative a autenticação de dois fatores para todos os administradores do seu site WordPress, e também no seu painel de alojamento e no seu e-mail. Guarde os códigos de recuperação no seu gestor de palavras-passe. Assinale, por cada componente, que está ativa e anote qual o método que utiliza (aplicação, passkey, e-mail) e onde estão guardados os códigos de recuperação. Anote também como protege adicionalmente o wp-login.php e porque escolheu essa forma.

Exercício D7.3: Ativar a autenticação de dois fatores

Este exercício faz você mesmo; ninguém o verifica. Assinale o que já fez e marque o exercício como concluído.




As suas marcações e notas ficam apenas neste navegador; não as enviamos para lado nenhum. Se tiver sessão iniciada, guardamos em Os meus cursos apenas que concluiu o exercício.

Leitura adicional

Estes artigos descrevem os passos nos painéis da WebOké; noutros painéis funcionam de forma semelhante.

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…