Como posso impedir que um site invadido no meu servidor comprometa os outros sites?

3

Sou assistente de ensino em segurança de software e executando um servidor vulnerável por design.

É um servidor nginx e tem 40 portas abertas. Cada porta serve um aplicativo da web e todos os aplicativos da web são muito vulneráveis a invasões. Se um aplicativo da Web for comprometido, o invasor obterá os privilégios do usuário do www-data, e o invasor poderá comprometer os outros 39 aplicativos da web. Existe alguma maneira de evitar que isso aconteça? Não quero que o invasor obtenha direitos de acesso além do aplicativo da web invadido.

As limitações de hardware no servidor tornam o Docker inviável, sem falar nas VMs.

    
por Magnus 15.01.2018 / 09:14

2 respostas

3

If one web application is compromised, the attacker will gain the privileges of the www-data user, and the attacker will then be able to compromise the other 39 web applications. Is there any way I can keep this from happening?

Sim. Não faça isso. Não há absolutamente nenhum motivo para executar aplicativos não relacionados como um único usuário. Há mais de 65.000 IDs de usuário disponíveis em um sistema típico semelhante ao Unix e você deve aproveitá-los. Como fazer isso depende do aplicativo específico e das tecnologias que ele usa, o que seria melhor feito em uma pergunta separada.

    
por 20.01.2018 / 03:44
0

Parece uma situação única para aplicativos, mas eu perguntaria isso aos desenvolvedores: se o aplicativo for um aplicativo PHP, por que eles não podem usar $_SERVER['SERVER_PORT'] para obter a porta atual do aplicativo atual e isolar os dados de acordo? Isso pode ser adicionado como uma verificação no topo de um programa PHP, e se algo desagradável for observado, apenas exit(); ou faça algo que claramente proíba o comportamento indesejável. Como precisamente isso depende da aplicação.

    
por 20.01.2018 / 03:55