Aplicando o princípio de privilégio mínimo para melhorar a segurança do WordPress

Publicados: 2021-07-27

O princípio de privilégio mínimo para WordPress perde as grandes manchetes quando ocorrem violações, perda de dados e ataques DoS. No entanto, é uma das práticas recomendadas de segurança mais eficazes, embora negligenciadas, para sites WordPress.

Nesta postagem do blog, primeiro definimos o princípio do privilégio mínimo, depois examinamos quando e onde ele se aplica, os riscos de não adotá-lo e por que muitos desenvolvedores de sites ainda não o estão incorporando em seus sites WordPress. Também compartilhamos algumas recomendações práticas, para que você possa começar imediatamente a melhorar a segurança de seus sites WordPress. Esta postagem no blog inclui alguns mini-estudos de caso para ajudar a ilustrar seu uso em ambientes reais.

Índice

  • O que é o Princípio do Mínimo Privilégio?
  • Quando e onde se aplica o Princípio do Mínimo Privilégio?
  • Quais são os riscos se a PoLP não for aplicada?
  • Por que muitos proprietários de sites negligenciam o princípio de privilégio mínimo no WordPress?
  • Como aplicar o PoLP para WordPress
    • Privilégios de usuário do banco de dados WordPress
    • Funções e privilégios de usuários do WordPress
      • Como criar papéis personalizados
    • Permissões de arquivos e diretórios
    • Configuração de plugins do WordPress
    • Acesso FTP para contratantes terceirizados
  • Miniestudos de caso
    • Aplicativos para sites de comércio eletrônico
    • Universidades e instituições de ensino
    • Sites e blogs de notícias
    • Sites de bancos
    • Rastreadores de saúde e fitness
  • Usando o Princípio do Mínimo Privilégio para WordPress e além

O que é o Princípio do Mínimo Privilégio?

A ideia é muito simples: não conceda a uma conta de usuário, processo ou programa mais direitos de acesso do que o necessário para realizar suas tarefas designadas. Em termos de um site WordPress típico com um blog, pense em seus editores, autores, colaboradores e assinantes. Cada um deles precisa de acesso a mais ou menos back-end do seu site.

O princípio do privilégio mínimo (PoLP) também é conhecido como o 'princípio da autoridade mínima', o 'princípio dos privilégios mínimos' ou a 'conta de usuário menos privilegiada' (LUA).

Vamos considerar alguns exemplos simples. Seus filhos geralmente não precisam de acesso à cozinha. Assim, você instala um dispositivo de controle de acesso, como um portão de segurança, em vários pontos da sua casa para permitir que eles andem à vontade – exceto em determinados cômodos. Em um espaço de coworking público e compartilhado, você desconectaria seu laptop antes de sair para almoçar. E, o atendente do estacionamento do seu restaurante chique exigirá sua identidade ou bilhete antes de devolver as chaves do seu carro. O controle de acesso evita danos a você e à propriedade valiosa de seus usuários – seja um item físico ou material digital.

Quando e onde se aplica o Princípio do Mínimo Privilégio?

A resposta simples é que se aplica a todos os lugares: desde aquela criança que quer subir as escadas até os usuários da sua conta de hospedagem do site WordPress. Seu freelancer financeiro que precisa baixar as faturas mensais não precisa do mesmo nível de acesso que o administrador do site. O mesmo vale para todos os tipos de contas privilegiadas da empresa, sistemas de gerenciamento de arquivos, documentação de estratégia de marketing ou gerenciadores de senhas.

Quais são os riscos se a PoLP não for aplicada?

Controlar o acesso a certas áreas parece um acéfalo. Caso contrário, você não está deixando o site inteiramente ao capricho de qualquer usuário conectado – incluindo aqueles que podem cometer erros inocentes e inadvertidos, e podem nem estar cientes de que os cometeram, nem dos resultados não intencionais?

Pense nos seguintes usuários possíveis:

  • Novo usuário começa com pouca compreensão das implicações comerciais de erros em um site WordPress
  • Aqueles com pouca experiência em administração do WordPress
  • Sem conhecimento das implicações de baixar novas versões ou plugins do WordPress à vontade, ou atualizá-los sem primeiro fazer um backup
  • Aqueles com conhecimento de segurança limitado criando novos usuários ou alterando permissões de usuários existentes
  • Aqueles que não sabem como lidar com erros relatados ou outros problemas
  • Colaboradores externos de postagens de blog, como parceiros, freelancers e clientes, talvez com um punhado de conhecimento do WordPress, que podem até baixar ou atualizar plugins de forma 'útil' em seu site - sem perguntar

Isso também significa que todo o back-end do WordPress corre o risco de alguma pessoa não autorizada, como alguém com níveis de acesso inadequados, adicionar novos usuários e dar-lhes acesso a áreas do site onde podem causar danos deliberados .

Tal como:

  • Alterando temas, recursos personalizados ou conteúdo do site voltado para o público
  • Manipulação incorreta de estoque, SKUs ou metadados de produtos em lojas de comércio eletrônico
  • Oferecer descontos não autorizados
  • Acessar, alterar, baixar ou excluir código, modelos de página, mídia, configurações ou equipe, cliente e outros tipos de arquivos
  • Acessar dados da empresa, cliente, saúde ou financeiros, por exemplo, para uso indevido ou venda para outras partes nefastas
  • Colocar o site e seus produtos ou serviços offline

Independentemente de você usar o WordPress ou não, qualquer um ou todos esses problemas podem ocorrer quando o princípio de privilégio mínimo para o WordPress não é adotado de forma deliberada e consistente em toda a sua organização.

DICA: Use um plug-in de log de atividades para WordPress para manter um registro de todas as alterações que os usuários fazem em seu site WordPress. Ele ajuda na responsabilidade do usuário e facilita a solução de problemas.

Por que muitos proprietários de sites negligenciam o princípio de privilégio mínimo no WordPress?

Os riscos que descrevemos parecem bastante persuasivos, certo? Mas um dos problemas mais comuns relatados após as auditorias do site WordPress é que as funções dos usuários do WordPress em um ambiente típico ainda são configuradas da seguinte forma:

  • A função de administrador do WordPress é dada a todos os usuários, mesmo quando o usuário só precisa inserir conteúdo escrito por outra pessoa
  • O mesmo se aplica a arquivos e permissões de diretório, todos configurados com as permissões menos restritivas

Nós entendemos. Todos nós já tivemos experiência em trabalhar como administradores de sistemas e sites em algum momento de nossas carreiras. Em vez de fazer a ligação entre usuários e permissões nos primeiros dias, verificando o que o usuário precisa fazer, os administradores geralmente preferem simplesmente atribuir a eles a função de administrador também (parece mais rápido, inicialmente).

O mesmo se aplica a arquivos e permissões de diretório. Por exemplo, alguns plugins do WordPress armazenam arquivos de cache ou outros dados no sistema de arquivos (ou seja, nos diretórios do WordPress). É mais fácil simplesmente configurar 777 permissões no diretório /wp-content/plugins/, porque todos os plugins funcionarão e não é necessário gastar mais tempo solucionando problemas e ajustando permissões cada vez que você instalar um novo plugin. Mas, fazer algumas pesquisas no início para determinar as áreas específicas do aplicativo ou diretórios do site – para evitar que os usuários tenham muito acesso – reduz os riscos já mencionados. Além disso, tem o benefício adicional de permitir que todos tenham acesso ao que precisam para fazer seu trabalho – sem mais informações de um administrador.

Perguntas que os proprietários e administradores de sites fazem

A conveniência vale o risco de segurança? Você sabe qual seria a nossa resposta a essa pergunta. Simplesmente não faz sentido instalar e manter plug-ins de segurança de aplicativos da Web avançados e robustos, protocolos de senha e outras medidas, como 2FA, se seu maior risco de segurança é que você já deixou a porta dos fundos aberta com controles de acesso amadores e negligentes!

Como aplicar o princípio de privilégio mínimo para WordPress

Agora que você está focado em tornar seu aplicativo de site o mais seguro possível, esta seção fornece uma lista de onde e como o princípio de privilégio mínimo pode ser aplicado a um site ou blog WordPress.

Privilégios de usuário do banco de dados WordPress

Vamos começar com o lugar mais básico – permissões ou privilégios do banco de dados de usuários do WordPress.

Para operações diárias normais do WordPress, como escrita e publicação de conteúdo, o usuário do banco de dados WordPress precisa apenas das seguintes permissões para permitir que eles gerenciem os dados de dentro do banco de dados:

  • Selecionar
  • Inserir
  • Atualizar
  • Excluir

Essas permissões não permitem que o usuário do banco de dados WordPress modifique a estrutura do banco de dados.

Recomendações

Em um ambiente ideal, para fortalecer a segurança do seu site ou blog WordPress, você deve configurar privilégios de banco de dados MySQL do WordPress seguros e restritivos. Só volte a atribuir todos os privilégios aos usuários que precisam instalar um novo plug-in que crie novas tabelas no banco de dados ou quando o WordPress for atualizado e houver alterações no esquema do banco de dados do WordPress.

Outra recomendação é evitar conceder acesso a bancos de dados diferentes do WordPress para o site relevante.

Para obter mais informações sobre privilégios de banco de dados WordPress, você também pode ler Por que privilégios mínimos de banco de dados WordPress de usuário MySQL melhoram a segurança, o que explica as repercussões de uma configuração insegura.

Funções e privilégios de usuários do WordPress

Os usuários do WordPress cometem erros – até mesmo administradores. E os usuários também gostam de explorar configurações e configurações. Se você atribuir aos usuários acesso Super Admin ou Administrador, os mais curiosos provavelmente instalarão plugins aleatórios. Isso pode resultar em uma alteração não intencional na experiência do usuário, como uma alteração na funcionalidade do site.

O WordPress possui várias funções de usuário integradas e recursos conectados, conforme listado abaixo (do mais para o menos).

  • Super Admin – administrador da rede do site
  • Administrador – administrador de rede do site para um único site
  • Editor – gerencie e publique postagens, incluindo postagens de outros usuários
  • Autor – gerencie e publique suas próprias postagens
  • Colaborador – escreva e gerencie suas próprias postagens, mas não as publique
  • Assinante – apenas gerencie o perfil

Um exemplo de como isso funciona na prática é que enquanto um Colaborador e um Autor podem compartilhar alguns recursos (por exemplo, editar postagens e excluir postagens), um Colaborador não pode fazer tudo que um Autor pode, como carregar arquivos ou criar blocos utilizáveis.

Como criar papéis personalizados

Há também um bom número de plugins que você pode usar para criar funções novas e personalizadas do WordPress.

Aqui estão alguns casos de uso comuns:

  • Em organizações maiores, pode ser necessário designar alguém em sua equipe de marketing para moderar, aprovar e responder a comentários. O recurso de 'comentários moderados' está alojado na função Editor, mas essa função também atribui uma série de outros recursos poderosos. Portanto, se isso é tudo o que eles precisam fazer, configurar uma função personalizada, com essa permissão única, é suficiente.
  • Se o seu site WordPress contém um plug-in de comércio eletrônico como o WooCommerce, você está limitado a duas funções iniciais: Gerente de loja (permitindo que o usuário gerencie toda a loja) e Cliente (permitindo que o usuário visualize sua conta e pedidos). O Administrador tem permissões adicionais, como 'gerenciar configurações' e 'visualizar relatórios'. Mas, e se seus usuários – funcionários não administrativos, por exemplo – precisarem de algo intermediário, como a capacidade de adicionar e gerenciar quantidades de estoque ou SKUs, ou apenas processar pedidos?
  • Em nosso site, usamos um plug-in para nossos artigos da base de conhecimento. Isso dá à nossa equipe de suporte acesso para criar e modificar artigos da base de conhecimento, mas sem acesso às páginas principais do site e às postagens do blog.

Recomendações

Para a maioria dos usuários regulares, a função de Colaborador é suficiente. Para líderes de equipe e gerentes práticos, a função de Editor é recomendada. Mas você deve restringir as funções de superadministrador e administrador a usuários experientes e responsáveis ​​que realmente precisam deles.

Para obter mais informações, consulte Como usar as funções de usuário do WordPress para melhorar a segurança do WordPress.

Permissões de arquivos e diretórios

É fácil configurar permissões de arquivos e diretórios e há ampla documentação disponível online explicando como fortalecer as permissões de sua instalação do WordPress. O WordPress é executado em qualquer sistema operacional que execute PHP, geralmente Linux. Em termos de grupos, o Linux possui três grupos de permissão:

  • Proprietário – proprietário do arquivo/diretório, cujas permissões não se aplicam nem afetam outros usuários
  • Grupo – grupo de usuários que receberam acesso ao arquivo/diretório, cujas permissões não se aplicam nem afetam nenhum usuário fora do grupo
  • Outros – quais níveis de permissões todos os outros têm para o mesmo arquivo/diretório

A cada um deles é atribuída a permissão Ler (exibir o conteúdo), Gravar (gravar ou modificar o conteúdo) ou Executar (executar o conteúdo, como um script). Essas permissões são armazenadas como uma série de números e dão acesso ao código PHP, imagens e outras mídias, arquivos HTML e javascript e plugins.

A implicação de atribuir as permissões erradas ao grupo de permissão errado pode significar que um hacker mal-intencionado pode tirar vantagem e resultar em uma vulnerabilidade de baixo nível se transformando em um risco inaceitável.

Recomendações

Ao instalar o WordPress, você também deve usar o PoLP, configurando o mínimo possível de permissões de arquivos e diretórios para que o WordPress funcione.

Lembre-se de que, ao fortalecer as permissões de arquivos e diretórios, você também pode restringir o funcionamento de alguns plugins do WordPress. Conforme explicado anteriormente, você pode estar instalando plugins que precisam armazenar dados em seu diretório de instalação. Em caso afirmativo, não basta configurar 777 permissões para o diretório do plugin (leitura, gravação e execução completas para qualquer pessoa com permissões para controlá-lo). Essa é a saída fácil. Mas você também deve evitar limitá-lo a ponto de impedir que os usuários relevantes atualizem o WordPress, seus temas e plugins da interface do usuário da web.

Para obter mais informações, consulte Permissões de arquivo do WordPress: o guia para configurar permissões seguras de site e servidor web.

Configuração de plugins do WordPress

Nem todos os administradores são iguais. Como muitos sistemas e redes, é comum ter um administrador líder entre um grupo de administradores do WordPress. Normalmente, o proprietário do site não tem outra opção a não ser atribuir acesso de administrador a outros usuários. Lembre-se de que, no caso dos plugins de segurança do WordPress, eles geralmente podem armazenar dados confidenciais, como um log de auditoria de segurança do WordPress, aos quais os administradores teriam acesso.

Recomendações

Os plugins de segurança do WordPress geralmente permitem restringir o acesso a outros administradores do WordPress. Fazer uso de tais recursos parece um controle pequeno, mas às vezes esquecido, que o ajudará a controlar melhor o acesso do usuário.

Para obter mais informações sobre plug-ins individuais, entre em contato com o suporte do plug-in e o provedor de hospedagem. Em seguida, pergunte em quais diretórios o plug-in precisa gravar, para que você possa configurar permissões especificamente para esse diretório.

Acesso FTP para contratantes terceirizados

Quando você contrata um designer ou a equipe de suporte de um plugin precisa de acesso FTP ao seu site, você pode conceder a eles acesso total à raiz do seu site, certo? Isso é desnecessário.

Recomendações

No caso de um designer, tudo o que eles precisam acessar é o diretório do tema, portanto, restrinja o acesso a esse diretório. O mesmo se aplica às equipes de suporte de plugins. Se eles precisarem de acesso para verificar os arquivos de log, dê a eles acesso FTP ao diretório do plug-in ou ao local onde o plug-in armazena os arquivos de log. Evite depender de terceiros para fazer a devida diligência de segurança para você.

Miniestudos de caso

Vejamos alguns exemplos relacionáveis ​​de como isso funciona na prática e como as questões e decisões de controle de acesso podem orientar a aplicação do PoLP para permitir o acesso certo para as equipes e indivíduos certos.

Aplicativos para sites de comércio eletrônico

Aplicativos de sites de comércio eletrônico, como aqueles em que os consumidores compram itens caros, como geladeiras, freezers, aspiradores de pó, câmeras ou laptops, oferecem vários exemplos de onde o PoLP pode ser adotado.

Algumas das decisões de controle de acesso para desenvolvedores de aplicativos de sites de comércio eletrônico são óbvias:

  • Os departamentos de RH provavelmente não precisarão de acesso a dados de clientes ou diretórios de arquivos que armazenam plugins, mas precisarão de acesso à maioria dos registros da equipe (embora talvez os dados de saúde, que geralmente gozam de status especial sob muitas legislações de conformidade de proteção de dados, possam ser mais restrito a uma base de necessidade de conhecimento)
  • Os departamentos de marketing não precisarão necessariamente acessar tabelas de SKU ou códigos de produto. No entanto, eles vão querer ter acesso a tabelas no banco de dados de produtos que listam nomes, especificações e descrições de produtos

Alguns são menos óbvios:

  • Os consumidores precisam de acesso a todos os seus dados o tempo todo?
  • Os responsáveis ​​pela conformidade PCI-DSS precisam de acesso a todos os dados do consumidor?

Universidades e instituições de ensino

E as instituições mais tradicionais e de longa data, onde a segurança de aplicativos da Web e PoLP são inicialmente menos aparentes?

Algumas das decisões de controle de acesso para portais de universidades e faculdades são óbvias:

  • O departamento de folha de pagamento precisa de acesso aos registros de funcionários e contratados no aplicativo do site para rastrear dias úteis e fazer pagamentos
  • Departamentos administrativos de vários tipos podem precisar de acesso aos registros dos alunos, para processar IDs, solicitações de acomodação, contas ou subsídios

Alguns são menos óbvios:

  • Quais fornecedores terceirizados, como fornecedores de cartões magnéticos, podem precisar de acesso intermitente a algumas tabelas de dados de alunos?

Sites e blogs de notícias

A web está cheia de sites de notícias, podcasts e blogs. Muitos proprietários de sites dependem de vários administradores, colaboradores, editores, revisores e editores. Além disso, há assinantes e espectadores a serem considerados.

Algumas das decisões de controle de acesso para aplicativos de sites de notícias e blogs são óbvias:

  • Dependendo das áreas de responsabilidade do negócio, os editores podem precisar de acesso a uma combinação de páginas, artigos e postagens de blog de todos
  • Os contribuidores precisarão acessar apenas suas próprias postagens de blog

Alguns são menos óbvios:

  • Todos os terceiros precisam de acesso a todas as tabelas do banco de dados do WordPress? É aqui que os controles personalizados se destacam.

Sites de bancos

Nosso exemplo final é algo que muitos de nós usamos diariamente, serviços de sites bancários. Além das informações de saúde, os dados financeiros pessoais são naturalmente um dos tipos mais confidenciais que existem.

Algumas das decisões de controle de acesso para fazer aplicativos de sites são óbvias:

  • Nenhum usuário do serviço bancário deve ter acesso à conta de outro usuário, exceto por consentimento expresso (provavelmente controlado pelo usuário)
  • As contas de usuário da equipe devem ter acesso a muitas contas de usuário do serviço, mas limitadas apenas às tarefas que precisam executar como parte de seu trabalho

Alguns são menos óbvios:

  • Quanto acesso os departamentos de suporte técnico devem ter? Eles devem ser capazes de visualizar e alterar tudo, em caso de erros?

Recomendamos que você pense e planeje o caso de uso de negócios para cada cenário. Em conjunto com seus grupos de usuários e indivíduos com descrições de trabalho exclusivas. Mapeie estes primeiro. Só então você pode começar a examinar os protocolos de controle de acesso disponíveis para você em seu site WordPress.

Rastreadores de saúde e fitness

Dispositivos rastreadores de saúde ou fitness e seus painéis on-line conectados coletam, armazenam e compartilham estatísticas fascinantes sobre usuários e seus dados de saúde, atividades, metas e conquistas.

Algumas das decisões de controle de acesso para as marcas de rastreadores de saúde e fitness são óbvias:

  • Quais equipes dentro da organização precisam acessar quais dados? Faz sentido que, se uma equipe for responsável pelo design e desenvolvimento da parte de rastreamento do sono do aplicativo, ela não precise necessariamente acessar as tabelas de estatísticas de treino.
  • A maioria dos usuários desejará que o PoLP (quer saibam ou não) seja muito restritivo, para que suas informações de saúde não sejam compartilhadas com todos os outros usuários. Então, quais privilégios de acesso devem ser dados à função de usuário normal e quais dados serão, portanto, compartilhados em um perfil público (somente nome, imagem de perfil e média de passos diários?).

Alguns são menos óbvios:

  • Quais e quanta informação precisa ser acessível a outros usuários para facilitar os recursos comuns de gamificação de tais ferramentas?
  • Os desenvolvedores devem definir todas as permissões de acesso ou algumas dessas decisões devem ser transferidas para os usuários?

Usando o Princípio do Mínimo Privilégio para WordPress e além

O acima é apenas uma seleção dos cenários mais comuns em que o princípio de privilégio mínimo para o WordPress é muitas vezes esquecido, mas pode ser facilmente aplicado.

Para começar a adotar o PoLP, comece considerando o que você quer fazer sobre os seguintes itens:

  • O servidor web
  • O banco de dados
  • Personalizações

Não se coíba de aplicar o princípio do privilégio mínimo simplesmente porque as coisas não funcionam imediatamente. Sim, na maioria das vezes você precisa gastar algumas horas configurando funções de usuário personalizadas e plugins de solução de problemas. Reembale isso em sua mente como um investimento de longo prazo na segurança de seus sites WordPress.