en
Γλώσσα
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
Μετάφραση AI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Πώς να ρυθμίσετε τον έλεγχο ταυτότητας Kerberos

Kerberos
SSO

Εισαγωγή

Από τον Ιανουάριο του 2019, το Easy Redmine (έκδοση 2018.1.3, πλατφόρμα 05.02) υποστηρίζει έλεγχο ταυτότητας χρήστη μέσω Kerberos. Το Easy Software παρέχει έλεγχο ταυτότητας Kerberos ως premium υπηρεσία, η οποία μπορεί να χρεωθεί με εφάπαξ τέλος.

Η λειτουργικότητα είναι μέρος της γενικής ρύθμισης ελέγχου ταυτότητας SSO (έκδοση 10: Διαχείριση >> Ρυθμίσεις >> Έλεγχος ταυτότητας, έκδοση 11: Διαχείριση >> Εύκολο SSO).

Με τη διαμόρφωση που περιγράφεται λεπτομερώς παρακάτω, θα εισαγάγατε: manager/admin@EASYPROJECT.COM όπου το όνομα EASYPROJECT.COM είναι το βασίλειο.

Αυτή η ρύθμιση είναι το εύκολο μέρος. Το μεγαλύτερο μέρος, ωστόσο, γίνεται από την πλευρά του διακομιστή. Το Kerberos for Easy Redmine απαιτεί διακομιστή Ιστού Apache. Η διαμόρφωση πραγματοποιείται από τους ειδικούς του διακομιστή μας σύμφωνα με τις ανάγκες σας.

Παρακάτω μπορείτε να βρείτε μια οδηγία για τη διαμόρφωση. Χρησιμεύει μόνο ως υλικό αναφοράς για τη ρύθμιση που θα γινόταν. Λάβετε υπόψη ότι αυτό δεν είναι εγγυημένο εγχειρίδιο. Προσπαθώντας να διαμορφώσετε το Kerberos ή οποιονδήποτε άλλο έλεγχο ταυτότητας SSO στον διακομιστή σας, αναλαμβάνετε πλήρως την ευθύνη για την ασφάλεια και τη συνολική λειτουργία της εφαρμογής.

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

Εγκατάσταση Kerberos σε διακομιστή Linux

Περιεχόμενα

Πώς να εγκαταστήσετε και να προετοιμάσετε τον διακομιστή kerberos
Πώς να χρησιμοποιήσετε τον έλεγχο ταυτότητας kerberos στον διακομιστή web apache2
Πώς να χρησιμοποιήσετε τον έλεγχο ταυτότητας kerberos σε διακομιστή web nginx (μόνο σε μηχανήματα που βασίζονται στο CentOS!)
Πηγές και χρήσιμοι σύνδεσμοι

Εγκατάσταση Kerberos

Για αυτήν τη συζήτηση, θα δημιουργήσουμε έναν τομέα MIT Kerberos με τις ακόλουθες δυνατότητες (επεξεργαστείτε τις ανάλογα με τις ανάγκες σας):

Πεδίο: EASYPROJECT.COM
Κύριο KDC: kdc01.easyproject.com (192.168.0.1)
Δευτερεύον KDC: kdc02.easyproject.com (192.168.0.2)
Κύριος χρήστης: διαχειριστής
Κύριος διαχειριστής: εύκολο/εύκολο666

Συνιστάται ανεπιφύλακτα οι χρήστες με έλεγχο ταυτότητας δικτύου να έχουν το uid τους σε διαφορετικό εύρος (ας πούμε, ξεκινώντας από το 5000) από αυτό των τοπικών χρηστών σας.

Πριν εγκαταστήσετε τον διακομιστή Kerberos, απαιτείται ένας σωστά διαμορφωμένος διακομιστής DNS για τον τομέα σας. Δεδομένου ότι το Kerberos Realm κατά σύμβαση ταιριάζει με το όνομα τομέα, αυτή η ενότητα χρησιμοποιεί τον τομέα EASYPROJECT.COM που έχει διαμορφωθεί στο κύριο Master της τεκμηρίωσης DNS.

Το επόμενο μέρος είναι πολύ σημαντικό!

!!! Επίσης, το Kerberos είναι ένα χρονικά ευαίσθητο πρωτόκολλο. Επομένως, εάν ο χρόνος τοπικού συστήματος μεταξύ ενός υπολογιστή -πελάτη και του διακομιστή διαφέρει περισσότερο από πέντε λεπτά (από προεπιλογή), ο σταθμός εργασίας δεν θα μπορεί να πραγματοποιήσει έλεγχο ταυτότητας. Για να διορθώσετε το πρόβλημα, όλοι οι κεντρικοί υπολογιστές θα πρέπει να συγχρονίσετε το χρόνο τους χρησιμοποιώντας τον ίδιο διακομιστή Πρωτοκόλλου Timeρας Δικτύου (NTP). Για λεπτομέρειες σχετικά με τη ρύθμιση του NTP, ανατρέξτε στο Time Synchronization. !!!

 

Εγκατάσταση διακομιστή Kerberos

1) Πρώτα πρέπει να εγκαταστήσουμε τα πακέτα krb5-kdc και krb5-admin-server.

sudo apt εγκατάσταση krb5-kdc krb5-admin-server

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

Από προεπιλογή, το πεδίο δημιουργείται από το όνομα τομέα του KDC.

2) Τώρα πρέπει να δημιουργήσουμε το νέο πεδίο με το βοηθητικό πρόγραμμα kdb5_newrealm:

sudo krb5_newrealm

Αναβαθμίστε τη διαχείριση του έργου σας

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

Διαμόρφωση του διακομιστή Kerberos

1) Οι ερωτήσεις που τίθενται κατά την εγκατάσταση χρησιμοποιούνται για τη διαμόρφωση του αρχείου /etc/krb5.conf. Εάν πρέπει να προσαρμόσετε τις ρυθμίσεις του Κέντρου διανομής κλειδιών (KDC), απλώς επεξεργαστείτε το αρχείο και επανεκκινήστε τον δαίμονα krb5-kdc. Εάν πρέπει να διαμορφώσετε εκ νέου το Kerberos, ίσως για να αλλάξετε το όνομα της περιοχής, μπορείτε να εκτελέσετε την επόμενη εντολή

sudo dpkg-επαναδιαμόρφωση krb5-kdc

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

sudo kadmin.local Έλεγχος ταυτότητας ως κύρια ρίζα/admin@EASYPROJECT.COM με κωδικό πρόσβασης. kadmin.local: addprinc manager/easy ΠΡΟΕΙΔΟΠΟΙΗΣΗ: δεν έχει καθοριστεί πολιτική για manager/admin@EASYPROJECT.COM; προεπιλογή για καμία πολιτική Εισαγάγετε κωδικό πρόσβασης για τον κύριο "manager/admin@EASYPROJECT.COM": Εισαγάγετε ξανά τον κωδικό πρόσβασης για τον κύριο "manager/admin@EASYPROJECT.COM": Δημιουργήθηκε ο κύριος "manager/admin@EASYPROJECT.COM". kadmin.local: κλείστε

Στο παραπάνω παράδειγμα, ο διαχειριστής είναι ο κύριος, /ο διαχειριστής είναι μια περίπτωση, και το @EASYPROJECT.COM σημαίνει τη σφαίρα. Ο Διευθυντής "κάθε μέρα", γνωστός και ως κύριος χρήστης, θα είναι manager@EASYPROJECT.COM και θα πρέπει να έχει μόνο κανονικά δικαιώματα χρήστη.

Αντικαταστήστε το EASYPROJECT.COM και τον διαχειριστή με το όνομα χρήστη σας Realm και διαχειριστή.

3) Στη συνέχεια, ο νέος χρήστης διαχειριστή πρέπει να έχει τα κατάλληλα δικαιώματα λίστας ελέγχου πρόσβασης (ACL). Τα δικαιώματα έχουν ρυθμιστεί στο αρχείο /etc/krb5kdc/kadm5.acl:

manager/admin@EASYPROJECT.COM *

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

4) Τώρα επανεκκινήστε τον διακομιστή krb5-admin για να επηρεάσει το νέο ACL:

sudo systemctl επανεκκίνηση krb5-admin-server.service

5) Ο νέος κύριος χρήστης μπορεί να δοκιμαστεί χρησιμοποιώντας το βοηθητικό πρόγραμμα kinit:

kinit manager/admin manager/admin@EASYPROJECT.COM Κωδικός πρόσβασης:

Αφού εισαγάγετε τον κωδικό πρόσβασης, χρησιμοποιήστε το βοηθητικό πρόγραμμα klist για να δείτε πληροφορίες σχετικά με το Εισιτήριο Χορήγησης Εισιτηρίων (TGT):

klist Διαπιστευτήρια προσωρινή μνήμη: ΑΡΧΕΙΟ:/tmp/krb5cc_1000 Αρχή: manager/admin@EASYPROJECT.COM Εκδόθηκε Λήγει Κύριος κύριος 13 Ιουλ 17:53:34 14 Ιουλίου 03:53:34 krbtgt/EASYPROJECT.COM@EASYPROJECT.COM

Όπου το όνομα αρχείου της προσωρινής μνήμης krb5cc_1000 αποτελείται από το πρόθεμα krb5cc_ και το αναγνωριστικό χρήστη (uid), το οποίο σε αυτήν την περίπτωση είναι 1000. mayσως χρειαστεί να προσθέσετε μια καταχώριση στο /etc /hosts για το KDC, ώστε ο πελάτης να μπορεί να βρει το KDC. Για παράδειγμα:

192.168.0.1 kdc01.example.com kdc01

Αντικατάσταση του 192.168.0.1 με τη διεύθυνση IP του KDC σας. Αυτό συμβαίνει συνήθως όταν έχετε ένα πεδίο Kerberos που περιλαμβάνει διαφορετικά δίκτυα χωρισμένα με δρομολογητές.

Ο καλύτερος τρόπος για να επιτρέπεται στους πελάτες να καθορίζουν αυτόματα το KDC για το Realm είναι η χρήση εγγραφών DNS SRV. Προσθέστε τα ακόλουθα στο /etc/named/db.example.com:

_kerberos._udp.EASYPROJECT.COM. ΣΤΟ SRV 1 0 88 kdc01.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. ΣΤΟ SRV 1 0 88 kdc01.easyproject.com. _kerberos._udp.EASYPROJECT.COM. ΣΤΟ SRV 10 0 88 kdc02.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. ΣΤΟ SRV 10 0 88 kdc02.easyproject.com. _kerberos-adm._tcp.EASYPROJECT.COM. ΣΤΟ SRV 1 0 749 kdc01.easyproject.com. _kpasswd._udp.EASYPROJECT.COM. ΣΤΟ SRV 1 0 464 kdc01.easyproject.com.

Αντικαταστήστε τα EASYPROJECT.COM, kdc01 και kdc02 με το όνομα τομέα, το κύριο KDC και το δευτερεύον KDC.

Ανατρέξτε στην Υπηρεσία ονομάτων τομέα (DNS) για λεπτομερείς οδηγίες σχετικά με τη ρύθμιση του DNS.

Το νέο σας Kerberos Realm είναι πλέον έτοιμο για έλεγχο ταυτότητας πελατών.

Δευτερεύουσα διαμόρφωση KDC (προαιρετικό)

Είναι καλή πρακτική να υπάρχει ένα δευτερεύον KDC σε περίπτωση που το πρωτεύον δεν είναι διαθέσιμο. Επίσης, εάν έχετε πελάτες Kerberos που βρίσκονται σε διαφορετικά δίκτυα (πιθανόν να χωρίζονται από δρομολογητές χρησιμοποιώντας NAT), είναι συνετό να τοποθετήσετε ένα δευτερεύον KDC σε καθένα από αυτά τα δίκτυα.

1) εγκαταστήστε τα πακέτα και, όταν σας ζητηθούν τα ονόματα διακομιστή Kerberos και Admin, εισαγάγετε το όνομα του κύριου KDC:

sudo apt εγκατάσταση krb5-kdc krb5-admin-server

2) Μόλις εγκαταστήσετε τα πακέτα, δημιουργήστε τον κύριο κεντρικό υπολογιστή του δευτερεύοντος KDC. Από μια προτροπή τερματικού, πληκτρολογήστε:

kadmin -q "addprinc -randkey host/kdc02.easyproject.com"

Μετά την έκδοση οποιωνδήποτε εντολών kadmin θα σας ζητηθεί ο κύριος κωδικός πρόσβασης του ονόματος χρήστη/admin@EASYPROJECT.COM.

3) Εξαγάγετε το αρχείο πληκτρολογίου:

kadmin -q "ktadd -norandkey -k keytab.kdc02 host/kdc02.easyproject.com"

4) Θα πρέπει τώρα να υπάρχει ένα keytab.kdc02 στον τρέχοντα κατάλογο, μετακινήστε το αρχείο στο /etc/krb5.keytab:

sudo mv keytab.kdc02 /etc/krb5.keytab

Εάν η διαδρομή προς το αρχείο keytab.kdc02 είναι διαφορετική, προσαρμόστε ανάλογα.

5) Επίσης, μπορείτε να αναφέρετε τους κύριους σε ένα αρχείο Keytab, το οποίο μπορεί να είναι χρήσιμο κατά την αντιμετώπιση προβλημάτων, χρησιμοποιώντας το βοηθητικό πρόγραμμα klist:

sudo klist -k /etc/krb5.keytab

Η επιλογή -k υποδεικνύει ότι το αρχείο είναι αρχείο πληκτρολογίου.

6) Στη συνέχεια, πρέπει να υπάρχει ένα αρχείο kpropd.acl σε κάθε KDC που παραθέτει όλα τα KDC για το Realm. Για παράδειγμα, τόσο στο κύριο όσο και στο δευτερεύον KDC, δημιουργήστε /etc/krb5kdc/kpropd.acl:

host/kdc01.easyproject.com@EASYPROJECT.COM host/kdc02.easyproject.com@EASYPROJECT.COM

7) Δημιουργήστε μια κενή βάση δεδομένων στο δευτερεύον KDC:

sudo kdb5_util -s δημιουργία

8) Τώρα ξεκινήστε τον δαίμονα kpropd, ο οποίος ακούει συνδέσεις από το βοηθητικό πρόγραμμα kprop. Το kprop χρησιμοποιείται για τη μεταφορά αρχείων χωματερή:

sudo kpropd -S

9) Στο κύριο KDC, δημιουργήστε ένα αρχείο ένδειξης της κύριας βάσης δεδομένων:

sudo kdb5_util dump/var/lib/krb5kdc/dump

10) Εξαγάγετε το αρχείο πληκτρολογίου του κύριου KDC και αντιγράψτε το στο /etc/krb5.keytab:

kadmin -q "ktadd -k keytab.kdc01 host/kdc01.easyproject.com" sudo mv keytab.kdc01 /etc/krb5.keytab

Βεβαιωθείτε ότι υπάρχει ένας κεντρικός υπολογιστής για το kdc01.easyproject.com πριν από την εξαγωγή του Keytab.

11) Χρησιμοποιώντας το βοηθητικό πρόγραμμα kprop σπρώξτε τη βάση δεδομένων στο δευτερεύον KDC:

sudo kprop -r EASYPROJECT.COM -f/var/lib/krb5kdc/dump kdc02.easyproject.com

Θα πρέπει να υπάρχει ένα επιτυχημένο μήνυμα εάν η διάδοση λειτούργησε. Εάν υπάρχει μήνυμα σφάλματος, ελέγξτε/var/log/syslog στο δευτερεύον KDC για περισσότερες πληροφορίες.

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

# mh dom mon dow command 0 * * * */usr/sbin/kdb5_util dump/var/lib/krb5kdc/dump &&/usr/sbin/kprop -r EASYPROJECT.COM -f/var/lib/krb5kdc/dump kdc02. easyproject.com

13) Επιστρέψτε στο Secondary KDC, δημιουργήστε ένα αρχείο stash για να κρατήσετε το κύριο κλειδί Kerberos:

sudo kdb5_util stash

14) Τέλος, ξεκινήστε τον δαίμονα krb5-kdc στο Secondary KDC:

sudo systemctl εκκίνηση krb5-kdc.service

Το Δευτεροβάθμιο KDC θα πρέπει τώρα να μπορεί να εκδίδει εισιτήρια για το Realm. Μπορείτε να το δοκιμάσετε σταματώντας τον δαίμονα krb5-kdc στο Κύριο KDC και, στη συνέχεια, χρησιμοποιώντας το kinit για να ζητήσετε εισιτήριο. Εάν όλα πάνε καλά θα πρέπει να λάβετε ένα εισιτήριο από το Secondary KDC. Διαφορετικά, ελέγξτε/var/log/syslog και /var/log/auth.log στο δευτερεύον KDC.

Active Directory ως διακομιστής Kerberos

Όλοι οι χρήστες που πρέπει να είναι σε θέση να συνδεθούν πρέπει να είναι στο AD για να περάσουν από τον διακομιστή ιστού (π.χ. Apache) στο ER. Για να λειτουργήσει το SSO, ο χρήστης πρέπει να συνδεθεί από έναν υπολογιστή τομέα στον οποίο έχει συνδεθεί ως χρήστης AD. Ακόμη και χωρίς να λειτουργεί το SSO, ο χρήστης πρέπει να παρέχει τα διαπιστευτήρια σύνδεσης στο AD στον διακομιστή ιστού (χρησιμοποιείται μόνο ο βασικός έλεγχος ταυτότητας HTTP σε αυτήν την περίπτωση, το https συνιστάται ανεπιφύλακτα).

1) Δημιουργήστε χρήστη AD για τον διακομιστή ιστού με τον κωδικό πρόσβασης επιλογής να μην λήγει ποτέ ενεργοποιημένος. Πχ. Χρήστης easyysso με κωδικό SECRET και το domain που χρησιμοποιείται για SSO (π.χ. EASYPROJECT.COM).

2) Δημιουργήστε το αρχείο πληκτρολογίου Kerberos στον διακομιστή AD Windows:
ktpass -princ HTTP/www.easyproject.com@EASYPROJECT.COM -mapuser easysso@EASYPROJECT.COM -pass SECRET -crypto ALL -ptype KRB5_NT_PRINCIPAL -out C: \ Temp \ http.keytab

3) Ορίστε SPN (κύριο όνομα υπηρεσίας) στον λογαριασμό AD που δημιουργήθηκε παραπάνω στον διακομιστή Windows, π.χ. από:
setspn -s HTTP/www.easyproject.com easysso

Πελάτης Kerberos Linux

Τώρα θα χρειαστεί να διαμορφώσετε ένα σύστημα Linux ως πελάτη Kerberos. Αυτό θα επιτρέψει την πρόσβαση σε οποιεσδήποτε kerberized υπηρεσίες μόλις ένας χρήστης έχει συνδεθεί επιτυχώς στο σύστημα.

1) Για να γίνει έλεγχος ταυτότητας σε μια περιοχή Kerberos, χρειάζονται τα πακέτα krb5-χρήστη και libpam-krb5, μαζί με μερικά άλλα που δεν είναι απολύτως απαραίτητα, αλλά κάνουν τη ζωή πιο εύκολη. Για να εγκαταστήσετε τα πακέτα σε σύστημα που βασίζεται στο Debian, εισαγάγετε τα ακόλουθα σε μια προτροπή τερματικού:

sudo apt εγκατάσταση krb5-χρήστης libpam-krb5 libpam-ccreds auth-client-config

Για να εγκαταστήσετε τα πακέτα σε ένα σύστημα που βασίζεται σε Redhat, χρησιμοποιήστε:

yum εγκατάσταση krb5-workstation pam_krb5

Το πακέτο auth-client-config επιτρέπει απλή διαμόρφωση του PAM για έλεγχο ταυτότητας από πολλαπλές πηγές και τα libpam-ccred θα αποθηκεύσουν προσωρινά τα διαπιστευτήρια ελέγχου ταυτότητας που θα σας επιτρέψουν να συνδεθείτε σε περίπτωση που το Κέντρο διανομής κλειδιών (KDC) δεν είναι διαθέσιμο. Αυτό το πακέτο είναι επίσης χρήσιμο για φορητούς υπολογιστές που ενδέχεται να επαληθεύσουν τη χρήση του Kerberos ενώ βρίσκονται στο εταιρικό δίκτυο, αλλά θα πρέπει να έχουν πρόσβαση και εκτός δικτύου.

2) Για να διαμορφώσετε τον πελάτη σε τερματικό (σύστημα βασισμένο στο Debian) πληκτρολογήστε:

sudo dpkg-επαναδιαμόρφωση krb5-config

Στο σύστημα που βασίζεται στο Redhat, αρκεί η επεξεργασία /etc/krb5.conf (δείτε παρακάτω).

Στη συνέχεια, θα σας ζητηθεί να εισαγάγετε το όνομα του Kerberos Realm. Επίσης, εάν δεν έχετε ρυθμίσει το DNS με τις εγγραφές Kerberos SRV, το μενού θα σας ζητήσει το όνομα κεντρικού υπολογιστή του Κέντρου διανομής κλειδιών (KDC) και του διακομιστή Realm Administration.

Η αναδιαμόρφωση dpkg προσθέτει καταχωρήσεις στο αρχείο /etc/krb5.conf για το Realm σας. Θα πρέπει να έχετε καταχωρήσεις παρόμοιες με τις ακόλουθες:

[libdefaults] default_realm = EASYPROJECT.COM ... [realms] EXAMPLE.COM = {kdc = 192.168.0.1 admin_server = 192.168.0.1}

Εάν ορίσετε το uid κάθε χρήστης με έλεγχο ταυτότητας δικτύου να ξεκινά από 5000, όπως προτείνεται στην Εγκατάσταση, μπορείτε στη συνέχεια να πείτε στο pam να προσπαθήσει να κάνει έλεγχο ταυτότητας μόνο χρησιμοποιώντας χρήστες Kerberos με uid> 5000:

Το # Kerberos πρέπει να εφαρμόζεται μόνο σε χρήστες ldap/kerberos, όχι σε τοπικούς. for i in common-auth common-session common-account common-password? do sudo sed -i -r \ -e's/pam_krb5.so minimum_uid = 1000/pam_krb5.so minimum_uid = 5000/'\ /etc/pam.d/$i done

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

 

3) Μπορείτε να δοκιμάσετε τη διαμόρφωση ζητώντας εισιτήριο χρησιμοποιώντας το βοηθητικό πρόγραμμα kinit. Για παράδειγμα:

kinit manager@EASYPROJECT.COM Κωδικός πρόσβασης για manager@EASYPROJECT.COM:

Όταν χορηγηθεί ένα εισιτήριο, οι λεπτομέρειες μπορούν να προβληθούν χρησιμοποιώντας το klist:

klist Κρυφή μνήμη εισιτηρίων: ΑΡΧΕΙΟ:/tmp/krb5cc_1000 Προεπιλεγμένη κύρια εντολή: manager@EASYPORJECT.COM Ισχύς έναρξης Λήγει κύριος υπηρεσίας 07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/EASYPROJECT.COM@EASYPROJECT .COM ανανέωση έως 07/25/08 05:18:57
Kerberos 4 cache εισιτηρίων: /tmp /tkt1000 klist: Δεν έχετε αποθηκευμένα εισιτήρια

4) Στη συνέχεια, χρησιμοποιήστε το config για την παραμετροποίηση της μονάδας libpam-krb5 για να ζητήσετε εισιτήριο κατά τη σύνδεση:

sudo auth -client -config -a -p kerberos_example

Θα πρέπει τώρα να λάβετε ένα εισιτήριο μετά την επιτυχή πιστοποίηση σύνδεσης.

 

Διαμόρφωση Apache 2

1) Εγκαταστήστε τη μονάδα ελέγχου ταυτότητας mod_auth_kerb

Το Apache δεν παρέχει υποστήριξη για το SPNEGO, αλλά μπορεί να προστεθεί χρησιμοποιώντας τη μονάδα mod_auth_kerb. Αυτό περιλαμβάνεται στις περισσότερες σημαντικές διανομές GNU/Linux, αλλά επειδή είναι μονάδα τρίτου μέρους, συνήθως συσκευάζεται ξεχωριστά από το Apache. Σε συστήματα που βασίζονται σε Debian παρέχεται από το πακέτο libapache2-mod-auth-curb:

apt-get install libapache2-mod-auth-curb

και σε συστήματα που βασίζονται στο Red Hat από το πακέτο mod_auth_kerb:

yum εγκατάσταση mod_auth_kerb

2) Οι μονάδες Apache πρέπει να φορτωθούν πριν από τη χρήση τους, αλλά και τα δύο παραπάνω πακέτα μεριμνούν ώστε αυτό να συμβεί αυτόματα. Εάν για οποιονδήποτε λόγο πρέπει να το κάνετε αυτό με μη αυτόματο τρόπο, η κατάλληλη οδηγία διαμόρφωσης είναι:

LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so

(όπου το όνομα διαδρομής της μονάδας πρέπει να αντικατασταθεί με ό, τι είναι κατάλληλο για το σύστημά σας).

3) Δημιουργήστε μια κύρια υπηρεσία για τον διακομιστή ιστού

Το SPNEGO απαιτεί τη δημιουργία κύριας υπηρεσίας Kerberos για τον διακομιστή ιστού. Το όνομα της υπηρεσίας ορίζεται ως HTTP, επομένως για τον διακομιστή www.easyproject.com το απαιτούμενο κύριο όνομα της υπηρεσίας είναι HTTP/www.easyproject.com@easyproject.COM.

Εάν χρησιμοποιείτε το MIT Kerberos, τότε ο κύριος σέρβις μπορεί να δημιουργηθεί χρησιμοποιώντας την εντολή kadmin:

kadmin -p manager/admin -q "addprinc -randkey HTTP/www.easyproject.com"

4) Δημιουργήστε μια καρτέλα πληκτρολογίου για τον κύριο της υπηρεσίας

Ένα keytab είναι ένα αρχείο για την αποθήκευση των κλειδιών κρυπτογράφησης που αντιστοιχούν σε έναν ή περισσότερους κύριους Kerberos. Το mod_auth_kerb χρειάζεται ένα για να κάνει χρήση της αρχής της υπηρεσίας που δημιουργήθηκε παραπάνω. Εάν χρησιμοποιείτε το MIT Kerberos, τότε μπορείτε να δημιουργήσετε το πληκτρολόγιο (όπως ο κύριος της υπηρεσίας) χρησιμοποιώντας την εντολή kadmin. Η ιδιοκτησία του πρέπει να είναι τέτοια ώστε να είναι ευανάγνωστη από τη διαδικασία Apache.

Σε συστήματα που βασίζονται σε Debian, μια κατάλληλη τοποθεσία για την πληκτρολόγηση θα είναι /etc/apache2/http.keytab και ο κατάλληλος κάτοχος είναι τα www-data:

kadmin -p manager/admin -q "ktadd -k /etc/apache2/http.keytab HTTP/www.easyproject.com" chown www -data /etc/apache2/http.keytab

Στα συστήματα που βασίζονται στο Red Hat μια κατάλληλη τοποθεσία θα είναι η /etc/httpd/http.keytab και ο κατάλληλος κάτοχος είναι το apache:

kadmin -p manager/admin -q "ktadd -k /etc/httpd/http.keytab HTTP/www.easyproject.com" chown apache /etc/httpd/http.keytab

Η επιλογή -k καθορίζει το όνομα διαδρομής στην καρτέλα πληκτρολογίου, η οποία θα δημιουργηθεί εάν δεν υπάρχει ήδη.

Εάν χρησιμοποιείτε AD αντί του διακομιστή Linux Kerberos, χρησιμοποιήστε το αρχείο http.keytab που δημιουργήθηκε όπως περιγράφεται παραπάνω στο Ενότητα μ.Χ.

5) Εάν θέλετε να ελέγξετε ότι το κλειδί έχει προστεθεί σωστά στην καρτέλα πληκτρολογίου, μπορείτε να προσπαθήσετε να το χρησιμοποιήσετε για έλεγχο ταυτότητας ως κύρια υπηρεσία και, στη συνέχεια, δείτε το προκύπτον εισιτήριο για τη χορήγηση εισιτηρίων χρησιμοποιώντας το klist:

kinit -k -t /etc/apache2/http.keytab HTTP/www.easyproject.com klist

6) Καθορίστε τη μέθοδο ελέγχου ταυτότητας που θα χρησιμοποιηθεί

Πρέπει να ενημερώσετε τον Apache ποια τμήματα των ιστοσελίδων που θα χρησιμοποιούν τον έλεγχο ταυτότητας παρέχονται από το mod_auth_kerb. Αυτό γίνεται χρησιμοποιώντας την οδηγία AuthType με τιμή Kerberos. Στη συνέχεια χρειάζονται ορισμένες περαιτέρω οδηγίες για να διαμορφώσετε τον τρόπο με τον οποίο πρέπει να συμπεριφέρεται το mod_auth_kerb.

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

AuthType Kerberos AuthName "Acme Corporation" KrbMethod Διαπραγματευτείτε στο KrbMethodK5Passwd εκτός Krb5Keytab /etc/apache2/http.keytab

Σε περίπτωση διακομιστή AD Kerberos, μπορεί επίσης να χρειαστείτε:

... KrbAuthRealms EASYPROJECT.COM KrbServiceName HTTP/www.easyproject.com

Η οδηγία AuthName καθορίζει το πεδίο εξουσιοδότησης HTTP. Σκοπός του είναι να υποδείξει στον χρήστη ποιον από τους διάφορους κωδικούς πρόσβασης μπορεί να γνωρίζει για να αποκτήσει πρόσβαση σε μια συγκεκριμένη ιστοσελίδα. Με τον πραγματικό έλεγχο ταυτότητας Kerberos δεν θα πρέπει να υπάρχει ερώτηση για κωδικό πρόσβασης και το mod_auth_kerb φαίνεται να λειτουργεί τέλεια χωρίς να έχει οριστεί όνομα χρήστη. Ωστόσο, η τεκμηρίωση Apache δηλώνει ότι είναι απαραίτητο, οπότε θα ήταν συνετό να παρέχεται ούτως ή άλλως. Μια κατάλληλη τιμή μπορεί να είναι το όνομα τομέα, το όνομα της περιοχής Kerberos ή το όνομα του οργανισμού στον οποίο ανήκει ο ιστότοπος.

Εκτός από το πρωτόκολλο SPNEGO, το mod_auth_kerb έχει τη δυνατότητα να ζητήσει από τον χρήστη κωδικό πρόσβασης χρησιμοποιώντας βασικό έλεγχο ταυτότητας και στη συνέχεια να επικυρώσει αυτόν τον κωδικό πρόσβασης επιχειρώντας έλεγχο ταυτότητας στο KDC. Αυτό μπορεί να είναι χρήσιμο εάν υπάρχει ανάγκη για πρόσβαση στον ιστότοπο στους εξουσιοδοτημένους χρήστες του από μηχανές που δεν ανήκουν στο πεδίο Kerberos, ωστόσο είναι σημαντικά λιγότερο ασφαλές από τον πραγματικό έλεγχο ταυτότητας Kerberos. Τόσο ο έλεγχος ταυτότητας SPNEGO όσο και ο κωδικός πρόσβασης είναι ενεργοποιημένοι από προεπιλογή. Σε αυτό το παράδειγμα δεν υπάρχει απαίτηση ο ιστότοπος να είναι προσβάσιμος σε προγράμματα περιήγησης που δεν διαθέτουν SPNEGO, επομένως ο έλεγχος ταυτότητας με κωδικό πρόσβασης έχει απενεργοποιηθεί χρησιμοποιώντας την οδηγία KrbMethodK5Passwd. Για πληρότητα, το SPNEGO έχει ενεργοποιηθεί ρητά χρησιμοποιώντας την οδηγία KrbMethodNegotiate.

Η οδηγία Krb5Keytab καθορίζει το όνομα διαδρομής της καρτέλας πληκτρολογίου στην οποία έχει προστεθεί η κύρια υπηρεσία HTTP. Θα πρέπει να ταιριάζει με ό, τι πέρασε στην εντολή ktadd του kadmin νωρίτερα σε αυτή τη διαδικασία.

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

7) Καθορίστε μια λίστα εξουσιοδοτημένων χρηστών

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

Σε αυτό το παράδειγμα υπάρχουν μόνο τέσσερις χρήστες που χρειάζονται πρόσβαση και ο απλούστερος τρόπος για να τακτοποιήσετε αυτό είναι μέσω μιας οδηγίας Require:

# ... Απαιτείται χρήστη dougal@EASYPROJECT.COM brian@EASYPROJECT.COM ermintrude@EASYPROJECT.COM dylan@EASYPROJECT.COM

Ωστόσο, εάν θέλετε να επιτρέψετε την πρόσβαση μέσω του Apache σε όλους τους χρήστες LDAP/AD, μπορείτε να καθορίσετε:

# ... Απαιτείται έγκυρος χρήστης

8) Φορτώστε ξανά τη διαμόρφωση του Apache

Ανατρέξτε στην ενότητα Αιτία μια υπηρεσία συστήματος για να φορτώσει ξανά τη διαμόρφωσή της. Στα πρόσφατα συστήματα που βασίζονται στο Debian, η απαιτούμενη εντολή είναι:

υπηρεσία apache2 αναγκαστική επαναφόρτωση

 

Διαμόρφωση Nginx

Αυτή η ενότητα ισχύει μόνο για λειτουργικό σύστημα που βασίζεται σε CentOS/RedHat.

1) Βεβαιωθείτε ότι το Nginx είναι εγκατεστημένο στο σύστημά σας.
Όλες οι επόμενες εντολές πρέπει να εκτελούνται από root χρήστη ή χρησιμοποιώντας sudo.

2) Εκτελέστε την επόμενη εντολή για να ελέγξετε ποιες μονάδες είναι διαθέσιμες στην εγκατάσταση nginx.

Nginx -V

(αναζητήστε "με-ροή = δυναμική" στην έξοδο της εντολής για να βεβαιωθείτε ότι η μονάδα ατμού είναι διαθέσιμη)

3) Μεταβείτε στη ρίζα σας και αναζητήστε το αρχείο ngx_stream_module.so

 cd / find / -name ngx_stream_module.so

Σημειώστε την ακριβή διαδρομή του αρχείου μονάδας ατμού
Για παράδειγμα, μπορεί να τοποθετηθεί στο "/usr/lib64/nginx/modules/ngx_stream_module.so" θα χρειαστείτε αυτήν τη διαδρομή για να το ορίσετε στο nginx.conf

Εάν δεν έχετε ngx_stream_module, πρέπει να απεγκαταστήσετε το προεπιλεγμένο nginx και να το εγκαταστήσετε ξανά από πηγές ή συγκεκριμένο πακέτο rpm. Σε αυτή τη σελίδα μπορείτε να βρείτε τις ακριβείς εκδόσεις των πακέτων nginx που περιλαμβάνουν ngx_stream_module - https://rpmfind.net/linux/rpm2html/search.php?query=ngx_stream_module.so()(64bit)

4) Τώρα είστε έτοιμοι να γράψετε τη διαμόρφωσή σας Nginx.

vim /etc/nginx/nginx.conf
############################################# χρήστη nginx; εργασίες_διαδικασίες 1; load_module /usr/lib64/nginx/modules/ngx_stream_module.so; error_log /var/log/nginx/error.log προειδοποίηση. pid /var/run/nginx.pid; συμβάντα {working_connections 1024; } ροή { #… error_log /var/log/nginx/stream_error.log εντοπισμός σφαλμάτων. διακομιστής {ακούστε 88; proxy_pass kdc01.easyproject.com:88; } διακομιστής {listen 749; proxy_pass kdc01.easyproject.com:749; }} #############################################

5) Επανεκκινήστε την υπηρεσία nginx.

systemctl ενεργοποίηση nginx systemctl εκκίνηση nginx

6) Ελέγξτε αν οι εκχωρημένες θύρες είναι ανοιχτές τώρα.

netstat -tupnl | grep nginx

Τώρα το Nginx μας είναι έτοιμο να ανακατευθύνει τα αιτήματα στον περιορισμό του διακομιστή.

Διαμόρφωση προγράμματος -πελάτη Ιστού εάν χρησιμοποιείται AD

Το όνομα τομέα πρέπει να επιτρέπεται σε προγράμματα περιήγησης -πελάτη, ώστε οι πελάτες να μπορούν να χρησιμοποιούν SSO. Αυτό μπορεί να χρησιμοποιηθεί με την adujsting της πολιτικής τομέα ή απευθείας στα προγράμματα περιήγησης ως εξής:

  • IE: Μεταβείτε στα Εργαλεία -> Επιλογές Internet -> Ασφάλεια -> Τοπικό Intranet -> Ιστότοποι -> Προχωρημένοι και προσθέστε τον τομέα, π.χ. easyproject.com
  • Edge: Κληρονομείται από IE
  • Chrome: Κληρονομείται από IE
  • Firefox: Μεταβείτε στη διεύθυνση URL σχετικά με: ρυθμίστε και ενημερώστε τις ακόλουθες μεταβλητές: network.negotiate-auth.trusted-uris, network.automatic-ntlm-auth.trusted-uris-προσθέστε ξανά τον τομέα, π.χ. easyproject.com

Debugging

Εάν θέλετε να επαληθεύσετε ότι η εφαρμογή EasyRedmine σας βλέπει τις μεταβλητές SSO που αποστέλλονται από τον διακομιστή ιστού (π.χ. Apache), μεταβείτε στο [url]/sso_variables, π.χ. στη διεύθυνση https://www.easyproject.com/sso_variables.

Η τρέχουσα τιμή, η τρέχουσα σύνδεση και η τρέχουσα χρήση σε στοιχεία DB πρέπει να συμπληρωθούν και να αντιστοιχούν στον χρήστη που προσπαθεί να συνδεθεί.

 

Πηγές και χρήσιμοι σύνδεσμοι

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_smart_cards/configuring_a_kerberos_5_server

https://help.ubuntu.com/lts/serverguide/kerberos.html.en

http://www.microhowto.info/howto/configure_apache_to_use_kerberos_authentication.html

https://active-directory-wp.com/docs/Networking/Single_Sign_On/Kerberos_SSO_with_Apache_on_Linux.html

https://medium.com/@Santii/how-to-setup-kerberos-behind-a-reverse-proxy-nginx-d692f609191c

Δοκιμάστε το Easy Redmine σε δωρεάν δοκιμή 30 ημερών

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