Πώς να προστατεύσουμε τους ιστότοπούς μας χρησιμοποιώντας παραδείγματα .htpasswd +

Για πολλούς λόγους μπορεί να είναι πολύ χρήσιμο να έχουμε ελεγχόμενη πρόσβαση σε ορισμένους καταλόγους σε έναν διακομιστή ιστού ή απλά στα περιεχόμενα της σελίδας ή του ιστολογίου μας μέσω μιας υπηρεσίας ελέγχου ταυτότητας με βάση το όνομα χρήστη και τον κωδικό πρόσβασης. Μιλώ για κάτι σαν το τυπικό παράθυρο που εμφανίζεται όταν θέλουμε να εισέλθουμε σε έναν ιστότοπο με περιορισμένες υπηρεσίες.

Υπάρχουν διάφοροι τρόποι δημιουργίας παραθύρων με φόρμα ελέγχου ταυτότητας, αλλά παρέχεται μια ενδιαφέρουσα λύση σε επίπεδο διακομιστή htpasswd. Είναι ένα βοηθητικό πρόγραμμα του οποίου η λειτουργία είναι η αποθήκευση κωδικών πρόσβασης σε κρυπτογραφημένη μορφή που θα χρησιμοποιηθεί από τον Apache σε υπηρεσίες ελέγχου ταυτότητας. Η χρήση του θα μας επέτρεπε να εμφανίζουμε ορισμένους καταλόγους ή αρχεία μέσω http μόνο σε αναγνωρισμένους χρήστες και χωρίς απαραίτητα να είναι ελεύθερα διαθέσιμο σε όλους.

Κατανοώ ότι δεν είναι ένα πολύ φανταστικό θέμα, αλλά μπορεί να είναι χρήσιμο σε ορισμένους. Για να μην τους σκοτώσω με πλήξη, θα χρησιμοποιήσω εικόνες για να την κάνω πιο διδακτική.

Προηγούμενες εκτιμήσεις: Θα χρησιμοποιήσω Ubuntu Server 12.04.1 y Apache 2.2.22 σε ελεγχόμενο περιβάλλον.

Ξεκινάμε.

Όπως ίσως ήδη γνωρίζουν ορισμένοι, από προεπιλογή οι διαθέσιμοι ιστότοποι Apache αποθηκεύονται στον κατάλογο / var / www / και για αυτό το παράδειγμα θα δημιουργήσω έναν κατάλογο με πρότυπο HTML και θα προσπαθήσω να το προστατέψω με το .htpasswd.

Ο κατάλογος για προστασία είναι / var / www / παράδειγμα / όπου έχω τοποθετήσει την επόμενη σελίδα.

Στον διακομιστή

Στο πρόγραμμα περιήγησης

1. Θα δημιουργήσουμε το .htpasswd.

Ο τόπος όπου θα βρίσκεται έχει σχετική σημασία και η τοποθέτησή του έξω από έναν δημόσιο κατάλογο μπορεί να είναι κάτι περισσότερο από το συνιστώμενο. Στην περίπτωσή μου θα το τοποθετήσω στον προσωπικό μου φάκελο (που δεν είναι δημόσιος κατάλογος Apache) και με το όνομα .htpasswd (A priori δεν είναι απαραίτητο να το ονομάσουμε έτσι, αλλά αυτό που είναι κρυμμένο είναι πάντα καλό).

Για χρήστες νέους στο Linux. Για να αποκρύψετε έναν κατάλογο ή ένα αρχείο, είναι απαραίτητο να ξεκινήσετε το όνομά του με τελεία (.).

Με την ακόλουθη εντολή δημιουργώ το αρχείο .htpasswd για έναν χρήστη ιστού που έχω ονομάσει: "Luke".

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

Θα μας ζητήσει να δώσουμε τον κωδικό πρόσβασης δύο φορές, στην περίπτωσή μου έβαλα το "skywalker" (χωρίς εισαγωγικά). Σε ένα ανεξέλεγκτο περιβάλλον πρέπει να δημιουργήσουμε ισχυρότερους κωδικούς πρόσβασης. Η προεπιλεγμένη κρυπτογράφηση στο Linux είναι MD5, αλλά στο Unix είναι μια τυπική εφαρμογή της κρυπτογράφησης () και για κωδικούς πρόσβασης με λιγότερους από 8 χαρακτήρες μπορεί να είναι ευάλωτο. Τώρα έχω την αμφιβολία αν στο BSD είναι το ίδιο.

Η εντολή έχει αυτή τη δομή:

  • -c → για να δημιουργήσετε το αρχείο
  • /home/krel/.htpasswd → απόλυτη διαδρομή του αρχείου.
  • Luke → το όνομα χρήστη (μπορεί να είναι ό, τι θέλετε)

Ομοίως, δεν αναγκάζω κανέναν να χρησιμοποιήσει το τερματικό όταν υπάρχουν υπηρεσίες στο Διαδίκτυο για αυτό:
http://www.web2generators.com/apache/htpasswd_generator

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

Αντιγράφουμε το αποτέλεσμα σε ένα αρχείο κειμένου και με το όνομα .htpasswd εάν το επιθυμείτε. Όσον αφορά αυτήν τη μέθοδο, μην σταματήσετε να διαβάζετε αυτό που σχολιάζω στην επόμενη παράγραφο.

Στην περίπτωσή μας θα δούμε ότι το αρχείο έχει δημιουργηθεί όπου το περιμέναμε /home/krel/.htpasswd. Στην εικόνα έχω επισημάνει ότι με αυτήν τη μέθοδο το αρχείο ανήκει στην ομάδα apache και στο χρήστη, οι οποίοι στο Ubuntu ονομάζονται www-data. Αυτό είναι σημαντικό γιατί εάν έχουμε δημιουργήσει το .htpasswd με οποιονδήποτε άλλο τρόπο, πρέπει να βεβαιωθούμε ότι έχει 644 δικαιώματα.

Λοιπόν, τώρα θα δούμε πώς είναι τα έντερα τους:

Όπως μπορείτε να δείτε, υπάρχει ο χρήστης (Luke) αλλά ο κωδικός πρόσβασης είναι κρυπτογραφημένος.

Με αυτόν τον τρόπο έχουμε ήδη δημιουργήσει και σχεδιάσει το .htpasswd για τον χρήστη Luke, στο τέλος δεν είναι τίποτα περισσότερο από ένα κοντέινερ για τον κωδικό πρόσβασης. "Όλα με μία εντολή" θα ήταν μια καλή φράση.

2. Διαμορφώστε το Apache για χρήση και επιτρέψτε αυτήν την υπηρεσία στον ιστότοπο.

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

Εάν έχετε πολλούς κεντρικούς υπολογιστές, πρέπει να λειτουργούν σε καθέναν από αυτούς, στην περίπτωσή μου έχω μόνο αυτόν που έρχεται από προεπιλογή. Μην ξεχνάτε ότι είναι πάντα καλό να δημιουργείτε αντίγραφα ασφαλείας αυτού του αρχείου.

Αυτό το αρχείο έχει την προεπιλεγμένη δομή:

ServerAdmin webmaster @ localhost

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

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

Ακριβώς μέσα στις επικεφαλίδες του Virtualhost θα καθοριστεί η χρήση του .htpasswd για πρόσβαση σε έναν συγκεκριμένο κατάλογο. Το κάνουμε καθώς εμφανίζεται η παρακάτω εικόνα και είναι κατάλληλο για το παράδειγμά μας:

Καλός. Εξηγώ τις γραμμές:

Πρέπει να βάλετε τον κατάλογο για προστασία.

AuthType Basic

Είναι ο τύπος χρήστη και ο κωδικός πρόσβασης που διαπραγματεύονται με το πρόγραμμα περιήγησης, σε αυτήν την περίπτωση είναι Βασικός, χωρίς κρυπτογράφηση.

Υπάρχει ένας άλλος τύπος διαπραγμάτευσης: Digest, αυτός κρυπτογραφεί το όνομα χρήστη και τον κωδικό πρόσβασης, ωστόσο η τελευταία λέξη είναι το πρόγραμμα περιήγησης σχετικά με το αν υποστηρίζει την εν λόγω υπηρεσία. Το Digest μπορεί να ειπωθεί ότι είναι μια ελαφρώς πιο ισχυρή εφαρμογή κατά των sniffers. Σας προσκαλώ να ερευνήσετε αυτό.

AuthName "Χτυπήστε την πόρτα πριν μπείτε."

Είναι ένα μήνυμα που θα εμφανίζεται στον χρήστη του προγράμματος περιήγησης με τη φόρμα σύνδεσης και μπορεί να είναι αυτό που θέλουμε.

AuthUserFile /var/www/.pass/.htpasswd

Διαδρομή του αρχείου .htpasswd. Για αυτόν τον λόγο είναι ότι λέω ότι δεν είναι καν απαραίτητο να το ονομάσω .htpasswd, απλώς βάζοντας το μονοπάτι θα λειτουργούσε το ίδιο.

Απαίτηση έγκυρου χρήστη

Αυτή η γραμμή έχει σχεδιαστεί για πολλούς χρήστες με εξατομικευμένους κωδικούς πρόσβασης. Σε περίπτωση που είναι ένας μόνο χρήστης, μπορεί να συνοψιστεί ως η ακόλουθη παραλλαγή.

Απαίτηση χρήστη el_que_sea

Στο παράδειγμά μου θα μπορούσε να είναι: Απαιτήστε τον χρήστη Luke

Και τέλος περικλείουμε τα πάντα

Επανεκκίνηση του apache:

# service apache2 restart

Ας δοκιμάσουμε.

Εάν δεν πραγματοποιήσουμε έλεγχο ταυτότητας σωστά, θα λάβουμε ένα σφάλμα 401.

Στην αντίθετη πλευρά, αν βάλουμε το σωστό όνομα χρήστη και κωδικό πρόσβασης, θα μας άφηνε να περάσουμε χωρίς μεγάλη ταλαιπωρία.

Πρόσθετες συμβουλές.

  • Για να προσθέσετε περισσότερους χρήστες σε ένα ήδη δημιουργημένο αρχείο htpasswd μπορείτε να χρησιμοποιήσετε αυτήν την εντολή

htpasswd -mb /home/krel/.htpasswd Κωδικός χρήστη

Εάν έχετε ορίσει "Απαίτηση χρήστη" και όχι "Απαίτηση έγκυρου χρήστη", πρέπει να προσθέσετε τον νέο χρήστη ακολουθούμενο από τον προηγούμενο και διαχωρισμένο με κενό. Παράδειγμα:

Απαιτήστε τον χρήστη Luke Anakin

  • Χρησιμοποιήστε ομάδες χρηστών

Αν αντί για μεμονωμένους χρήστες προτιμούμε ή πρέπει να συνεργαστούμε με ομάδες στον ακόλουθο ιστότοπο, το εξηγούν με μεγάλη λεπτομέρεια και είναι ένα εξαιρετικό άρθρο.
http://www.juanfelipe.net/node/23

  • Μπορούμε επίσης να ορίσουμε έναν άλλο τύπο κρυπτογράφησης, για παράδειγμα: SHA

htpasswd -sb /home/krel/.htpasswd Κωδικός χρήστη

Ακολουθεί μια εικόνα για το πώς θα αντικατοπτρίζεται η καταχώριση ενός κωδικού πρόσβασης SHA στο .htpasswd. Και στα δύο ήταν "skywalker".

Μάθετε περισσότερα.

htpasswd - -βοήθεια

Αν θέλετε να πάτε πιο βαθιά σε αυτό το θέμα, το RTFM είναι πάντα καλό!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

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

Αυτό το σενάριο PHP από τη σελίδα του Πανεπιστημίου της Γρανάδας ήταν επίσης περίεργο για μένα να δημιουργήσω μια γεννήτρια htaccess και htpasswd. Δεν μπόρεσα να το εφαρμόσω στην πράξη, αλλά σας προσκαλώ να «κρυφτείτε με νοημοσύνη».

Το πρότυπο HTML που πήρα από αυτήν τη σελίδα σε περίπτωση που κάποιος ενδιαφέρεται.
http://www.templatemo.com/

Ελπίζω να σας άρεσε αυτή η παρουσίαση htpasswd.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Κρέλ dijo

    Τώρα διαβάζοντας ξανά την ανάρτηση συνειδητοποίησα ότι έχω κάνει ένα μικρό χάος. Όταν εξηγώ τις γραμμές στη διαμόρφωση του ιστότοπου, στο AuthUserFile έβαλα το /var/www/.pass/.htpasswd όταν θα έπρεπε να είναι:
    /home/krel/.htpasswd.

    Στην εικόνα είναι εντάξει, αλλά εκεί με διέφυγε, είναι ότι είχα κάνει προηγουμένως το άρθρο με αυτήν τη διαδρομή, αλλά την τελευταία στιγμή το άλλαξα και φαίνεται ότι έλειψα να το διορθώσω.

    Ζητώ συγγνώμη εκ των προτέρων.

  2.   Fernando dijo

    Οποιαδήποτε εναλλακτική λύση για το nautilus;

    1.    Κρέλ dijo

      Αυτό που ζητάτε νομίζω ότι πηγαίνει το αντίθετο αλλά σας απαντώ ούτως ή άλλως.
      Πιστεύω ότι με το Cryptkeeper θα ήταν χρήσιμο να προστατέψουμε καταλόγους και τέτοια πράγματα.

      Αν είμαι ειλικρινής αν κάτι που μισώ για το gnome είναι Ναυτίλος. Το Dolphin (KDE) είναι πολύ πιο ισχυρό ακριβώς για αυτά τα πράγματα: προστασία, κρυπτογράφηση με gpg, κλπ ...

  3.   DMoZ dijo

    Krel, ευχαριστώ για τα ολοκληρωμένα σεμινάρια που φέρετε εδώ και ειδικά για το ότι δεν είστε τόσο κοινά θέματα ...

    Στην υγειά σας !!! ...

  4.   Χουάν Κάρλος dijo

    Γεια σας, όλα πήγαν καλά, αλλά όταν κλείσω την καρτέλα chrome και ανοίξω άλλη, γράφω τη διεύθυνση και δεν ζητά τον κωδικό πρόσβασης ...

  5.   φίλε dijo

    που είπε ότι δεν ήταν φανταχτερό.
    Ήταν ακριβώς αυτό που έψαχνα, και εξήγησε καλύτερα αδύνατο
    Σας ευχαριστώ πολύ.
    ένα χαιρετισμό

  6.   basco7 dijo

    Γεια σας, σας ευχαριστώ πολύ για τις πληροφορίες, ειδικά για το μέρος της προσθήκης πολλών χρηστών στο .htpasswd.

    Ο Θεός να σε ευλογεί!

  7.   Μοχτάδι dijo

    Συγχαρητήρια, είναι ένα πολύ καλό άρθρο, καθαρό και εύπεπτο. Σε ευχαριστώ πάρα πολύ

  8.   eduardo dijo

    Μου δίνει ένα σφάλμα 500 όταν εισάγω όνομα χρήστη και κωδικό πρόσβασης

    AuthType Basic
    AuthName "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Απαιτήστε τον χρήστη Akira

  9.   eduardo dijo

    Πόσο υπέροχο συμβαίνει για μένα να σχολιάσω χωρίς να κοιτάζω τα άλλα σχόλια perodna.
    Λειτουργεί εξαιρετική θέση

  10.   Senior Sleeping dijo

    Γεια, καλό εκπαιδευτικό πρόγραμμα, αλλά υπάρχει μια εναλλακτική λύση για το "htpasswd"; Ρωτώ γιατί χρησιμοποιώ το linux mint 17.3 και δεν έχω την εντολή… πρέπει να το εγκαταστήσω;

  11.   Senior Sleeping dijo

    Εντάξει, το κατάλαβα ... Έπρεπε να το εγκαταστήσω με sudo apt-get install apache2-utils

  12.   Φερνάντο Μοντίλα dijo

    Γεια, εξαιρετικό σεμινάριο, το έκανα ακριβώς όπως υποδεικνύεται εδώ, το μόνο πράγμα είναι ότι αντί να εκτελέσω αυτό που αναφέρεται στο σημείο 2

    nano / etc / apache2 / sites-available / default

    Δούλεψε για μένα

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

  13.   Χόρχε Ροντρίγκο Τορέζ Αραμάγιο dijo

    Χαιρετισμούς, δεν λειτουργεί για μένα folder ο φάκελός μου δεν εμφανίζεται στον διακομιστή μου, δηλαδή, προστατέψα το φάκελο / var / 222 / html / content και όταν μπαίνω από το πρόγραμμα περιήγησης ο φάκελος περιεχομένου δεν εμφανίζεται. Βοήθεια