Come proteggere i nostri siti utilizzando .htpasswd + Esempi

Per molti motivi può essere molto utile avere un accesso controllato a determinate directory su un server web o semplicemente ai contenuti della nostra pagina o blog attraverso un servizio di autenticazione basato su username e password. Sto parlando di qualcosa come la tipica finestra che appare quando vogliamo entrare in un sito web con servizi limitati.

Esistono diversi modi per generare finestre con modulo di autenticazione, ma viene fornita una soluzione interessante a livello di server htpasswd. È un'utilità la cui funzione è quella di memorizzare le password in una forma crittografata per essere utilizzata da Apache nei servizi di autenticazione. Il suo utilizzo ci permetterebbe di mostrare determinate directory o file tramite http solo ad utenti identificati e senza essere necessariamente disponibili gratuitamente a tutti.

Capisco che non sia un argomento molto appariscente ma può essere utile ad alcuni. Per non ucciderli con la noia, userò le immagini per renderlo più didattico.

Considerazioni precedenti: userò Ubuntu Server 12.04.1 y Apache 2.2.22 in un ambiente controllato.

Noi iniziamo.

Come alcuni di voi già sapranno, per impostazione predefinita i siti Apache disponibili sono memorizzati nella directory / Var / www / e per questo esempio creerò una directory con un template HTML e cercherò di proteggerla con .htpasswd.

La directory da proteggere è / var / www / esempio / dove ho posizionato la pagina successiva.

Sul server

Nel browser

1. Creeremo il file .htpasswd.

Il luogo in cui verrà posizionato è di importanza rilevante e collocarlo al di fuori di un elenco pubblico può essere più che raccomandato. Nel mio caso lo inserirò nella mia cartella personale (che non è una directory Apache pubblica) e con il nome .htpasswd (A priori non è necessario chiamarlo così, ma quello nascosto è sempre buono).

Per gli utenti nuovi a Linux. Per nascondere una directory o un file è necessario solo far iniziare il suo nome con un punto (.).

Con il seguente comando creo il file .htpasswd per un utente web che ho denominato: "Luke".

# htpasswd -c /home/krel/.htpasswd Luke

Ci chiederà di fornire la password due volte, nel mio caso ho messo "skywalker" (senza virgolette). In un ambiente non controllato dobbiamo stabilire password più sicure. La crittografia predefinita su Linux è MD5 ma su Unix è un'implementazione standard di crypt () e per password con meno di 8 caratteri può essere vulnerabile. Ora ho il dubbio se è lo stesso in BSD.

Il comando ha questa struttura:

  • -c → per creare il file
  • /home/krel/.htpasswd → percorso assoluto del file.
  • Luca → il nome utente (può essere quello che vuoi)

Allo stesso modo, non costringo nessuno a utilizzare il terminale quando ci sono servizi su Internet per questo:
http://www.web2generators.com/apache/htpasswd_generator

http://www.htaccesstools.com/htpasswd-generator/

Il risultato viene copiato in un file di testo e con il nome .htpasswd se lo desideri. Riguardo a questo metodo, non smettere di leggere ciò che commento nel prossimo paragrafo.

Nel nostro caso vedremo che il file è stato generato dove ci aspettavamo /home/krel/.htpasswd. Nell'immagine ho evidenziato che con questo metodo il file appartiene al gruppo e utente apache, che in Ubuntu si chiama www-data. Questo è importante perché se abbiamo generato .htpasswd in qualsiasi altro modo, dobbiamo assicurarci che abbia i permessi 644.

Bene, ora vedremo come sono le loro budella:

Come puoi vedere, c'è l'utente (Luca) ma la password è criptata.

In questo modo abbiamo già creato e progettato .htpasswd per l'utente Luke, alla fine non è altro che un contenitore per la password. "Tutto con un comando" sarebbe un buon tormentone.

2. Configurare Apache per utilizzare e consentire tale servizio sul sito.

# nano /etc/apache2/sites-available/default

Se hai più host, devono funzionare su ciascuno di essi, nel mio caso ho solo quello che viene fornito di default. Non dimenticare che è sempre bene fare un backup di quel file.

Quel file ha la struttura predefinita:

Webmaster ServerAdmin @ localhost

..................

..................

È proprio all'interno delle intestazioni di Virtualhost che verrà specificato l'uso di .htpasswd per accedere a una determinata directory. Lo facciamo come appare l'immagine qui sotto e appropriata al nostro esempio:

Buona. Spiego le righe:

Devi mettere la directory da proteggere.

AuthType di base

È il tipo di utente e password negoziato con il browser, in questo caso è Basic, senza crittografia.

C'è un altro tipo di negoziazione: Digest, questo crittografa il nome utente e la password, tuttavia l'ultima parola è il browser per sapere se supporta tale servizio. Si può dire che Digest sia un'implementazione leggermente più robusta contro gli sniffer. Ti invito ad approfondire questo.

AuthName "Bussa alla porta prima di entrare."

È un messaggio che apparirà all'utente nel browser con il form di login e può essere quello che vogliamo.

AuthUserFile /var/www/.pass/.htpasswd

Percorso il file .htpasswd. Per questo motivo dico che non è nemmeno necessario chiamarlo .htpasswd, semplicemente mettendo il percorso funzionerebbe allo stesso modo.

Require valid-user

Quella linea è progettata per più utenti con password personalizzate. Nel caso si tratti di un singolo utente, può essere riassunto nella seguente variante.

Richiedi utente el_que_sea

Nel mio esempio potrebbe essere: Richiedi utente Luke

E infine racchiudiamo tutto con

Riavvia apache:

# service apache2 restart

Proviamo.

Se non ci autenticiamo correttamente, riceveremo un errore 401.

Sul lato opposto, se inseriamo il nome utente e la password corretti, ci lascerebbe passare senza grossi inconvenienti.

Suggerimenti aggiuntivi.

  • Per aggiungere più utenti a un file htpasswd già creato puoi usare questo comando

htpasswd -mb /home/krel/.htpasswd Password utente

Se hai impostato "Richiedi utente" e non "Richiedi utente valido" devi aggiungere il nuovo utente seguito dal precedente e separato da uno spazio. Esempio:

Richiede l'utente Luke Anakin

  • Usa gruppi di utenti

Se invece dei singoli utenti preferiamo o abbiamo bisogno di lavorare con i gruppi sul seguente sito web, lo spiegano in modo molto dettagliato ed è un ottimo articolo.
http://www.juanfelipe.net/node/23

  • Possiamo anche impostare un altro tipo di crittografia, ad esempio: SHA

htpasswd -sb /home/krel/.htpasswd Password utente

Ecco un'immagine di come la registrazione di una password SHA si rifletterebbe nel .htpasswd. In entrambi era "skywalker".

Per saperne di più.

htpasswd - -help

Se vuoi approfondire questo argomento, RTFM è sempre buono!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

Ho anche trovato questo script PHP curioso dalla pagina dell'Università di Granada per creare un generatore htaccess e htpasswd. Non sono riuscito a metterlo in pratica ma vi invito a "curiosare con intelligenza".

Il modello HTML che ho ricevuto da questa pagina nel caso qualcuno fosse interessato.
http://www.templatemo.com/

Spero ti sia piaciuta questa presentazione htpasswd.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   krel suddetto

    Ora rileggendo il post mi sono accorto di aver fatto un piccolo casino. Quando spiego le righe nella configurazione del sito, in AuthUserFile metto /var/www/.pass/.htpasswd quando dovrebbe essere:
    /home/krel/.htpasswd.

    Nell'immagine va bene ma lì mi è sfuggito, è che avevo già fatto l'articolo con quel percorso, ma all'ultimo minuto l'ho cambiato e sembra che mi sia sfuggito di correggerlo.

    Mi scuso in anticipo.

  2.   Fernando suddetto

    Qualche alternativa per nautilus ??

    1.    krel suddetto

      Quello che chiedi penso vada dall'altra parte ma ti rispondo comunque.
      Penso che con Cryptkeeper varrebbe la pena proteggere directory e cose del genere.

      Se devo essere sincero, se qualcosa che odio di gnomo è nautilus. Dolphin (KDE) è molto più potente proprio per queste cose: proteggere, crittografare con gpg, ecc ...

  3.   DMZ suddetto

    Krel, grazie per i tutorial completi che porti qui e soprattutto per essere argomenti non così comuni ...

    Saluti !!! ...

  4.   Juancarlos suddetto

    Ciao è andato tutto bene ma .. quando chiudo la scheda di chrome e ne apro un'altra, scrivo l'indirizzo e non mi chiede la password ...

  5.   compagno suddetto

    chi ha detto che non era appariscente.
    Era proprio quello che stavo cercando, e meglio spiegato impossibile
    Grazie mille.
    un saluto

  6.   basco7 suddetto

    Ciao, ti ringrazio molto per le informazioni, in particolare per la parte relativa all'aggiunta di più utenti nel file .htpasswd.

    Dio ti benedica!

  7.   Mohtadi suddetto

    Complimenti, è un articolo molto buono, chiaro e digeribile. Grazie mille

  8.   eduardo suddetto

    Mi dà un errore 500 quando inserisco nome utente e password

    AuthType di base
    AuthName "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Richiedi utente Akira

  9.   eduardo suddetto

    Che bello che mi capiti per commentare senza guardare perodna gli altri commenti.
    Funziona alla grande, ottimo post

  10.   Sonno anziano suddetto

    Ciao, buon tutorial, ma esiste un'alternativa a "htpasswd"? Chiedo perché sto usando linux mint 17.3 e non ho il comando ... devo installarlo?

  11.   Sonno anziano suddetto

    Ok, l'ho capito ... ho dovuto installarlo con sudo apt-get install apache2-utils

  12.   Fernando Montilla suddetto

    Ciao, ottimo tutorial, l'ho fatto esattamente come qui indicato, l'unica cosa è che invece di eseguire quanto indicato al punto 2:

    nano / etc / apache2 / sites-available / default

    Ha funzionato per me con

    nano /etc/apache2/sites-enabled/000-default.conf

  13.   Jorge Rodrigo Torrez Aramayo suddetto

    Saluti, non funziona per me 🙁 la mia cartella non appare sul mio server, cioè ho protetto la mia cartella / var / 222 / html / content e quando entro dal browser la cartella dei contenuti non appare. Aiuto