Pesquisa de site

Habilitando diretórios da Web UserDir e Password Protect no Zentyal Webserver - Parte 10


Em um ambiente de múltiplos usuários como um Zentyal PDC Active Directory rodar um servidor web pode ser de grande ajuda, se você quiser permitir que cada usuário tenha sua página pessoal que pode ser hospedada em suas próprias casas.

O módulo Webserver no Zentyal 3.4 pode ser configurado para ativar o Users Public HTML e com a ajuda de alguns scripts Linux BASH para gerar dinamicamente algum conteúdo para a página da web e transmitir aos usuários as informações necessárias em seu logon no domínio.

Além disso, o Apache vem há muito tempo com outro recurso relacionado à segurança do conteúdo entregue: proteger com senha um diretório da web em uma das formas mais simples, apenas usando .htaccess e criar uma lista de usuários necessários para acessar os recursos, até mesmo proteger o conteúdo da web dos rastreadores dos mecanismos de pesquisa.

Requisitos

  1. Guia de instalação do Zentyal
  2. Instale serviços da Web (Apache) no Zentyal Server

Etapa 1: ativar o HTML público do usuário

1. Faça login em sua ferramenta de administração da Web Zentyal PDC usando https://zentyal_ip.

2. Navegue até Módulo de Servidor Web -> marque Ativar usuário peer public_html, clique no botão Alterar e em seguida Salvar alterações .

3. Abra um navegador e digite o seguinte campo URL: http://meudominio.com/~seu_nomedeusuário.

Como você pode ver, o Apache não tem permissões para acessar o diretório de usuário ou indexar a página inicial do usuário. Para corrigir esse comportamento, devemos fornecer ao www-data permissões de execução no diretório /home/$USER e criar uma pasta public_html no caminho do usuário.

Para simplificar um pouco as coisas vamos escrever um script Linux Bash que cria o diretório public_html e habilita permissões corretas para todos os usuários do sistema, gera automaticamente as páginas HTML para todos usuários com um diretório inicial válido e outro script, desta vez um script Windows Bach, que o vinculará ao GPO de domínio padrão para que cada usuário receba sua página pessoal após o login com credenciais de domínio de < Sistemas b>Windows unidos no domínio.

4. Para completar esta tarefa faça login no Zentyal Server usando o Putty com sua conta administrativa Zentyal criada na instalação do sistema e crie o primeiro script usando seu editor de texto favorito. Vamos chamá-lo de “user-dir-creation“.

nano user-dir-creation

5. Adicione o conteúdo abaixo no script “user-dir-creation”.

#!/bin/bash

for i in `ls /home | grep -v samba| grep -v lost+found`;  do

        mkdir /home/$i/public_html

## Make world readable and executable, so that www-data can access it  ##

        chmod -R 755 /home/$i

      chgrp -R www-data /home/$i/public_html/

## Next code should be on a single line ##

echo "<html><body style='background-color:#2DC612'><div align='center'><p><H1 style='color:#fff'>Welcome user $i on <a style='color:#fff' href='https://mydomain.com'>`hostname -f` </a></H1></p></div></body></html>" > /home/$i/public_html/index.html

## List /home/$USER permissions and public_html perm optional ##

echo "......................."

ls -all /home/$i

echo "......................"

ls -all /home/$i/public_html

done;

6. Salve o script e torne-o executável e execute-o com privilégios de root.

chmod +x user-dir-creation
sudo ./user-dir-creation

7. Abra novamente um navegador e aponte-o para o mesmo URL acima (ver ponto 3).

O diretório public_html foi criado e um arquivo html foi gerado para todos os usuários, então agora todos eles possuem uma página web personalizada (Esta é apenas uma página de teste simples, mas imagine o que você pode fazer com algum PHP , scripts MySQL ou CGI).

8. Se o Zentyal 3.4 Server também for um Controlador de Domínio Primário, podemos fazer com que a página da web por usuário seja aberta automaticamente em um navegador quando os usuários fizerem logon de hosts do Windows ingressados no domínio.

Para habilitá-lo, faça logon em um sistema Windows associado ao domínio e crie um script em lote do Windows chamado “public_html.bat” usando o Bloco de Notas com o seguinte conteúdo.

explorer http://your_domain.tld/~%username%

Nota: Observe o caractere especial “~” e %username% que é uma variável de ambiente do Windows.

9. Abra a Zentyal Web Administration Tool (https://zentyal_IP) e vá para Domínio -> Objetos de política de grupo -> Padrão Política de Domínio -> Editor de GPO.

10. Clique em Editar, role para baixo até Configuração do usuário –> Adicionar novo script de logon, navegue no caminho onde seu script foi criado e clique em < b>ADICIONAR.

Parabéns! Agora, na próxima vez que você fizer login no domínio, seu navegador padrão abrirá uma página da web personalizada relacionada ao seu nome de usuário.

Etapa 2: Diretório da Web protegido por senha

Esta parte requer configuração mais avançada no módulo Apache, que não pode ser obtida pela Zentyal Web Interface, mas apenas pela linha de comando e pela modificação de algum modelo do módulo Zentyal Apache.

Se você tentar modificar diretamente a configuração do Apache, como faria normalmente em um servidor Linux, todas as configurações feitas serão perdidas porque o Zentyal usa alguns modelos de formulários que reescrevem os arquivos de configuração de cada serviço após a reinicialização ou reinicialização do serviço.

Para realmente proteger uma pasta web usando a autenticação Apache e tornar as alterações permanentes, a diretiva “AllowOverride” precisa ser modificada e o módulo “auth_basic” precisa ser carregado e habilitado no servidor web Apache .

11. Para habilitar todas as configurações é necessário primeiro fazer login através da linha de comando usando Putty no Zentyal Server com conta root.

12. Habilite “auth_basic” emitindo o seguinte comando e reinicie o serviço web zentyal.

a2enmod auth_basic
service zentyal webserver restart

13. Depois que o módulo for carregado, é hora de modificar o modelo Zentyal Apache Vhost localizado no caminho “/usr/share/zentyal/stubs/webserver/” e configurar “PermitirSubstituir“.

Primeiro backup do arquivo vhost.mas.

cp /usr/share/zentyal/stubs/webserver/vhost.mas  /usr/share/zentyal/stubs/webserver/vhost.mas.bak

Em seguida, abra um editor, navegue até o final do arquivo e substitua “None” por “All” na linha de diretiva “Allow Override” como na captura de tela .

14. Depois de terminar a edição, reinicie o módulo Zentyal Webserver para aplicar as novas alterações.

service zentyal webserver restart

O principal objetivo da diretiva AllowOverride é alterar dinamicamente as configurações do Apache de outros arquivos diferentes daqueles usados na raiz do Apache (/etc/apache2/) por caminho usando Arquivo .htacess.

15. Agora é hora de criar alguns usuários que tenham permissão para navegar em um diretório de conteúdo da web protegido por senha. Primeiro precisamos criar um diretório colocado fora do caminho do subdomínio onde o arquivo .htpasswd será hospedado e protegido.

mkdir /srv/www/htpass
chmod –R 750 /srv/www/htpass
chgrp –R www-data /srv/www/htpass

16. Agora é hora de criar o arquivo .htpasswd e adicionar alguns usuários usando o comando htpasswd. Quando o primeiro usuário for criado, adicione a opção de comando “–c” (criar) para criar o arquivo e adicionar o usuário, em seguida, insira e confirme a senha do usuário.

htpasswd –c /srv/www/htpass/.htpasswd first_user
htpasswd /srv/www/htpass/.htpasswd second_user

17. Agora o arquivo .htpasswd é criado e criptografado usando o algoritmo salt MD5 e você pode adicionar quantos usuários forem necessários para acessar o conteúdo da pasta da web, conforme necessário.

18. Agora vamos supor que você deseja proteger o URL http://www.mydomain.com de outros usuários, além daqueles criados em seu arquivo htpasswd para acessar o subdomínio. Para ativar esse comportamento, crie um arquivo .htaccess no caminho do sistema www.mydomain.com e adicione o seguinte conteúdo.

AuthType basic
AuthName “What ever message you want”
AuthBasicProvider file
AuthUserFile  /path/to/.htpassd file created
Require user  your_user1 user2 userN

Certifique-se também de que o arquivo .htacces esteja protegido por palavras legíveis.

nano /srv/www/www.mydomain.com/.htaccess
chmod 750  /srv/www/www.mydomain.com/.htaccess
chgrp www-data /srv/www/www.mydomain.com/.htaccess

Parabéns! Agora você protegeu por senha o subdomínio www.meudominio.com em seu site e os usuários serão solicitados a inserir suas credenciais para acessar o conteúdo do site.

Além disso, se você deseja proteger outros domínios ou subdomínios criados em seu servidor com as credenciais já criadas, basta copiar o arquivo .htaccess no caminho Apache do seu subdomínio e certificar-se de que www-data tem acesso de leitura.

Com a ajuda do Apache Web Direcory Password Protect Zentyal Weberver pode ser forjado com alguma camada de segurança extra para expor informações confidenciais postadas em seus domínios, mas esteja ciente de que este método protege apenas diretórios e não arquivos e senhas são transmitidos claro pelo navegador, então tente usar o protocolo HTTPS para proteger as credenciais do usuário contra interceptação.