Conta de usuário para executar sites no linux

3

Eu tenho visto muitos blogs e artigos recomendando que eu não execute o site no Linux sob o usuário root.

Devo criar uma conta diferente para o site de corrida? Como sobre backends como MySql como banco de dados? Eles podem ser executados como root, mas mesmo assim eu poderia executar o site como um usuário não root?

O Linux permitirá que eu vincule uma porta localhost na conta diferente?

Eu uso o Ubuntu 10.04 x64 server edition.

    
por Krish 29.06.2010 / 19:20

5 respostas

8

Os privilégios mínimos necessários para realizar a tarefa devem ser usados em todos os casos.

O Apache começa como root, mas gera filhos como um usuário diferente. Isso é especificado por User e Group no httpd.conf e é não-raiz por padrão.

Usuários não-root podem se vincular a portas > 1024.

O MySQL não precisa ser executado como root e é executado na porta 3306.

    
por 29.06.2010 / 19:23
3

Extraído do link

Na operação típica, o Apache é iniciado pelo usuário root e alterna para o usuário definido pela diretiva User para exibir ocorrências. Como é o caso de qualquer comando que o root executa, você deve tomar cuidado para que ele seja protegido contra modificação por usuários não-root. Não apenas os arquivos devem ser gravados apenas pelo usuário root, mas também pelos diretórios e pais de todos os diretórios.

Por exemplo, se você escolher colocar o ServerRoot em / usr / local / apache, sugere-se criar esse diretório como root, com comandos como estes:

mkdir /usr/local/apache
cd /usr/local/apache
mkdir bin conf logs
chown 0 . bin conf logs
chgrp 0 . bin conf logs
chmod 755 . bin conf logs

Assume-se que /, / usr e / usr / local são apenas modificáveis pela raiz. Quando você instala o executável httpd, deve garantir que ele seja protegido de maneira semelhante:

cp httpd /usr/local/apache/bin
chown 0 /usr/local/apache/bin/httpd
chgrp 0 /usr/local/apache/bin/httpd
chmod 511 /usr/local/apache/bin/httpd 

Você pode criar um subdiretório htdocs que é modificável por outros usuários - já que o root nunca executa nenhum arquivo de lá e não deve criar arquivos lá.

    
por 29.06.2010 / 19:29
2

Você parece estar executando o debian / ubuntu. Por padrão, pelo menos o apache, o mysql e o postgresql estão rodando como usuários menos privilegiados. Você ainda precisa de usuários do banco de dados; um para acesso normal ao site e outro para migrações de esquema é o que eu uso.

    
por 29.06.2010 / 19:25
1

Normalmente, você deve executar tantos serviços quanto usuários não-root quanto possível. A razão disso é que, se o serviço for comprometido de alguma forma, os processos em seu sistema poderão ser iniciados com privilégios elevados. A melhor maneira que encontrei em torno do requisito de porta em que usuários não-root não podem escutar em portas menores que 1024, é usar IPTABLES, com a cadeia PREROUTING na tabela NAT. Dessa forma, você pode manter a segurança da permissão mínima necessária e, ainda assim, responder nas portas populares.

Table: nat
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source     destination         
1    REDIRECT   tcp  --  0.0.0.0/0  172.16.1.10  tcp dpt:80 redir ports 8080 

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source     destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source     destination         
1    REDIRECT   tcp  --  0.0.0.0/0  172.16.1.10  tcp dpt:80 redir ports 8080 
    
por 29.06.2010 / 19:30
1

Se você instalar usando os pacotes oficiais do ubuntu - usando aptitude ou apt-get; o usuário e os privilégios do serviço que você instala (por exemplo, apache2) serão classificados pelo pacote. Não deveria haver razão para você fazer o seu próprio. A rolagem de seus próprios pode realmente interromper o processo de atualização de pacotes e deixar você incapaz de instalar patches de segurança.

    
por 30.06.2010 / 05:43