Segurança em VHosts [RESOLVIDO]

1. Segurança em VHosts [RESOLVIDO]

Maurício
foreverfree777

(usa Ubuntu)

Enviado em 21/02/2013 - 21:41h

Pessoal olha eu de novo aqui hehehe,
Eu criei 2 VHosts apontando para os diretórios /var/www/projeto1 e /var/www/projeto2
se eu chamar no navegador projeto1.exemplo.br aparece o projeto 1 corretamente
se eu chamar o projeto2.exemplo.br também funciona, até ai ok.
BUT
Suponhamos que o projeto1 é mantido por um programador php mal intencionado, e esse programador resolver commitar um script que faz uma leitura do diretório /var/www/projeto2 para verificar os arquivos nele contido? isso é possível uma vez que o apache precisa de de permissões de leitura e execução nos diretórios dos projetos.

Como eu faço a segurança disso?

O mesmo ocorre quando eu habilito o php no home do usuário, por ex.
/home/projeto1/public_html ==> projetos.exemplo.br/~projeto1
/home/projeto2/public_html ==> projetos.exemplo.br/~projeto2
Um script qualquer do projeto1 consegue fazer uma varredura nos arquivos do projeto2.

Abraço


  


2. Re: Segurança em VHosts [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/02/2013 - 22:45h

Iaê velhinho! Tá na peleja ainda?

Configura cada Virtual Host com seu próprio DocumentRoot.

DocumentRoot – Diretório raiz.


3. Re: Segurança em VHosts [RESOLVIDO]

Maurício
foreverfree777

(usa Ubuntu)

Enviado em 23/02/2013 - 13:03h

Acabei de conseguir, nada como a ajuda de um amigo nerd que está de férias, na praia e não sai do notebook hehehehe
minha solução foi a seguinte:
#primeiro ativei o módulo userdir
a2enmod userdir 


#depois habilitei o php comentando algumas linhas no arquivo /etc/apache2/mods-enabled/php5.conf

# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>



#no arquivo /etc/apache2/mods-available/userdir.conf modificar AllowOverride para All
AllowOverride All 


#reiniciei o apache

#criei um usuário para cada projeto
adduser <projeto> 


#criei um arquivo de senha para cada projeto
htpasswd -b -c /home/<projeto>/public_html/.htpasswd <usuario> <senha> 


#criei o arquivo /home/<projeto>/public_html/.htaccess com a seguinte instrução

AuthUserFile /home/<projeto>/public_html/.htpasswd
AuthType Basic
AuthName "Required Auth"
Require valid-user
php_value open_basedir "/home/<projeto>/public_html"
php_flag log_errors on
php_value error_log /home/<projeto>/public_html/PHP_errors.log


#alterei as permissões dos arquivos .htaccess e .htpasswd

chmod 640 .htaccess
chmod 640 .htpasswd
chown root:www-data .htaccess
chown root:www-data .htpasswd


#Fim
Agora quando alguém tenta acessar http://meudominio.br/~<projeto>; é solicita uma senha de acesso.
A propriedade open_basedir bloqueia a aplicação php ao seu diretório (Eu achei que o DocumentRoot fizesse isso mas não), qualquer tentativa de ler arquivos fora deste local vai retornar Permission Denied.
Eu coloquei também para gerar um error_log personalizado para cada projeto =]


4. Re: Segurança em VHosts [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/02/2013 - 13:12h

Legal!
Cria uma dica ou um artigo. Vai ajudar muitos usuários.

Abraço!


5. Re: Segurança em VHosts [RESOLVIDO]

Maurício
foreverfree777

(usa Ubuntu)

Enviado em 23/02/2013 - 13:18h

vou fazer isso sim =]

Abraço








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts