Propaganda

Hospedagem Compartilhada. É a opção mais barata, não é? E para uma grande parte da população, é tudo o que eles precisam para hospedar seu site ou aplicativo da web. E, quando bem feita, a hospedagem compartilhada é escalável, rápida e segura.

Mas o que acontece quando não é bem feito?

Bem, é aí que problemas perigosos de segurança começam a aparecer. É quando seu site corre o risco de ser desfigurado ou os dados privados que você mantém vazando. Mas não se preocupe. A grande maioria dos hosts da web possui medidas de segurança decentes. É apenas o anfitrião do voo noturno e porão de barganha que você precisa tomar cuidado.

Nós recomendamos Hospedagem compartilhada do InMotion Hosting com armazenamento SSD.

sharedhosting-hacker

Vamos explorar os problemas de segurança em torno da hospedagem compartilhada. Mas primeiro, vamos falar sobre o que torna uma plataforma de hospedagem compartilhada segura.

O que faz um host seguro na Web

Existem algumas considerações de segurança de destaque que devem ser feitas com relação à hospedagem compartilhada.

  • Cada usuário no servidor deve estar isolado de outros usuários e não deve poder acessar ou modificar os arquivos de outros usuários.
  • Uma vulnerabilidade de segurança na lógica de um site hospedado no servidor não deve afetar outros usuários.
  • O servidor é regularmente corrigido, atualizado e monitorado para solucionar problemas de segurança arquitetural.
  • Cada usuário deve ter seu próprio acesso isolado ao banco de dados e não deve ter permissão para fazer alterações nos registros armazenados ou nas permissões de tabela de outros usuários.

Novamente, a maioria dos hosts da web atende a esses requisitos para suas ofertas compartilhadas. Mas se você está hospedando vários sites em um servidor ou está curioso para saber como sua empresa de hospedagem se destaca, ou mesmo pensando em lançar sua própria empresa de hospedagem e está ansioso para descobrir como proteger seus usuários, então leia em.

Mas primeiro, um aviso

Antes de começarmos a analisar ataques comuns feitos em hospedagem compartilhada, eu só quero declarar que esta postagem não será (e não deve ser lida como) uma lista exaustiva de possíveis problemas.

Segurança é, em uma palavra, grande. Há várias maneiras pelas quais você pode comprometer um site. Isso vale duas vezes para hospedagem compartilhada. Cobrindo-os em um único artigo nunca estava nos cartões.

Isenção de responsabilidade

Se você é paranóico em relação à sua segurança, obtenha um VPS ou servidor dedicado. Esses são ambientes nos quais você tem (na maior parte) controle absoluto sobre o que acontece. Se você não tem certeza sobre os diferentes tipos de hospedagem na web, confira este post As várias formas de hospedagem de sites explicadas [Tecnologia explicada] consulte Mais informação do meu colega James Bruce.

Devo também enfatizar que esta postagem não deve ser interpretada como um ataque à hospedagem compartilhada. Pelo contrário, é uma visão puramente acadêmica dos problemas de segurança que envolvem essa categoria de hospedagem na web.

Passagem do diretório

Vamos começar com ataques de travessia de diretório (geralmente conhecidos como "travessia de caminho)". Esse tipo de ataque permite acessar arquivos e diretórios armazenados fora da raiz da web.

Em inglês simples? Bem, vamos imaginar que Alice e Bob usem o mesmo servidor para hospedar seus sites. Os arquivos de Alice são armazenados em / var / www / alice, enquanto os documentos de Bob podem ser encontrados em / var / www / bob. Além disso, vamos fingir que há outra pasta no servidor (/ usr / crappyhosting / myfolder) que contém um arquivo de texto sem criptografia (nós o chamaremos de pwd.txt) contendo nomes de usuário do sistema e senhas.

sharedhosting-server

Comigo até agora? Boa. Agora, vamos imaginar que o site de Bob sirva arquivos PDF gerados localmente, e o arquivo local é referenciado no URL. Algo como:

http://example.com/file?=report.pdf

O que aconteceria se eu substituísse o 'report.pdf' por alguns parâmetros do UNIX que alteram o diretório?

http://example.com/file?=../alice/

Se o servidor estiver configurado incorretamente, isso permitirá que você veja a raiz do documento de Alice. Interessante, mas estamos muito mais interessados ​​nesse suculento arquivo de passaportes. Senhas do Accio!

http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt

É realmente tão fácil quanto isso. Mas como lidamos com isso? Isso é fácil.

Já ouviu falar de um utilitário Linux pouco conhecido chamado chroot? Você provavelmente já adivinhou o que faz. Ele define a raiz do Linux / UNIX para uma pasta arbitrária, impossibilitando a saída dos usuários. Efetivamente, ele interrompe os ataques de travessia de diretório em suas trilhas.

chroot compartilhado

É difícil dizer se o seu host possui isso sem infringir a lei. Afinal, para testá-lo, você acessaria sistemas e arquivos que não tem permissão para acessar. Com isso em mente, talvez seja sensato falar com o seu host e perguntar como eles isolam seus usuários um do outro.

Você está operando seu próprio servidor de hospedagem compartilhada e não está usando o chroot para proteger seus usuários? É certo que chrooting seus ambientes pode ser difícil. Felizmente, existem vários plugins que facilitam isso. Dê uma olhada no mod_chroot, em particular.

Injeção de comando

Vamos voltar para Alice e Bob. Então, sabemos que o aplicativo da web de Bob tem alguns... Ah... problemas de segurança. Uma delas é a vulnerabilidade de injeção de comando, que permite executar comandos arbitrários do sistema Um guia rápido para iniciar a linha de comando do LinuxVocê pode fazer muitas coisas incríveis com comandos no Linux e não é realmente difícil de aprender. consulte Mais informação .

O site de Bob permite que você execute uma consulta whois em outro site, que é exibida no navegador. Há uma caixa de entrada HTML padrão que aceita um nome de domínio e executa o comando whois system. Este comando é executado chamando o comando PHP system ().

O que aconteceria se alguém inserisse o seguinte valor?

example.com && cd ../alice/ && rm index.html

Bem, vamos dividir. Isso pode lhe ser familiar se você leu nossa "Guia de introdução ao Linux" Introdução ao Linux e UbuntuVocê está interessado em mudar para o Linux... mas por onde você começa? O seu PC é compatível? Seus aplicativos favoritos funcionam? Aqui está tudo o que você precisa saber para começar a usar o Linux. consulte Mais informação e-book, que publicamos anteriormente em 2010 ou examinamos nosso Folha de Batalha da Linha de Comandos do Linux.

Primeiro, ele executará uma consulta whois no example.com. Em seguida, ele mudaria o diretório de trabalho atual para a raiz do documento de Alice. Em seguida, ele removeria o arquivo chamado "index.html", que é a página de índice do site dela. Isso não é bom. Não senhor.

sharedhosting-linux

Então, como administradores de sistema, como podemos mitigar isso? Bem, voltando ao exemplo anterior, sempre podemos colocar todos os usuários em seu próprio ambiente isolado, higienizado e com chroot.

Também podemos abordar isso a partir do nível do idioma. É possível (embora isso possa quebrar as coisas) remover globalmente as declarações de função dos idiomas. Ou seja, é possível remover a funcionalidade dos idiomas aos quais os usuários têm acesso.

Observando o PHP em particular, você pode remover a funcionalidade com o Runkit - o kit de ferramentas oficial do PHP para modificar a funcionalidade do idioma. Existe uma grande quantidade de documentação por aí. Leia sobre isso.

Você também pode modificar o arquivo de configuração do PHP (php.ini) para desativar as funções que são frequentemente abusadas por hackers. Para fazer isso, abra um terminal no seu servidor e abra o arquivo php.ini em um editor de texto. Gosto de usar o VIM, mas o NANO também é aceitável.

Encontre a linha que começa com disable_functions e adicione as definições de função que você deseja banir. Nesse caso, seria exec, shell_exec e system, embora seja interessante notar que existem outras funções internas que são exploráveis ​​por hackers.

disable_functions = exec, shell_exec, sistema

Ataques baseados em idiomas e intérpretes

Então, vamos olhar para o PHP. Essa é a linguagem que impulsiona um número surpreendente de sites. Ele também vem com várias idiossincrasias e comportamentos estranhos. Como isso.

O PHP geralmente é usado em conjunto com o servidor da web Apache. Na maioria das vezes, é impossível carregar várias versões do idioma com essa configuração.

sharedhosting-phpelephant

Por que isso é um problema? Bem, vamos imaginar que o aplicativo Web de Bob foi originalmente criado em 2002. Isso já faz muito tempo. Foi quando Michelle Branch ainda estava no topo das paradas, Michael Jordan ainda estava jogando no Washington Wizards e o PHP era uma linguagem muito diferente.

Mas o site de Bob ainda funciona! Ele usa um monte de funções PHP descontinuadas e obsoletas, mas funciona! O uso de uma versão moderna do PHP quebraria efetivamente o site de Bob, e por que Bob deveria reescrever seu site para atender aos caprichos de seu host?

Isso deve lhe dar uma idéia do dilema que alguns hosts da web enfrentam. Eles precisam equilibrar a manutenção de um serviço seguro e arquitetonicamente seguro, mantendo isso em harmonia com a satisfação dos clientes pagantes.

Como resultado, não é incomum ver hosts menores e independentes usarem versões mais antigas do interpretador PHP (ou qualquer outro idioma).

Não é incomum ver hosts menores e independentes usarem versões mais antigas do PHP, expondo os usuários a riscos de segurança.

Por que isso é uma coisa ruim? Bem, em primeiro lugar, exporia os usuários a vários riscos de segurança. Como a maioria dos principais pacotes de software, o PHP é constantemente atualizado para lidar com a infinidade de vulnerabilidades de segurança que são constantemente descobertas (e divulgadas).

Além disso, significa que os usuários não podem usar as funções de idioma mais recentes (e melhores). Isso também significa que as funções que foram descontinuadas por um motivo permanecem. No caso do Linguagem de programação PHP Aprenda a construir com o PHP: um curso intensivoPHP é a linguagem que o Facebook e a Wikipedia usam para atender bilhões de solicitações diariamente; a linguagem de fato usada para ensinar às pessoas a programação da web. É lindamente simples, mas brilhantemente poderoso. consulte Mais informação , isso inclui as funções mysql_ ridiculamente terríveis (e recentemente descontinuadas) que são usadas para interagir com o MySQL Relational Database System, e dl (), que permite aos usuários importar sua própria linguagem extensões.

Como usuário, você poderá ver qual versão de um intérprete está sendo executada em seu serviço. Se estiver desatualizado ou contiver várias vulnerabilidades de segurança, entre em contato com seu host.

E os administradores de sistemas? Você tem algumas opções aqui. O primeiro (e mais promissor) é usar o Docker para cada um de seus usuários. O Docker permite que você execute vários ambientes isolados simultaneamente, como uma máquina virtual, embora sem precisar executar outro sistema operacional. Como resultado, isso é rápido. Muito, muito rápido.

Em inglês simples? Você pode executar o melhor e mais recente intérprete de ponta para a maioria dos usuários, enquanto os clientes que usam aplicativos antigos que usam intérpretes antigos e obsoletos para fazer isso sem comprometer outros Comercial.

Isso também tem a vantagem de ser um idioma independente. PHP, Python, Ruby. Tanto faz. É tudo a mesma coisa.

Não tenha pesadelos.

Este post foi feito para fazer algumas coisas. Em primeiro lugar, era para chamar a atenção para o número de questões de segurança que as empresas de hospedagem na web precisam enfrentar para garantir a segurança de seus clientes e dados.

Também se destinava a mostrar como sites hospedados no mesmo servidor podem se afetar. Quer colocar um dente nisso? Comece a obedecer a padrões de codificação bons e seguros. Em particular, comece a higienizar suas entradas no front-end e no back-end.

Um bom começo é com a nova funcionalidade de validação de formulário HTML5. Já falamos sobre isso no nosso guia HTML5. Coletivamente, podemos tornar os sites mais seguros, sendo programadores melhores e mais conscientes.

Como sempre, estou pronto para ouvir seus pensamentos. Deixe-me um comentário abaixo.

Crédito da foto: Todo mundo precisa de um hacker (Alexandre Dulaunoy), Adesivo na janela do táxi (Cory Doctorow), Sala do servidor (Torkild Retvedt), Livros e revistas Linux (library_mistress), Elefante do PHP (Markus Tacker)

Matthew Hughes é desenvolvedor e escritor de software de Liverpool, Inglaterra. Ele raramente é encontrado sem uma xícara de café preto forte na mão e adora absolutamente o Macbook Pro e a câmera. Você pode ler o blog dele em http://www.matthewhughes.co.uk e siga-o no twitter em @matthewhughes.