Configurando o servidor de produção, em qual usuário os aplicativos devem ser executados?

4

Estou tentando configurar um servidor de produção. Devo criar um usuário separado para executar determinado aplicativo de maneira semelhante ao que o apache faz? Não é seguro que eles sejam executados como root?

SO: Ubuntu 9.10

O servidor é para aplicativos baseados na web, Ele hospeda um site, mas também um monte de processos de servidores suportados

    
por whatWhat 15.01.2010 / 22:41

4 respostas

4

Eu prefiro que cada serviço de aplicativo seja executado como seu próprio usuário, a fim de isolar o máximo possível deles. Se alguma parte do sistema for quebrada ou comprometida, eu gostaria de localizar o dano o máximo possível.

    
por 15.01.2010 / 23:12
1

Root é o botão mágico. O mínimo possível deve ser executado como root.

Para o resto, este é um servidor dedicado? Ou seja, quantos aplicativos estão sendo executados? Apenas um, escolha qualquer usuário. Até mesmo executá-lo como o usuário da web.

Você pode basicamente pensar em um usuário como um limite. Se tudo for executado como o mesmo usuário (digamos, www), todas essas coisas terão acesso direto umas às outras. Se alguém for comprometido, está tudo aberto.

No entanto, para muitos usos, não importa. Não leve isso a sério, mas você não parece ser um especialista em segurança e, portanto, tenho a sensação de que, caso alguém tenha acesso à sua máquina, está tudo acabado. É preciso um esforço dedicado para proteger uma máquina contra um invasor dedicado.

Você não mencionou qual idioma seu aplicativo da web foi escrito em btw. Se Ruby on Rails, cada aplicativo pode ser facilmente seu próprio usuário. Se PHP, bem, provavelmente não. Provavelmente, execute-os como o usuário da web.

    
por 15.01.2010 / 23:07
0

whatWhat eu tenho cada um dos meus django instância em execução como usuário separado. Essa é a melhor maneira de fazer isso. Eu estou usando o processo Apache + WSGI Daemon. Eu já havia executado todas as instâncias com o mesmo usuário. Mas nós tivemos aleatoriamente poucos problemas. Como parte do ajuste fino, muitas coisas que segui separaram os usuários para cada instância. Desde então, não tenho tido problemas nos últimos 8 meses.
Como John mencionou de qualquer maneira, se uma de suas instâncias for comprometida, todas as outras instâncias não precisarão se preocupar.

    
por 16.01.2010 / 10:00
0

Definitivamente, não é aconselhável executar um aplicativo da web em Python como root. Se uma parte específica do código tiver que ser executada como raiz, seria melhor incluir esse fator em um serviço de back-end separado com o qual o aplicativo Web principal se comunica usando algum processo de comunicação entre processos. Esse aplicativo de backend deve aceitar apenas conexões do host em que o aplicativo da Web é executado e não conexões arbitrárias de qualquer host.

Além disso, você não diz como está hospedando o Django, então torna-se mais difícil aconselhá-lo se você também está atrás do método para isolar o código para ser executado como um usuário específico. Você está usando o mod_python, mod_wsgi, fastcgi ou proxying para um servidor Python WSGI de backend que o está executando?

No pior dos casos, sua única opção será o código ser executado como o mesmo usuário que o Apache executa. Isso não é aconselhável se estiver executando outros aplicativos no mesmo Apache, seja Python, PHP ou alguma outra linguagem. Isso ocorre porque todos os aplicativos podem interferir uns com os outros e, portanto, uma violação em um aplicativo separado ainda pode causar problemas.

Assim, é preferível executar aplicativos individuais como usuários distintos e bloquear permissões de sistemas de arquivos, de modo que cada um possa acessar apenas os dados para esse aplicativo.

Se você quiser um nível extra de paranóia, comece a procurar aplicativos individuais em um ambiente chroot.

O que exatamente você pode fazer é ditado pelo modo como você o hospeda, e por que é importante saber disso.

    
por 18.01.2010 / 23:01

Tags