Για πολλούς λόγους μπορεί να είναι πολύ χρήσιμο να έχουμε ελεγχόμενη πρόσβαση σε ορισμένους καταλόγους σε έναν διακομιστή ιστού ή απλά στα περιεχόμενα της σελίδας ή του ιστολογίου μας μέσω μιας υπηρεσίας ελέγχου ταυτότητας με βάση το όνομα χρήστη και τον κωδικό πρόσβασης. Μιλώ για κάτι σαν το τυπικό παράθυρο που εμφανίζεται όταν θέλουμε να εισέλθουμε σε έναν ιστότοπο με περιορισμένες υπηρεσίες.
Υπάρχουν διάφοροι τρόποι δημιουργίας παραθύρων με φόρμα ελέγχου ταυτότητας, αλλά παρέχεται μια ενδιαφέρουσα λύση σε επίπεδο διακομιστή 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 δεν είναι απαραίτητο να το ονομάσουμε έτσι, αλλά αυτό που είναι κρυμμένο είναι πάντα καλό).
Με την ακόλουθη εντολή δημιουργώ το αρχείο .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.
Τώρα διαβάζοντας ξανά την ανάρτηση συνειδητοποίησα ότι έχω κάνει ένα μικρό χάος. Όταν εξηγώ τις γραμμές στη διαμόρφωση του ιστότοπου, στο AuthUserFile έβαλα το /var/www/.pass/.htpasswd όταν θα έπρεπε να είναι:
/home/krel/.htpasswd.
Στην εικόνα είναι εντάξει, αλλά εκεί με διέφυγε, είναι ότι είχα κάνει προηγουμένως το άρθρο με αυτήν τη διαδρομή, αλλά την τελευταία στιγμή το άλλαξα και φαίνεται ότι έλειψα να το διορθώσω.
Ζητώ συγγνώμη εκ των προτέρων.
Οποιαδήποτε εναλλακτική λύση για το nautilus;
Αυτό που ζητάτε νομίζω ότι πηγαίνει το αντίθετο αλλά σας απαντώ ούτως ή άλλως.
Πιστεύω ότι με το Cryptkeeper θα ήταν χρήσιμο να προστατέψουμε καταλόγους και τέτοια πράγματα.
Αν είμαι ειλικρινής αν κάτι που μισώ για το gnome είναι Ναυτίλος. Το Dolphin (KDE) είναι πολύ πιο ισχυρό ακριβώς για αυτά τα πράγματα: προστασία, κρυπτογράφηση με gpg, κλπ ...
Krel, ευχαριστώ για τα ολοκληρωμένα σεμινάρια που φέρετε εδώ και ειδικά για το ότι δεν είστε τόσο κοινά θέματα ...
Στην υγειά σας !!! ...
Γεια σας, όλα πήγαν καλά, αλλά όταν κλείσω την καρτέλα chrome και ανοίξω άλλη, γράφω τη διεύθυνση και δεν ζητά τον κωδικό πρόσβασης ...
που είπε ότι δεν ήταν φανταχτερό.
Ήταν ακριβώς αυτό που έψαχνα, και εξήγησε καλύτερα αδύνατο
Σας ευχαριστώ πολύ.
ένα χαιρετισμό
Γεια σας, σας ευχαριστώ πολύ για τις πληροφορίες, ειδικά για το μέρος της προσθήκης πολλών χρηστών στο .htpasswd.
Ο Θεός να σε ευλογεί!
Συγχαρητήρια, είναι ένα πολύ καλό άρθρο, καθαρό και εύπεπτο. Σε ευχαριστώ πάρα πολύ
Μου δίνει ένα σφάλμα 500 όταν εισάγω όνομα χρήστη και κωδικό πρόσβασης
AuthType Basic
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Απαιτήστε τον χρήστη Akira
Πόσο υπέροχο συμβαίνει για μένα να σχολιάσω χωρίς να κοιτάζω τα άλλα σχόλια perodna.
Λειτουργεί εξαιρετική θέση
Γεια, καλό εκπαιδευτικό πρόγραμμα, αλλά υπάρχει μια εναλλακτική λύση για το "htpasswd"; Ρωτώ γιατί χρησιμοποιώ το linux mint 17.3 και δεν έχω την εντολή… πρέπει να το εγκαταστήσω;
Εντάξει, το κατάλαβα ... Έπρεπε να το εγκαταστήσω με sudo apt-get install apache2-utils
Γεια, εξαιρετικό σεμινάριο, το έκανα ακριβώς όπως υποδεικνύεται εδώ, το μόνο πράγμα είναι ότι αντί να εκτελέσω αυτό που αναφέρεται στο σημείο 2
nano / etc / apache2 / sites-available / default
Δούλεψε για μένα
nano /etc/apache2/sites-enabled/000-default.conf
Χαιρετισμούς, δεν λειτουργεί για μένα folder ο φάκελός μου δεν εμφανίζεται στον διακομιστή μου, δηλαδή, προστατέψα το φάκελο / var / 222 / html / content και όταν μπαίνω από το πρόγραμμα περιήγησης ο φάκελος περιεχομένου δεν εμφανίζεται. Βοήθεια