x

Capítulos principais

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Guia de início rápido
  3. Instalação - LimeSurvey CE
  4. Como criar um bom inquérito (guia)
  5. Iniciando
  6. Administrando o LimeSurvey
  7. Questionários - introdução
  8. Configurações do questionário
  9. Menu da pesquisa
  10. Estrutura da pesquisa
  11. Perguntas - introdução
  12. Grupos de perguntas - introdução
  13. Questionários - gerenciamento
  14. Opções da barra de ferramentas do questionário
  15. Questionário multilíngue
  16. ExpressionScript Engine - Guia de início rápido
  17. Recursos avançados e não categorizados
  18. FAQ geral
  19. Solução de problemas
  20. Soluções alternativas
  21. Licença
  22. Registro de mudanças da versão
  23. Plugins
 Actions

Decas de segurança da isntalação

From LimeSurvey Manual

Esta página pode ter sido traduzida automaticamente e conter erros. Ver o original em inglês · Melhorar esta tradução
This page is a translated version of the page Installation security hints and the translation is 100% complete.

Geral

Observe que levamos as questões de segurança muito a sério e reagimos rapidamente. Portanto, se você souber de algum problema de segurança no LimeSurvey, avise-nos abrindo um relatório de erro em nosso rastreador de bugs (marque o bug com severidade ou categoria 'security').

Para mais detalhes, consulte nossa Política de segurança para relatar problemas/vulnerabilidades de segurança.

Restrição do servidor web

O LimeSurvey inclui arquivos .htaccess que bloqueiam o acesso web a arquivos e diretórios usados apenas no servidor. Se você usa Apache, verifique se esses arquivos são permitidos com AllowOverride All e se o mod_rewrite está ativado.

Outros servidores web, como nginx ou IIS, ignoram os arquivos .htaccess, assim como o Apache com AllowOverride None. Nesse caso, bloqueie o acesso web aos seguintes itens na configuração do seu servidor web:

  • os diretórios application, vendor, docs, locale, modules e tmp/runtime
  • os diretórios conf, core, doc, integration, lang, lib e tpl em assets/packages/kcfinder
  • os arquivos setdebug.php e open-api-gen.php
  • os arquivos de desenvolvimento no diretório raiz do LimeSurvey: composer.json, composer.lock, package.json, yarn.lock, gulpfile.js, phpunit.xml, psalm*.xml, phpci.yml, phpcs.ruleset.xml, publiccode.yml, manifest.yml, CONTRIBUTING.md, README.md e SECURITY.md
  • arquivos e diretórios ocultos (o nome começa com um ponto), exceto .well-known
  • arquivos de log (*.log)
  • arquivos carregados pelos participantes do questionário: os arquivos que começam com fu_ em upload/surveys e seus subdiretórios

Certifique-se também de que scripts no diretório de carregamento nunca possam ser executados, por exemplo scripts PHP, Perl, Python ou shell.

O pacote do LimeSurvey também contém documentação, exemplos e testes das bibliotecas incluídas, por exemplo nos diretórios vendor e docs. Não exclua esses arquivos: a próxima atualização os traz de volta. Em vez disso, bloqueie o acesso web aos diretórios, conforme descrito acima.

Você pode encontrar um exemplo para nginx na página Exemplo de configuração do nginx para o LimeSurvey.

Permissões de arquivos do Linux

Se você está usando um servidor Linux, é necessário definir as permissões de arquivo adequadamente para proteger a instalação do seu LimeSurvey.

Fatos básicos sobre a permissão de arquivos Linux/*nix

Um sistema Linux/*nix é multi-usuário. Isso significa que, além da sua conta pessoal, outras contas de usuário podem existir no seu sistema e você deverá cuidar quais permissões você dá aos outros usuários.

Dica: definir as permissões de arquivo é especialmente importante para proteger os arquivos de configuração que contêm dados críticos, como senhas.

Lembre-se de que a conta 'root' sempre terá permissão para acessar seus arquivos (não importa quais permissões de arquivo você defina), pois é o usuário super-administrador.

O servidor web (que executa o LimeSurvey) também é executado sob uma determinada identidade (usuário). No Linux, geralmente é o usuário 'www', 'www-data' (no Debian/Ubuntu), 'apache' ou 'nobody'. No entanto, algumas empresas de hospedagem usam sistemas (como o suexec) que permitem executar scripts do LimeSurvey com o seu usuário pessoal. Naturalmente, o usuário do servidor web deve ter direito de leitura sobre os arquivos do LimeSurvey. No entanto, apenas um pequeno subconjunto de subdiretórios do LimeSurvey precisa ter permissão de escrita para o usuário do servidor web.

Dica: é muito valioso revogar a permissão de escrita do usuário do servidor web nos subdiretórios do LimeSurvey que não a exigem. Assim, mesmo que uma vulnerabilidade do LimeSurvey seja descoberta, os arquivos principais continuarão protegidos contra modificações ilícitas graças às permissões do sistema de arquivos.

Definindo permissões de arquivo em um sistema Linux autogerenciado

Se você gerencia a configuração do seu servidor web e do sistema operacional (você é o proprietário do servidor físico ou aluga um servidor virtual no qual tem acesso root), considere as recomendações abaixo.

Primeiro, você pode definir o proprietário e o grupo dos arquivos do LimeSurvey para facilitar a configuração das permissões de arquivo. Uma estratégia possível é definir o proprietário dos arquivos do LimeSurvey como o seu nome de usuário pessoal e o grupo dos arquivos como o grupo do servidor web. Normalmente, esse grupo contém apenas a conta do servidor web (e possivelmente outra conta de webmaster). Por exemplo, se o seu nome de usuário é 'myaccount' e o usuário do servidor web é 'apache', no grupo 'apache', então, em um acesso shell, você pode usar o seguinte comando: $ chown -R myaccount:apache limesurvey/. Em seguida, defina as permissões dos arquivos e subdiretórios.

Para que o script funcione corretamente, é necessário acesso de escrita a alguns diretórios:

  • O diretório /limesurvey/application/config requer Leitura e escrita para salvar as configurações do aplicativo
  • O diretório /limesurvey/tmp e seus subdiretórios são usados para importações/carregamentos e devem ser definidos como Leitura e escrita para o seu servidor web
  • O diretório upload/ e todos os seus subdiretórios também devem ter permissões de Leitura e escrita para permitir o carregamento de imagens e arquivos de mídia
  • Todos os outros diretórios e arquivos podem ser definidos como Somente leitura

Definindo permissões de arquivo em um servidor web hospedado

Dada a dificuldade de um procedimento padrão para proteger um aplicativo web em um ambiente hospedado, a tarefa é complicada, pois os ambientes hospedados diferem de várias maneiras.

No caso de um servidor gerenciado, o servidor precisa de acesso de escrita a alguns diretórios para que o script funcione corretamente:

  • O diretório /limesurvey/tmp é usado para importações/carregamentos e deve ser definido como Leitura e escrita para o seu servidor web
  • O diretório upload/ e todos os seus subdiretórios também devem ter Leitura e escrita para o seu servidor web, a fim de permitir o carregamento de imagens e arquivos de mídia
  • Os outros diretórios e arquivos devem ser definidos como Somente leitura
Dica:
  • Dependendo da configuração do seu servidor web, você terá que alterar as permissões (chmod) das pastas graváveis para 755 ou 777 para que o servidor web possa escrever nelas. Tente 755 primeiro; se não funcionar, 'suba' para 777
  • Você também pode tentar remover o acesso de leitura de outros usuários ao config.php definindo as permissões desse arquivo como 750 - se não funcionar, 'suba' para 755

Permissões de arquivo no Windows

Se você está usando um servidor Windows, deve garantir que a pasta admin permita que o proprietário do processo do servidor web grave arquivos nesse diretório. O restante dos arquivos pode ser definido como somente leitura e execução.

Outras questões de segurança

As recomendações a seguir são apenas sugestões. De modo geral, o LimeSurvey é muito seguro sem essas medidas adicionais. No entanto, se você coleta dados extremamente sensíveis, um pouco de segurança adicional pode ajudar:

Uso de SSL

Recomendamos, em geral, o uso de SSL para dados sensíveis de inquéritos. Normalmente, você ativa o SSL configurando corretamente o seu servidor web e usando um certificado SSL. Se você ativou o SSL, deve forçar o uso de SSL o tempo todo nas Definições globais do LimeSurvey. Além disso, você pode configurar o uso de cookies 'seguros' editando a opção correspondente no config.php.

Acesso ao arquivo config.php

  Você deve atualizar application/config/config.php somente depois que a primeira instalação estiver concluída e funcionando.


O arquivo /application/config/config.php contém um nome de usuário e uma senha do seu servidor de banco de dados. Isso gera certos problemas de segurança, principalmente se você estiver usando uma conta de acesso com privilégios administrativos elevados no banco de dados. Caso algum erro retorne o conteúdo desse arquivo PHP ao navegador de um usuário, a senha do banco de dados e outros detalhes poderiam ser comprometidos (no entanto, este é um cenário muito improvável). A melhor maneira de minimizar o risco é criar uma conta de acesso específica, com direitos apenas sobre o banco de dados do seu LimeSurvey.

Outra forma de proteger essas informações é colocar o conteúdo do arquivo /application/config/config.php em um diretório não web, ou seja, para usuários de Apache, o diretório acima da pasta htdocs (também conhecida como public_html ou www). Basicamente, você continuará usando o config.php, mas com apenas uma linha nele - uma linha que inclui o arquivo com as informações REAIS de configuração (ex.: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Remova todas as informações reais de configuração de /application/config/config.php e cole-as no outro arquivo (configreal.php) mencionado no arquivo /application/config/config.php. Esse outro arquivo deve estar localizado em um diretório não web. Assim, o /application/config/config.php não conterá senhas de banco de dados etc. - apenas o nome do arquivo que CONTÉM as informações do banco de dados.

Isso evita ter que alterar todos os outros arquivos que incluem /application/config/config.php, já que o config.php 'redireciona' esses arquivos para o arquivo de configuração localizado em um diretório não web, que contém todas as informações reais de configuração.

Além disso, não use "admin" ou "administrator" como usuário padrão. Acesse seu banco de dados MySQL (ou aquele em que você instalou o LimeSurvey) e altere o nome de usuário padrão "admin" para o que preferir (por exemplo, "admin_xyz"). Assim, ficará muito mais difícil adivinhar o novo nome de usuário do administrador. Lembre-se de que essa é uma das duas variáveis que invasores podem usar para obter acesso. A senha do administrador é a outra variável. Portanto, escolha ambas com extremo cuidado.

Content Security Policy (CSP)

AVISO LEGAL - A CSP fornecida aqui é apenas um exemplo e não deve ser usada ao pé da letra. Ela serve como ponto de partida e você DEVE adaptá-la às suas necessidades e testá-la minuciosamente.

<IfModule mod_headers.c>
        Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
</IfModule>