Ricerca nel sito web

Abilitare UserDir e proteggere con password le directory Web sul server Web Zentyal - Parte 10


In un ambiente con più utenti come Zentyal PDC Active Directory l'esecuzione di un server web può essere di grande aiuto, se desideri consentire a ciascun utente di avere la propria pagina web personale che può essere ospitata nelle proprie case.

Il modulo Webserver su Zentyal 3.4 può essere configurato per attivare Users Public HTML e con l'aiuto di alcuni script Linux BASH per generare dinamicamente alcuni contenuti per la pagina Web e trasmettere agli utenti le informazioni richieste al momento dell'accesso al dominio.

Inoltre Apache viene fornito da molto tempo con un'altra funzionalità relativa alla sicurezza dei contenuti forniti e cioè proteggere con password una directory web in una delle forme più semplici semplicemente utilizzando .htaccess e crea un elenco di utenti necessari per accedere alle risorse, proteggendo anche i contenuti web dai crawler dei motori di ricerca.

Requisiti

  1. Guida all'installazione di Zentyal
  2. Installa i servizi Web (Apache) in Zentyal Server

Passaggio 1: abilitare l'HTML pubblico dell'utente

1. Accedi al tuo strumento di amministrazione Web Zentyal PDC utilizzando https://zentyal_ip.

2. Passa a Modulo server Web -> seleziona Abilita utente peer public_html, premi il pulsante Cambia quindi Salva le modifiche .

3. Apri un browser e inserisci nell'URL il seguente: http://miodominio.com/~tuo_nomeutente.

Come puoi vedere, Apache non ha autorizzazioni per l'accesso alla directory dell'utente o all'indice della home dell'utente. Per correggere questo comportamento dobbiamo fornire a www-data i permessi di esecuzione sulla directory /home/$USER e creare una cartella public_html nel percorso degli utenti.

Per semplificare un po' le cose scriveremo uno script Linux Bash che crea la directory public_html e abilita i permessi corretti su tutti gli utenti del sistema, genera automaticamente le pagine web html per tutti utenti con una directory home valida e un altro script, questa volta uno script Windows Bach, che lo collegherà all'oggetto Criteri di gruppo del dominio predefinito in modo che a ogni utente venga richiesta la sua pagina Web personale dopo l'accesso con le credenziali di dominio da < Sistemi b>Windows uniti nel dominio.

4. Per completare questa attività accedi a Zentyal Server utilizzando Putty con il tuo account amministrativo Zentyal creato durante l'installazione del sistema e crea il primo script utilizzando il tuo editor di testo preferito. Lo chiameremo "creazione-dir-utente".

nano user-dir-creation

5. Aggiungi il contenuto seguente nello script "creazione directory utente".

#!/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. Salva lo script e rendilo eseguibile, quindi eseguilo con i privilegi di root.

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

7. Apri nuovamente un browser e puntalo allo stesso URL di cui sopra (vedi punto 3).

È stata creata la directory public_html ed è stato generato un file html per tutti gli utenti, quindi ora tutti possiedono una pagina web personalizzata (Questa è solo una semplice pagina di prova ma immagina cosa puoi fare con un po' di PHP , MySQL o CGI ).

8. Se Zentyal 3.4 Server è anche un controller di dominio primario, possiamo fare in modo che la pagina Web per utente venga aperta automaticamente in un browser quando gli utenti accedono da host Windows uniti al dominio.

Per abilitarlo, accedi a un sistema Windows unito al dominio e crea uno script batch di Windows denominato "public_html.bat" utilizzando Blocco note con il seguente contenuto.

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

Nota: tieni presente il carattere speciale "~" e %username% che è una variabile di ambiente Windows.

9. Apri Strumento di amministrazione Web Zentyal (https://zentyal_IP) e vai su Dominio -> Oggetti criteri di gruppo -> Predefinito Criterio dominio -> Editor GPO.

10. Fai clic su Modifica, scorri verso il basso fino a Configurazione utente –> Aggiungi nuovo script di accesso, sfoglia il percorso in cui è stato creato lo script e premi < b>AGGIUNGI.

Congratulazioni! Ora la prossima volta che accedi al dominio, il tuo browser predefinito aprirà una pagina web personalizzata relativa al tuo nome utente.

Passaggio 2: proteggere la directory Web con password

Questa parte richiede una configurazione più avanzata sul modulo Apache che non può essere ottenuta dall'Zentyal Web Interface ma solo dalla riga di comando e modificando alcuni template del modulo Zentyal Apache.

Se provi a modificare direttamente la configurazione di Apache come faresti normalmente su un server Linux, tutte le configurazioni effettuate andranno perse perché Zentyal utilizza alcuni moduli modello che riscrivono i file di configurazione di ciascun servizio dopo il riavvio o il riavvio del servizio.

Per proteggere effettivamente una cartella web utilizzando l'autenticazione Apache e rendere permanenti le modifiche, è necessario modificare la direttiva "AllowOverride" e il modulo "auth_basic" deve essere caricato e abilitato sul server web Apache .

11. Per abilitare tutte le configurazioni è necessario effettuare il primo accesso tramite la riga di comando utilizzando Putty su Zentyal Server con account root.

12. Abilita "auth_basic" emettendo il seguente comando e quindi riavviando il servizio web zentyal.

a2enmod auth_basic
service zentyal webserver restart

13. Dopo che il modulo è stato caricato, è il momento di modificare il modello Zentyal Apache Vhost situato nel percorso "/usr/share/zentyal/stubs/webserver/" e impostare "AllowOverride“.

Primo file vhost.mas di backup.

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

Quindi apri un editor, vai in fondo al file e sostituisci "Nessuno" con "Tutti" nella riga direttiva "Consenti sovrascrittura" come nello screenshot .

14. Dopo aver terminato la modifica, riavvia il modulo Zentyal Webserver per applicare le nuove modifiche.

service zentyal webserver restart

L'obiettivo principale della direttiva AllowOverride è alterare dinamicamente le configurazioni di Apache da altri file diversi da quelli utilizzati nella root di Apache (/etc/apache2/) in base al percorso utilizzando File .htacess.

15. Ora è il momento di creare alcuni utenti a cui è consentito navigare in una directory di contenuti Web protetta da password. Per prima cosa dobbiamo creare una directory posizionata all'esterno del percorso del sottodominio dove il file .htpasswd sarà ospitato e protetto.

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

16. Ora è il momento di creare il file .htpasswd e aggiungere alcuni utenti utilizzando il comando htpasswd. Quando viene creato il primo utente, aggiungere l'interruttore di comando “–c” (crea) per creare il file e aggiungere l'utente, quindi immettere e confermare la password dell'utente.

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

17. Ora il file .htpasswd viene creato e crittografato utilizzando l'algoritmo salt MD5 ed è possibile aggiungere tutti gli utenti necessari per accedere al contenuto della cartella Web come richiesto.

18. Supponiamo ora che tu voglia proteggere l'URL http://www.miodominio.com da altri utenti rispetto a quelli creati sul tuo file htpasswd per accedere al sottodominio. Per abilitare questo comportamento crea un file .htaccess nel percorso di sistema www.miodominio.com e aggiungi il seguente contenuto.

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

Assicurati inoltre che il file .htacces sia protetto da parole leggibili.

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

Congratulazioni! Ora hai protetto con password con successo il sottodominio www.miodominio.com sul tuo sito web e agli utenti verrà richiesto di inserire le proprie credenziali per accedere ai contenuti del sito web.

Inoltre se vuoi proteggere altri domini o sottodomini creati sul tuo server con le credenziali già create, copia semplicemente il file .htaccess sul percorso Apache del tuo sottodominio e assicurati che www-dataha accesso in lettura.

Con l'aiuto di Apache Web Direcory Password Protect Zentyal Weberver può essere forgiato con un livello di sicurezza aggiuntivo nell'esposizione delle informazioni sensibili pubblicate sui tuoi domini, ma tieni presente che questo metodo protegge solo le directory e non vengono trasmessi file e password in chiaro dal browser, quindi prova a utilizzare il protocollo HTTPS per proteggere le credenziali dell'utente dall'intercettazione.