Como implementar o WordPress da forma correta e segura

Considerações Iniciais

Este artigo visa uma abordagem diferente sobre a implementação do WordPress. É definitivamente mais do que um passo-a-passo ou tutorial, é um guia para a implementação correta e segura do WordPress e um convite para você considerar e analisar cada tópico de forma individual.

Há uma longa lista de recursos recomendados para proteger aspectos da implementação do WordPress. O objetivo do artigo é oferecer recursos de código aberto ou gratuitos em vez de comerciais. Alguns plugins têm uma versão gratuita e uma versão paga que oferece funcionalidades extras. Em tais casos, o foco do artigo está na versão gratuita.

Referências

Este artigo não foi escrito na totalidade por mim. O meu trabalho aqui foi pesquisar toda a informação pertinente que eu tenho conhecimento e experiência sobre WordPress, e depois compactar tudo em um único artigo ou lugar.

No caso dos artigos escritos originalmente em inglês, eu traduzi em “grosso-modo” no Google Tradutor e depois adaptei para as necessidades contextuais deste artigo. Farei o possível para não esquecer de sempre mencionar todas as fontes.

Legendas

Este artigo contém links com informações complementares. Por exemplo, quando for necessário instalar algum software, poderá já existir uma postagem aqui no blog com a informação de como o fazer. Nos casos onde a postagem não exista, e eu tenha planejado fazer no futuro, a palavra ou frase que irá conter o link estará sublinhado.

Links Externos

Ao longo do artigo você irá encontrar referencias a empresas. Algumas delas fornecem um sistema de afiliados do qual eu faço parte. Então juntei o útil ao agradável e linkei com meu link de afiliado essas empresas.

Recomendações/Sugestões Dúbias

No Artigo você vai encontrar recomendações e/ou sugestões de coisas a serem feitas. Algumas delas podem, e serão consideradas dúbias por alguns leitores(as). Torna-se pertinente então salientar desde já que eu, o autor do artigo, não sou patrocinado por ninguém, assim como não fui pago por ninguém para digitar esse artigo.

Então nos casos onde você possa considerar como sendo uma recomendação dúbia, você simplesmente ignore e continue a leitura.

Segurança geral

Este artigo deve ser apenas um lembrete de que todas as medidas de proteção são inúteis se um invasor puder acessar os computadores onde você tem seu WordPress. Não vou gastar tempo e esforço para entrar em todos os detalhes, mas sim enumerar as boas práticas comuns que você deve ter em mente. Há uma abundância de bons recursos na internet para ajudar você a realizar o básico de segurança.

Segurança do dispositivo

Quando falar de dispositivos capazes de acessar a interface de administração do WordPress, não falo apenas de computadores, mas também de dispositivos móveis(Tablets, Celulares, etc…). Segue desde já uma lista de itens que precisam ser levados em conta ao proteger os dispositivos que acessarão as instâncias do WordPress. Alguns deles podem se referir a PC’s e dispositivos móveis, outros apenas a um dos dispositivos.

  • Use Senha
  • Sempre use senhas fortes
  • Nunca use a mesma senha mais que uma vez. (Se usar a senha X no Cel use a Y no PC, XYZ no Tablet etc … )
  • Mantenha o SO (Windows, GNU/Linux, Android, iOS, Etc … ) atualizado
  • Criptografe o armazenamento
  • Tenha um antivírus instalado e atualizado
  • Tenha um scanner de malware / spyware instalado e execute verificações e atualizações regulares
  • Tenha um firewall instalado e configurado
  • Proteja seu navegador

Sobre o WordPress

O WordPress deu seus primeiros passos no dia 27 de maio de 2003. Matt Mullenweg e Mike Little são os fundadores deste software. Ele pode ser referido como uma fonte online de criação de ferramentas para construção de sites, baseado em linguagem PHP e MySQL, ou seja, é um CMS Content Management System (Sistema de Gerenciamento de Conteúdo).

Quando o software foi lançado ele logo alcançou uma grande quantidade de usuários e continuou a crescer até se tornar o maior e mais popular CMS do mundo. Hoje, segundo uma pesquisa feita pela W3Techs, mostra que o WordPress é usado por mais de 30% no ranking dos CMS mais usados na internet, e tem cerca 60% de market share.

CMS mais usados e market share. Fonte: W3Techs

.

Porque o WordPress é tão popular?

A mistura de diversos fatores pode ser tomado como uma resposta. O ponto principal é que o WordPress é uma ferramenta simples de blog, no entanto, é muito mais do que isso. Devido ao fato de que ele é um projeto de criação aberta, isso permite que qualquer um possa melhorar e editar seu código de acordo com seu próprio gosto. Ele também acompanha uma série de plugins gratuitos, temas, widgets e outras ferramentas. Todos esses atributos permitem você crie qualquer tipo de website, começando por blogs simples, websites pessoais ou portfólios, passando para e-shops, bases de conhecimento e classificados.

Outro fator que colabora para a popularidade do WordPress é por ser completamente grátis e suporta todas as plataformas de hospedagem com PHP e MySQL. Acima de tudo, o WordPress é constantemente modernizado com novas versões que aperfeiçoam a segurança, incluindo novas melhorias para o total de sua performance. Por último, não menos importante, o WordPress tem uma imensa comunidade dedicada com fóruns de discussões por toda a internet. A quantidade disponível de conteúdo e os milhares tutoriais também contribuem para que o WordPress seja um dos meios mais fáceis de criação conteúdo da internet.

Hospedagem Compartilhada vs. Self-Hosted

A hospedagem compartilhada é a mais popular e econômica entre todos os tipos de hospedagem. Neste tipo de hospedagem, o seu WordPress fica em um servidor de uma empresa que armazena centenas de outros sites que dividem entre si os mesmos recursos.

Fazendo uma analogia, se a internet fosse uma cidade, o WordPress seria as pessoas dentro das casas. Isso porque o WordPress depende de um endereço exclusivo para ser localizado e têm um tamanho determinado. Por exemplo, se você tem uma família grande e deseja uma casa com muito espaço e recursos, terá que escolher uma que corresponda às suas necessidades.

Nesta comparação, o endereço da sua casa seria o domínio do seu WordPress, e a casa seria a hospedagem. Continuando com esta analogia, podemos imaginar uma hospedagem compartilhada como sendo um prédio, em que vários moradores dividem o mesmo terreno e recursos comuns a todos os condôminos, como espaço, água e eletricidade.

Você poderia dar uma festa em sua casa e deixá-la lotada de gente, mas estaria sujeita às regras de convivência e aos limites estabelecidos pelos seus vizinhos, representados pelo síndico. O mesmo ocorre em uma hospedagem compartilhada: você poderá usá-la à vontade, mas deverá respeitar os limites impostos pela vizinhança. Nesse caso o papel de síndico seria feito pela empresa de hospedagem. (Alguns exemplos de empresas de hospedagem: Godaddy, Hostgator, BlueHost, Locaweb, UOL, etc ..).

O Self-Hosted significa ter seu WordPress hospedado em um serviço ou sistema no qual você tem controle total, devido a sua hospedagem ser feita em uma máquina que está em sua posse ou na nuvem.

Voltando ao exemplo: Nesse caso sua casa teria o tamanho que você quiser, mas seria no deserto do Sahara, onde você faz o que quer, como quer, na hora que quer, sem ter que prestar contas ou incomodar ninguém.

Dessa forma você pode então gerenciar a instalação, execução e demais tarefas envolvidas, além de ter controle nos arquivos, nos usuários, níveis de segurança, permissões, entre outros. Mas fica em sua responsabilidade também toda a manutenção, atualizações e problemas que possam surgir.

Algumas das vantagens da Hospedagem do tipo Self-Hosted em relação á compartilhada:

  • Total controle
  • Privacidade
  • Segurança
  • Respaldo
  • Independência

Desvantagens

  • Custo de Hardware
  • Manutenção
Recomendações

Hospedagem Compartilhada
No caso de você optar pela hospedagem compartilhada, são duas as recomendações para você:

  1. WordPress.com – O wordpress.com toma conta de toda a hospedagem do WordPress por você. Você não vai precisar manter um servidor, pagar para uma empresa de hospedagem ou baixar e instalar o software, no entanto, ads de propaganda ou anúncios vão aparecer no seu site WordPress, e você está limitado aos Templates e Plugins suportados por eles.
  2. neoricalex.com – Similarmente ao WordPress.com, o neoricalex.com toma conta de toda a hospedagem por você.
    O neoricalex.com foi criado por mim e em sua base é uma instalação do WordPress do tipo Self-Hosted com o escopo Multi-Site.
    Ao contrário do WordPress.com, no neoricalex.com você não tem ads de propaganda e tampouco está limitado nos plugins e templates. Caso determinado Plugin ou Template não esteja listado, mas esteja no wordpress.org ou você tenha adquirido de uma fonte confiável como a Envato, basta você entrar em contato que o Plugin ou Template é adicionado.

Se você não está interessado em hospedar ou manter o seu próprio servidor, então tanto o WordPress.com quanto o neoricalex.com podem ser sua opção. Ambos são gratuitos e podem ser rapidamente configurados com diversas ferramentas e opções para customizar o seu WordPress. No entanto, isso tem um preço:

  • O seu WordPress obrigatoriamente terá o neoricalex.com ou WordPress.com no endereço (link ou url)
  • A habilidade de editar ou modificar o código PHP por detrás do seu WordPress também não poderá acontecer
  • E ainda no caso especifico do WordPress.com, você não poderá fazer o upload de temas ou plugins customizados.

Self-Hosted
Usar uma versão de hospedagem do tipo self-hosted além de prover uma maior flexibilidade e controle sobre o seu WordPress, você também terá acesso aos seus arquivos, pastas, base de dados e códigos, significando que você poderá modificá-lo de acordo com o seu gosto e necessidade pessoal.

Se você tem um servidor (Computador Real ou Físico) você apenas vai precisar de um IP Fixo. Qualquer ISP (Vivo, NET, Oi, Etc … ) poderá fornecer um para você.

Você poderá optar também por ter um Servidor Dedicado ou VPS.

  • Servidor Dedicado – Computador real ou físico em um Datacenter
  • VPS – Computador Virtual embutido dentro de um Servidor Dedicado.

Algumas empresas que fornecem esse tipo de serviço são a Digital Ocean, Azure, Amazon (AWS), Etc …

Segurança de infra-estrutura

Se você optou por uma implementação do tipo Self-Hosted, antes de proteger o núcleo do WordPress, você deve considerar a proteção dos serviços nos quais a instância será instalada.

A base da proteção da infraestrutura é a proteção do sistema operacional. Este é um assunto amplo e altamente dependente do sistema operacional, sendo as principais preocupações em torno de privilégios, controle de acesso, autenticação e registro. É um tópico fora da cobertura deste artigo, e são coisas que devem ser abordadas por administradores de sistema experientes.

O WordPress pode ser instalado em uma infinidade de plataformas, mas o foco principal desse artigo está nos componentes mais comuns, Apache e MySQL. No entanto, as regras gerais se aplicam a todos os componentes de infraestrutura suportados.

Seguindo as melhores práticas de design, as camadas da instância do WordPress devem ser separadas. No entanto, as camadas de apresentação e aplicação do WordPress estão unidas. Assim, apenas uma separação é possível, aquela com o banco de dados. Para pequenas aplicações, não é uma prática comum, mas para sites maiores, isso se torna uma necessidade de uma perspectiva de segurança, mas também de desempenho.

Note que esse artigo é apenas uma lista de coisas que devem ser realizadas para fortalecer a infraestrutura. Não é os meios para fazê-lo.

Recomendações

Proteção do Apache

Proteção do PHP

  • Atualize regularmente
  • Não instale o PHP como um binário CGI
  • Desative módulos PHP desnecessários
  • Desabilite funções PHP potencialmente perigosas não usadas
    (bons exemplos: exec, passthru, shell_exec, system, etc.)
  • Registre erros internamente
  • Desative relatórios de erros detalhados no lado do cliente
  • Desative a execução remota de código
    (se não for necessário; o núcleo do WordPress não precisa dessa funcionalidade)
  • Desative o Magic Quotes
  • Limite o acesso do PHP ao sistema de arquivos
  • Proteção para o DoS
    Controle o Tamanho do POST
    Limite a execução do tempo de script
    Limite o uso de memória
  • Considere implementar a extensão de segurança Suhoshin
  • Oculte a versão do PHP em uso
  • Oculte a extensão .php

Proteção do MySQL

  • Atualize regularmente
  • Desative ou limite o acesso remoto
  • Limite o acesso ao sistema de arquivos e ACLs
  • Crie uma cadeia chroot-jail
  • Criptografe o tráfego de rede (isso é muito útil se a camada do banco de dados estiver fisicamente separada da camada do aplicativo)
  • Criptografe o Bancos de Dados Raw no Sistema de Arquivos
    (Isto é redundante se a criptografia de disco estiver em vigor na camada do SO. No entanto, usando o dmcrypt, pode-se gerar uma camada extra de criptografia)
  • Criptografe o Backup
  • Configure a Conectividade com o número máximo de conexões simultâneas e configurações relacionadas.
  • Configure o controle de acesso e gerenciamento de privilégios (Sistema de Login)
  • Configure a senha root
  • Renomeie a conta root
  • Exclua usuários e bancos de dados não utilizados
  • Remova o histórico de instalação

Acesso remoto

  • Não use o FTP (use sFTP sempre que possível)
  • Se o acesso SSH estiver disponível, use scp ou WinSCP para transferência de arquivos
  • Considere o uso de túneis VPN ou SSH para o servidor para acessar a interface administrativa do WordPress

Segurança do WordPress

Existem três componentes principais do WordPress que precisam ser considerados de uma perspectiva de segurança ao implementar a solução.

  1. Core ou Núcleo – os arquivos de instalação padrão básicos que fornecem a maior parte das funcionalidades
  2. Plugins – código escrito especialmente para melhorar e estender as funcionalidades básicas
  3. Tema – a camada de apresentação que pode vir com algumas funcionalidades estendidas limitadas
Recomendações

Atualizações

É de vital importância manter o núcleo (core), os plug-ins e os temas do WordPress atualizados. Depois que uma atualização é lançada, ela precisa ser aplicada o mais rápido possível para fechar quaisquer falhas de segurança.

Problemas funcionais com atualizações devem ser considerados. É possível que uma atualização rompa ou quebre algumas das funcionalidades, de modo que um backup é recomendado antes de atualizar o núcleo.

Core ou Núcleo do WordPress

O núcleo do WordPress possui três tipos diferentes de atualizações:

  1. Atualizações de desenvolvimento do núcleo, conhecido como “bleeding edge”
  2. Atualizações secundárias menores, como versões de manutenção e segurança
  3. Atualizações de lançamento principais

A partir da versão 3.7, as atualizações automáticas de segundo plano foram introduzidas por padrão para versões menores de atualizações principais (geralmente atualizações de segurança). Esse comportamento padrão pode ser substituído editando o arquivo wp-config.php e adicionando ou modificando a seguinte instrução

Quando definido como verdadeiro, todas as atualizações serão ativadas. As traduções são atualizadas por padrão com as atualizações principais secundárias.

Temas e Plugins

Os temas e plugins podem ser atualizados automaticamente usando filtros. O melhor lugar para colocar um filtro é em um plugin obrigatório. O WordPress não recomenda colocar filtros no arquivo wp-config.php devido a conflitos com outras partes do código.

Para habilitar atualizações automáticas de temas e plugins, adicione o seguinte código:

Remoção de plugins e temas não utilizados

Dependendo da configuração do servidor, os arquivos na pasta WordPress podem ser acessados ​​através da Internet, independentemente de serem usados ​​ou não. Mesmo se um plug-in estiver desativado, os arquivos ainda estarão lá e poderão ser acessados ​.

Quando uma nova vulnerabilidade é descoberta, os atacantes escrevem scripts para procurar os arquivos vulneráveis. Conhecer a localização de plugins vulneráveis ​​aumenta as chances do atacante se infiltrar em uma instância vulnerável.

Quaisquer plugins e temas que não sejam usados ​​ativamente devem ser excluídos.

Segurança de Plugins e Temas

Os Plugins e temas são um ótimo complemento para a funcionalidade oferecida pelo núcleo do WordPress. O sucesso do WordPress é baseado nesses elementos. É fácil desenvolver um novo tema e adicionar novas funções com plugins.

Esta facilidade de desenvolvimento vem com a desvantagem da segurança. Na pressa pela funcionalidade, os desenvolvedores geralmente esquecem a segurança. Olhando para a lista CVE do WordPress, vale notar que nos últimos anos a maioria dos defeitos de segurança está afetando os plugins e os temas, e não o núcleo do WordPress.

O desenvolvimento do WordPress deve ser considerado como um trabalho de desenvolvimento regular e seguir um ciclo de vida de desenvolvimento seguro padrão. Itens de ação concretos para este capítulo incluem revisão de código-fonte e testes de penetração de plugins e temas.

Ao optar por usar um plugin já desenvolvido por terceiros, uma auditoria de segurança deve ser realizada. Bons diferenciadores para plugins disponíveis são:

    • Publicação na loja de plugins oficial em https://wordpress.org/plugins/
    • Classificações e comentários de usuários
    • Número da versão (é um plugin / tema novo ou já enfrentou os desafios do tempo?)
    • Última atualização
    • Frequência de atualização
    • Compatibilidade com a versão atual do núcleo do WordPress

Para executar uma auditoria de código-fonte, as seguintes ferramentas podem ser usadas:

  • RIPS
  • PHP-sat
  • Yasca
  • Análise manual usando grep, GrepBugs

Coisas para prestar atenção extra durante a auditoria do código-fonte:

  • Código ofuscado
  • Função de codificação BASE64
  • Funções de chamada do sistema (exec, passthru, system, shell_exec, etc.)
  • Execução de código PHP (eval, assert, preg_replace, etc.)
  • Funções de divulgação de informações (phpinfo, getenv, getmygid / pid / uid, etc.)
  • Funções do sistema de arquivos (fopen, bz/gzopen, chgrp/own/mod, etc.)

[Artigo em desenvolvimento, não está finalizado ainda … 🙂 ]

Deixe seu comentário abaixo: