Como é o meu laboratório?

Sempre que preciso instalar um site/serviço novo em WordPress eu sigo um fluxo que consiste em organizar as informações sobre o site e seguir um protocolo de instalação de plugins e configurações para me manter organizado, eficiente e evitar ataques.

Nos parágrafos abaixo irei comentar sobre alguns serviços que utilizo no que eu chamo de “laboratório”, que é toda essa suíte de apps e serviços que utilizo no dia a dia para manter os sites e sistemas no ar sem grandes problemas. Vamos a eles.

ManageWP + ManageWP Worker

Descobri por acaso o serviço do WP Manager [1]. Para quem tem muitos sites em WP vale a pena, pois o serviço gratuito faz jus ao nome e permite gerenciar vários sites em um único painel. Ele facilita a atualização de plugins, temas, verifica o uptime (se o site tá offline ou não – esse recurso é premium), fazer backups periódicos (tem free e premium) e manter organizado seus ambientes, inclusive dividindo entre clientes.

Para mim é bem útil pois antes de conhecê-lo eu entrava em site por site (e são muitos!) para fazer os updates e verificar alertas do WAF – Web Application Firewall Wordfence [3].

Em apenas um site eu utilizo os recursos premium. Nos outros, os serviços free são suficientes.

Freshping

O Freshping [2] é um serviço de verificação de uptime, ou seja, confirma de tempos em tempos se o site está no ar ou não. Para mim é importante pois em alguns momentos posso ter períodos de indisponibilidade, seja por alguma ocorrência na rede ou por indisponibilidade do servidor (já fiz um vídeo sobre alto processamento, lentidão e sites offline aqui).

Na sua versão grátis ele permite adicionar 50 sites para verificação – que tem as opções de ocorrer a cada 1 ou 5 minutos na versão free. Com um painel simples, consigo ter muitas informações (inclusive gráficas) em uma tela só, me dando um controle maior de forma prática, veja a imagem abaixo:

Muitas informações na tela!

Como podem ver, em uma tela temos várias informações, inclusive com uma precisão de milisegundos na coluna “Média de tempo de resposta” (AVG RESPONSE TIME).

Outra coisa bacana são os alertas, que chegam por email tão logo seja detectada indisponibilidade.

Eu acesso o Freshping diariamente para dar uma verificada no panorama geral, exceto quando recebo alertas de sites offline.

É gratificante entrar e ver todos os ícones verdes. 😀

Wordfence + Wordfence Central

Wordfence [3] é outro exemplo de situação que só resolvi mudar após acontecer algum problema. Comecei a sofrer centenas de ataques aos sites (existem vários sistemas automatizados – bots – que escaneiam a rede e atacam websites em WordPress automaticamente). Basicamente, os dois pilares da fragilidade nesses sistemas são: a) senhas fracas e b) scripts (plugins/temas) desatualizados.

Como eu disse, foi apanhando um bocado que eu descobri a necessidade de ter um WAF – Web Application Firewall, e o Wordfence é um dos melhores. Tem versões free e premium (esta primeira é suficiente) e impede milhares de situações de ataque aos sistemas. Já me salvou de muitas frias.

Alguns dias atrás conheci o Wordfence Central [4] que reúne todas as informações sobre os sites em um único painel (bem parecido com o Freshping e com o ManageWP) e envia alertas por email.

Como é meu setup do Wordfence?

No menu All Options eu costumo deixar assim:

Em View Customization eu ativo o “Display blocking menu item”, pois frequentemente algum usuário é bloqueado e eu preciso de acesso rápido para proceder com o desbloqueio. Geralmente usuários se bloqueiam errando muitas vezes a senha (isso é configuração do WF).

Em General Wordfence Options, eu ativo a opção “Hide WordPress Version” (os atacantes usam a versão para pesquisar vulnerabilidades e fazer fingerprinting – taí outra vantagem de deixar tudo sempre atualizado).

Em Email Alert Preferences desabilito tudo, exceto a opção “alert me with scan results of this severity level or greater”, que deixo “High”. Desta forma só receberei alertas quando algo de severidade alta estiver acontecendo (como eu entro diariamente no WF Central [4] não vejo a necessidade de receber alertas não críticos).

Em Brute Force Protection – é aqui que o bicho pega: os maiores ataques que recebo são de força bruta por bots. E são muitos ataques simultâneos, que podem comprometer o desempenho do servidor e numa situação mais drástica invadir o site. Com as configurações abaixo eu consigo diminuir bastante a incidência de tentativas de ataques.

Então, deixo assim:

  • Lock out after how many login failures: define quantas vezes o usuário pode errar login e senha antes de ser bloqueado. Coloco entre 3 e 5.
  • Lock out after how many forgot password attempts: define quantas vezes o usuário pode tentar redefinir a senha, também coloco um valor baixo, entre 3 e 5.
  • Count failures over what time period: nessa opção você define por quanto tempo as contagens acima serão acumuladas (se elas vão ser zeradas a cada hora, por exemplo). Eu coloco um período de tempo mais elástico, 1 dia.
  • Amount of time a user is locked out: tempo que o usuário fica “trancado” sem poder logar. Coloco muito tempo (caso seja um usuário ativo eu desbloqueio na mão): 1 mês.
  • Immediately lock out invalid usernames: ótima opção. Ele bloqueia nomes usuários inválidos. Em ataques de força bruta, os atacantes pegam listas com milhares de combinações de caracteres até tentar adivinhar qual seria algum nome de usuário válido. Desta forma, todos os inválidos já cairiam na lista negra, impedindo essas tentativas futuras.
  • Immediately block the IP of users who try to sign in as these usernames: Complementa a opção acima. Isso aqui irá bloquear os IPs de pessoas que tentarem logar com usuário inválido. Às vezes dá dor de cabeça pois o usuário pode errar o nome sem querer, mas é raro. Daí desbloqueio na mão.
  • Prevent the use of passwords leaked in data breaches: essa é muito importante. Frequentemente bancos de dados com senhas são vazados e o WF as adiciona uma blacklist de possíveis senhas que os atacantes podem utilizar. Com essa opção ativa você impede que seus usuários utilizem senhas que foram vazadas, diminuindo o risco.

Em geral, no WF eu utilizo essas configurações. É importante frisar que as configurações variam de ambiente para ambiente, pois cada site tem um contexto e uma quantidade de ataques diferentes, mas de forma geral essa é a essência.

Os dois pilares da fragilidade são as senhas fracas e scripts desatualizados.

Updraft Plus

Backup. Por muito tempo fiquei sem fazê-lo, acredite se quiser. Porém depois que fiz uma coisa errada (eu excluí todos os arquivos do servidor sem querer) percebi a importância. Desta forma, depois de muito pesquisar cheguei a conclusão que este é um dos melhores plugins de backup gratuitos que existem [5].

Como é meu setup do Updraft?

Como eu uso a versão gratuita, não tem muitos recursos disponíveis. Desta forma, na aba Configurações (a única que altero os parâmetros) fica assim:

  • Agendamento do backup de arquivos: deixo Mensalmente e para reter 2. Aqui varia muito, pois tem sites que são gigantes e tem sites que são pequenos. Depende muito do contexto. Em média, deixo desta forma;
  • Agendamento do backup de banco de dados: coloco Semanalmente e 8 retidos (que dá uma semana atrás + um dia). Como bancos de dados costumam ser arquivos menores, dá para guardar uma quantidade maior;
  • Escolha o seu armazenamento remoto: não seleciono nenhum, deixo gravado no servidor mesmo (aqui cabe um adendo: eu não faço backups somente pelo Updraft – faço também de todas as pastas do servidor e pelo ManageWP citado acima);
  • Incluído no backup de arquivos: eu desmarco a pasta Plugins, pois são scripts que posso baixar posteriormente, além de serem grandes. Desmarco também a opção “Quaisquer outros diretórios encontrados dentro do wp-content”, pois o principal de um backup é o banco de dados, os temas e os uploads;
  • Só.

Editor Clássico

Confesso: eu não me adaptei ao novo editor de blocos (Gutenberg). Lançado há alguns anos, eles trás uma forma diferente de editar posts e páginas. Muito mais visual e flexível. O problema é que depois de anos usando o clássico, não consegui me adaptar ao novato. Desta forma, sempre que configuro um novo ambiente, eu instalo o plugin “Editor Clássico” [7], que desabilita o Gutenberg e ativa o antigo.

Alguns usuários adaptados ao antigão também não curtiram muito o Gutenberg, por isso a instalação desse plugin entra no fluxo. Já deixo pronto.

Duplicator

Em grande parte dos projetos eu tenho que adicionar também o Duplicator [6], que é um plugin que faz a migração de todo o ambiente sem maiores dores de cabeça. Em poucos cliques você consegue transferir tudo do ambiente de homologação para o de produção.

Alguns pontos de atenção ao usar o Duplicator:

  • Os ambientes de homologação e produção devem ter versões de PHP iguais ou, ao menos, compatíveis (eu já devo ter feito centenas de migrações e só tive problemas de versão em uma vez – mesmo assim fica aqui a ressalva);
  • Você precisa ter acesso ao servidor (FTP) para fazer o upload do monolito compactado;
  • Se o site for muito grande, pode dar “timeout” no servidor, que é quando ele para a execução depois de um tempo (ficar cinco minutos compactando um arquivo gigante, por exemplo);
  • Você precisa criar um banco de dados e um usuário com acessos privilegiados no seu painel de hospedagem (eu uso cPanel e nunca tive problemas).

Planilhas

Em uma postagem anterior eu citei o quanto uso as planilhas eletrônicas. Com os projetos web não é diferente: eu tenho tudo anotadinho em uma grande planilha do Google Sheets. Diretório do site, nome do banco de dados (uso muito para fazer exclusões e migrações), em qual servidor está, como está configurado o backup, etc. A planilha é o meu dashboard principal e o pontapé inicial do fluxo, e é nela inclusive que está anotado este fluxo aqui. Como a quantidade de sites é grande tudo deve ser muito bem documentado para não confundir a cabeça.

Obviamente as senhas ficam em outro local, não deixo em texto plano na planilha.

Conclusão

Enfim, essas são as principais ações que tomo quando chega um novo projeto de sistemas em WordPress. Como disse acima, as configurações dependem muito do contexto de cada projeto, mas em geral é isso o que foi descrito. Caso tenha dúvidas na configuração das ferramentas aqui citadas, entre em contato que te ajudo.

Links e Referências

[1] https://managewp.com/

[2] https://www.freshworks.com/website-monitoring/

[3] https://www.wordfence.com/

[4] https://www.wordfence.com/try-central/

[5] https://wordpress.org/plugins/updraftplus/

[6] https://br.wordpress.org/plugins/duplicator/

[7] https://br.wordpress.org/plugins/classic-editor/