Συγχρονισμός Active Directory με κεντρικό OpenLDAP ΑΘΗΝΑ¶
Ο συγχρονισμός του Active Directory με τον κεντρικό κατάλογο γίνεται με τη χρήση δύο components:- Τον Ldap Synchronization Connector που συγχρονίζει τις LDAP εγγραφές.
- Το Password Synchronization component του Identity Management for Unix που προσφέρεται στα Windows Server 2003 R2.
- Εγκαστάσταση του LSC και συγχρονισμός των εγγραφών (ώστε να δημιουργηθούν οι εγγραφές στο OpenLdap).
- Εγκατάσταση του Password Syncrhonization και αλλαγή των passwords.
- Το Password Syncrhonization ενημέρωνει αυτόματα τα passwords κάθε φορά που γίνεται κάποια αλλαγή.
- Το LSC πρέπει να τρέχει περιοδικά ώστε να ενημερώνει τη δομή του καταλόγου.
Συγχρονισμός εγγραφών¶
Ο συγχρονισμός των εγγραφών γίνεται με τη χρήση του Ldap Synchronization Connector . Το εργαλείο αυτό επιλέχθηκε γιατί- Είναι ανοιχτού κώδικα
- Είναι γραμμένο σε Java άρα μπορεί να τρέξει σε διάφορα λειτουργικά συστήματα
- Προσφέρει μεγάλη ευελιξία στις μετατροπές που μπορεί να κάνει κατά τον συγχρονισμό
- Είναι Active Directory aware προσφέροντας ειδικές λειτουργίες για τον χειρισμό των ειδικών attributes του Active Directory
- Εγκατάστασή του στις εγκαταστάσεις του Ινστιτούτου σας. Στην περίπτωση αυτή επικοινωνεί μέσω Internet από συγκεκριμένη IP με τον server του ΑΘΗΝΑ που φιλοξενεί το OpenLDAP.
- Εγκατάστασή του στον server του ΑΘΗΝΑ. Στην περίπτωση αυτή θα πρέπει το Active Directory να είναι προσβάσιμο μέσω Internet από συγκεκριμένη IP του server του ΑΘΗΝΑ.
Στη δεύτερη περίπτωση (εγκατάσταση στον server του ΑΘΗΝΑ), οι διαχειριστές του Ινστιτούτου θα πρέπει να γνωστοποιήσουν:
- Τη διεύθυνση (IP:port) στην οποία θα είναι προσβάσιμο το Active Directory.
- Τα credentials (DN και password) ένος Active Directory account που να έχει πρόσβαση στα απαραίτητα attributes των χρηστών.
- To base DN κάτω απο το οποίο βρίσκονται οι χρήστες που θέλουν να συγχρονίζονται.
Εγκατάσταση LSC¶
Για την εγκατάσταστη του LSC το μόνο προαπαιτούμενο είναι η ύπαρξη Java jre 1.6. Για την εγκατάστασή του ακολουθήστε τα εξής βήματα:- Κατεβάστε το source:lsc/lsc.zip και κάντε το extract σε κάποιον φάκελο που στη συνέχει θα αποκαλείται
LSCHOME. - Στο αρχείο LSCHOME\bin\lsc.bat αλλάξτε τις παρακάτω μεταβλητές ώστε να περιέχουν τις σωστές τιμές του path του JRE και του φακέλου
LSCHOME, π.χ.set LSC_HOME=C:\opt\lscset JAVA_HOME=C:\Java\jre6 - Στο αρχείο LSCHOME\etc\lsc.properties.generage.bat αλλάξτε την πρώτη εντολή
cd c:\opt\lsc\etc
ώστε να κάνει cd στοLSCHOME\etc
LSC Configuration¶
Το configuration του LSC γίνεται με το αρχείο etc/lsc.properties. Για ευκολία δίνεται ένα αρχείο Windows Script (lsc.properties.vbs) το οποίο δημιουργεί το αρχείο lsc.properties με βάση τα παρακάτω inputs (πρέπει να γίνουν edit μέσα στο αρχείο):
SRC_LDAPURL: To uri του Active Directory, συνήθωςldap://localhost:389SRC_BASEDN: Το base DN του Active DirectorySRC_BINDDN: To DN ενός χρήστη με δικαιώμα να διαβάσει όλα τα παραίτητα attributesSRC_BINDPW: To password του παραπάνω χρήστη.SRC_DN: Το DN κάτω από το base DN που θέλουμε να συγχρονιστεί. Αν π.x. τοSRC_BASEDNείναιdc=ipsyp,dc=domκαι τοSRC_DNείναιou=People, τότε θα συγχρονιστεί το DN ou=People,dc=ipsyp,dc=dom.
DST_INTITUTE_OU: To όνομα του ou του Ινστιτούου, κατά σύμβαση τα αρχικά της επωνυμίας του Ινστιτούτου στα Αγγλικά, π.χ imis (στη συνέχεια αναφέρεται ωςINSTITUTE_NAME.DST_LDAPURL: To uri του openLdap, πάνταldaps://login.athena-innovation.gr:636DST_BASEDN: To base DN της βάσης του Ινστιτούτου στο openLdap,dc=INSΤITUTE_NAME,dc=athena-innovation,dc=grDST_BINDDN: To DN του admin χρήστη του Ινστιτούτου στο openldapcn=ldapadmin,dc=INSΤITUTE_NAME,dc=athena-innovation,dc=grDST_BINDPW: Το password του admin χρήστη.DST_DN: Το DN στο οποίο θα γίνεται ο συγχρονισμός. Συνιστάται να μην συγχρονίζεται κατευθείαν στοBASEDNώστε να υπάρχει ευελιξία για δημιουργία αναξέρτητων εγγραφών στο openLdap, και προτείνεται να μπαίνουν οι εγγραφές κάτω από τοou=People.DST_DOMAIN: To subdomain του Ινστιτούτου κάτω από το athena-innovation.gr,δηλαδήINSTITUTE_NAME.athena-innovation.gr.
DST_LDAPURL, DST_INTITUTE_OU, DST_BASEDN, DST_BINDDN, DST_BINDPW, DST_DOMAINκαθορίζονται από τους διαχειριστές του openLdap κεντρικού καταλόγου και πρέπει να ρυθμιστούν σύμφωνα με τις τιμές που θα δωθούν (για την ακρίβεια προκύπτουν από την επιλογή του OU ως τα αρχικά της επωνυμίας του Ινστιτούτου στα Αγγλικά).SRC_LDAPURL, SRC_BASEDN, SRC_BINDDN, SRC_BIDNPW, SRC_DN, DST_DNτα επιλέγει ο διαχειριστής του Active Directory.
Για το DST_DN ειδικά: Αν χρησιμοποιηθεί άλλο από τα προκαθορισμένα ou=People ή ou=Groups, πρέπει να ένημερωθούν πρώτα οι διαχειριστές του κεντρικού καταλόγου ώστε να δημιουργήσουν το κατάλληλο OU.
- Users (
lsc.tasks.users): Συγχρονίζει τα βασικά απαραίτητα τμήματα ενός user account. - OUs (
lsc.tasks.OUs): Συγχρονίζει τα OUs που βρίσκει κάτω από το DN. - UserInfo (
lsc.tasks.userInfo): Συγχρονίζει τα υπόλοιπα attributes των χρηστών. - Groups (
lsc.tasks.groups): Συγχρονίζει τα groups.
- Το παραγόμενο
lsc.propertiesέχει μία γενική προσέγγιση που θα πρέπει να καλύπτει τις περισσότερες περιπτώσεις. Παρόλα αυτά είναι ευθύνση του κάθε διαχειριστή να ελέγξει αν όλα τα attributes που θα ήθελε να συγχρονίζονται είναι ορισμένα και να κάνει τις απαραίτητες προσθήκες. - Για τα attributes των EduPerson και Schac Schemas που δεν υπάρχουν στο ActiveDirectory δίνονται οι σωστές default τιμές
- Τα member attributes των groups του ActiveDirectory υπολογίζονται αυτόματα από το ίδιο. Για το λόγο αυτό φαίνονται πάντα ως "νέες" τιμές, με αποτέλεσμα να γίνεται πάντα full overwrite των τιμών τους.
- Ανάμεσα στα δεδομένα που γίνονται synchronized είναι και το locked ή disabled status των χρηστών (με αλλαγή του password στο openLdap se {LOCKED}password...)
- Υπό ορισμένες συνθήκες μπορεί να χρειαστεί τρέξιμο του LSC πάνω από μία φορές. Π.χ. όταν δημιουργηθεί νέο OU και μετακινηθεί εκεί κάποιος χρήστης, την πρώτη φορά η μετακίνηση του χρήστη δε θα πετύχει καθώς δε θα έχει δημιουργηθεί ακόμα το OU (το user sync task τρέχει πριν από το OU task). Στις περιπτώσεις αυτές θα πρέπεινα τρέξετε το lsc περισσότερες φορές μέχρι να ολοκληρωθεί ο συγχρονισμός.
Σημειώνεται πως το configuration του LSC είναι ίδιο είτε τρέχει στους servers των Ινστιτούτων είτε στον server του ΑΘΗΝΑ.
Αφού αλλάξετε τις μεταβλητές του αρχείουlsc.properties.vbs όπως περιγράφεται παραπάνω
- Τρέξτε το
LSCHOME\etc\lsc.properties.generate.bat - Δοκιμάστε την εγκατάστασή σας τρέχοντας (η εντολή αυτή δε θα κάνει αλλαγές σε κανένα directory):
LSCHOME\bin\lsc.bat -f LSCHOME\etc\ -s all -n
Running LSC¶
Για να τρέξετε το LSC εκτελέστε:LSCHOME\bin\lsc.bat -f LSCHOME\etc\ -s all
H εντολή αυτή θα πρέπει να οριστεί ως scheduled task ώστε να εκτελείται σε τακτά χρονικά διαστήματα ή να την εκτελείτε μετά από κάθε μεταβολή στο Active Directory.
Συγχρονισμός passwords.¶
Ο συγχρονισμός των passwords γίνεται με χρήση του Password Synchronization component του Identity Management for Unix που προσφέρεται στα Windows Server 2003 R2. Το Password Synchronization λειτουργεί ως εξής:
- Στον server που φιλοξενεί το Active Directory ενεργοποιείται το Password Synchronization component το οποίο κάθε φορά που κάποιος χρήστης αλλάζει το password ενημερώνεται για το νέο password σε plain text (όχι κάποια hashed μορφή του). Στη συνέχεια επικοινωνεί με τον αντίστοιχο daemon που τρέχει στον server του ΑΘΗΝΑ και του στέλνει το username και το νέο password. Σημείώνεται ότι η επικοινωνία γίνεται σε proprietary πρωτόκολλο χρησιμοποιώντας συμμετρική κρυπτογράφηση.
- Στο server που φιλοξενεί τον κεντρικό κατάλογο του ΑΘΗΝΑ τρέχει ένας daemon (ssod:http://technet.microsoft.com/en-us/library/cc785103%28WS.10%29.aspx). Ο δαίμονας αυτός δέχεται και αποκρυπτογραφεί το username και το password που στέλνουν τα Windows. Ο συγκεκριμένος daemon έχει επεκταθεί ώστε να γράφει το password στο αντίστοιχο ldap attribute του OpenLdap.
- Τρέχουν πολλαπλά instances του σε διαφορετικές πόρτες με διαφορετικά encryption keys. Κάθε Active Directory μπορεί να επικοινωνήσει μόνο με τον δαίμονα του αντίστοιχου Ινστιτούτου.
- Κάθε δαίμονας είναι ρυθμισμένος ώστε να ψάχνει και να αλλάζει εγγραφές μόνο κάτω από το OU του εκάστοτε Ινστιτούτου και να συνδέεται στο LDAP με χρήστη που έχει δικαίωμα να να γράψει μόνο στο δικό του subtree.
Σημείωση: Το password synchronization υποστηρίζει 2 way sync. Στην παρούσα εγκατάσταση αυτό δε χρησιμοποιείται, δηλαδή το openldap ποτέ δε θα στείλει passwords στο Active Directory
Εγκατάσταση του Password Synchronization στα windows.¶
Για την εγκατάσταση ακολουθήστε τις οδηγίες της Microsoft.
Password Synchronization Configuration¶
Σε ένα command prompt τρέξτε τις παρακάτω εντολέςpsadmin config -enable WinToUnix -retry 3 -interval 120 -Log yespsadmin add login.athena-innovation.grpsadmin config -comp login.athena-innovation.gr -enable WinToUnix -key "ENCRYPTION_KEY" -port SSOD_PORT
Όπου τοENCRYPTION_KEYκαιSSOD_PORTθα δωθούν για το Ινστιτούτο σας από τους διαχειριστές του κεντρικού καταλόγου.
Εναλλακτικά το configuration μπορεί να γίνει από την αντίστοιχη mmc console στο Start-->All Programs-->Identity Management for Unix-->Microsoft Identity Management for Unix.
Περισσότερες πληροφορίες για το configuration του Password Synchronization μπορείτε νε βρείτε εδώ.
Στο Windows Application Log μπορείτε να βλέπετε τις επιτυχείς και τις ανεπιτυχείς αλλαγές των passwords (ο unix daemon ενημερώνει αν η αλλαγή γίνει πετυχημένα στο openldap).
Παρατηρήσεις¶
Δημιουργία νέου χρήστη.¶
Μία κατάσταση που είναι πιθανόν να προκύψει στο σύστημα που περιγράφεται κατα τη δημιουργία νέων χρηστών είναι η εξής:- Ένας νέος χρήστης δημιουργείται στο Αctive Directory και ορίζεται το password του.
- Το Password synchronization προσπαθεί να ενημερώσει τον κεντρικό κατάλογο και αποτυγχάνει καθώς ο σχετικός χρήστης δεν υπάρχει ακόμα.
- Το LSC τρέχει, ο χρήστης δημιουργείται στον κεντρικό κατάλογο αλλά χωρίς password.
- Δημιουργία νέου χρήστη
- Εκτέλεση του LSC, άρα και δημιουργία του χρήστη στον κεντρικό κατάλογο.
- Ορισμός του password του χρήστη, άρα και ενημέρωσή του στον κεντρικό κατάλογο.