Project

General

Profile

Συγχρονισμός Active Directory με κεντρικό OpenLDAP ΑΘΗΝΑ

Ο συγχρονισμός του Active Directory με τον κεντρικό κατάλογο γίνεται με τη χρήση δύο components:
  1. Τον Ldap Synchronization Connector που συγχρονίζει τις LDAP εγγραφές.
  2. Το Password Synchronization component του Identity Management for Unix που προσφέρεται στα Windows Server 2003 R2.
Το αρχικό στήσιμο γίνεται ως εξής:
  1. Εγκαστάσταση του LSC και συγχρονισμός των εγγραφών (ώστε να δημιουργηθούν οι εγγραφές στο OpenLdap).
  2. Εγκατάσταση του Password Syncrhonization και αλλαγή των passwords.
Στη συνέχεια:
  • Το Password Syncrhonization ενημέρωνει αυτόματα τα passwords κάθε φορά που γίνεται κάποια αλλαγή.
  • Το LSC πρέπει να τρέχει περιοδικά ώστε να ενημερώνει τη δομή του καταλόγου.

Συγχρονισμός εγγραφών

Ο συγχρονισμός των εγγραφών γίνεται με τη χρήση του Ldap Synchronization Connector . Το εργαλείο αυτό επιλέχθηκε γιατί
  1. Είναι ανοιχτού κώδικα
  2. Είναι γραμμένο σε Java άρα μπορεί να τρέξει σε διάφορα λειτουργικά συστήματα
  3. Προσφέρει μεγάλη ευελιξία στις μετατροπές που μπορεί να κάνει κατά τον συγχρονισμό
  4. Είναι Active Directory aware προσφέροντας ειδικές λειτουργίες για τον χειρισμό των ειδικών attributes του Active Directory
Υπάρχουν δύο τρόποι χρήσης του LSC.
  • Εγκατάστασή του στις εγκαταστάσεις του Ινστιτούτου σας. Στην περίπτωση αυτή επικοινωνεί μέσω Internet από συγκεκριμένη IP με τον server του ΑΘΗΝΑ που φιλοξενεί το OpenLDAP.
  • Εγκατάστασή του στον server του ΑΘΗΝΑ. Στην περίπτωση αυτή θα πρέπει το Active Directory να είναι προσβάσιμο μέσω Internet από συγκεκριμένη IP του server του ΑΘΗΝΑ.
Η ουσιαστική διαφορά είναι στο ποιο από τα δύο directories (Active Directory ή Openldap) θα πρέπει να είναι προσβάσιμο μέσω Internet από συγκεκριμένη ΙP. H επιλογή αφήνεται στους διαχειριστές του κάθε Ινστιτούτου.
Στη δεύτερη περίπτωση (εγκατάσταση στον server του ΑΘΗΝΑ), οι διαχειριστές του Ινστιτούτου θα πρέπει να γνωστοποιήσουν:
  1. Τη διεύθυνση (IP:port) στην οποία θα είναι προσβάσιμο το Active Directory.
  2. Τα credentials (DN και password) ένος Active Directory account που να έχει πρόσβαση στα απαραίτητα attributes των χρηστών.
  3. To base DN κάτω απο το οποίο βρίσκονται οι χρήστες που θέλουν να συγχρονίζονται.

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

Για την εγκατάσταστη του LSC το μόνο προαπαιτούμενο είναι η ύπαρξη Java jre 1.6. Για την εγκατάστασή του ακολουθήστε τα εξής βήματα:
  1. Κατεβάστε το source:lsc/lsc.zip και κάντε το extract σε κάποιον φάκελο που στη συνέχει θα αποκαλείται LSCHOME.
  2. Στο αρχείο LSCHOME\bin\lsc.bat αλλάξτε τις παρακάτω μεταβλητές ώστε να περιέχουν τις σωστές τιμές του path του JRE και του φακέλου LSCHOME, π.χ.
    set LSC_HOME=C:\opt\lsc
    set JAVA_HOME=C:\Java\jre6
  3. Στο αρχείο 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:389
  • SRC_BASEDN : Το base DN του Active Directory
  • SRC_BINDDN : To DN ενός χρήστη με δικαιώμα να διαβάσει όλα τα παραίτητα attributes
  • SRC_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:636
  • DST_BASEDN : To base DN της βάσης του Ινστιτούτου στο openLdap, dc=INSΤITUTE_NAME,dc=athena-innovation,dc=gr
  • DST_BINDDN : To DN του admin χρήστη του Ινστιτούτου στο openldap cn=ldapadmin,dc=INSΤITUTE_NAME,dc=athena-innovation,dc=gr
  • DST_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.

Το configuration που δημιουργείται έχει 4 tasks:
  1. Users (lsc.tasks.users): Συγχρονίζει τα βασικά απαραίτητα τμήματα ενός user account.
  2. OUs (lsc.tasks.OUs): Συγχρονίζει τα OUs που βρίσκει κάτω από το DN.
  3. UserInfo (lsc.tasks.userInfo): Συγχρονίζει τα υπόλοιπα attributes των χρηστών.
  4. 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 όπως περιγράφεται παραπάνω
  1. Τρέξτε το
    LSCHOME\etc\lsc.properties.generate.bat
  2. Δοκιμάστε την εγκατάστασή σας τρέχοντας (η εντολή αυτή δε θα κάνει αλλαγές σε κανένα 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.
Για να μην υπάρχουν conflicts με κοινά usernames αλλά και για το isolation των χρηστών των Ινστιτούτων ο ssod daemon έχει αλλαχθεί ώστε να:
  1. Τρέχουν πολλαπλά instances του σε διαφορετικές πόρτες με διαφορετικά encryption keys. Κάθε Active Directory μπορεί να επικοινωνήσει μόνο με τον δαίμονα του αντίστοιχου Ινστιτούτου.
  2. Κάθε δαίμονας είναι ρυθμισμένος ώστε να ψάχνει και να αλλάζει εγγραφές μόνο κάτω από το OU του εκάστοτε Ινστιτούτου και να συνδέεται στο LDAP με χρήστη που έχει δικαίωμα να να γράψει μόνο στο δικό του subtree.

Σημείωση: Το password synchronization υποστηρίζει 2 way sync. Στην παρούσα εγκατάσταση αυτό δε χρησιμοποιείται, δηλαδή το openldap ποτέ δε θα στείλει passwords στο Active Directory

Εγκατάσταση του Password Synchronization στα windows.

Για την εγκατάσταση ακολουθήστε τις οδηγίες της Microsoft.

Password Synchronization Configuration

Σε ένα command prompt τρέξτε τις παρακάτω εντολές
  1. psadmin config -enable WinToUnix -retry 3 -interval 120 -Log yes
  2. psadmin add login.athena-innovation.gr
  3. psadmin 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).

Παρατηρήσεις

Δημιουργία νέου χρήστη.

Μία κατάσταση που είναι πιθανόν να προκύψει στο σύστημα που περιγράφεται κατα τη δημιουργία νέων χρηστών είναι η εξής:
  1. Ένας νέος χρήστης δημιουργείται στο Αctive Directory και ορίζεται το password του.
  2. Το Password synchronization προσπαθεί να ενημερώσει τον κεντρικό κατάλογο και αποτυγχάνει καθώς ο σχετικός χρήστης δεν υπάρχει ακόμα.
  3. Το LSC τρέχει, ο χρήστης δημιουργείται στον κεντρικό κατάλογο αλλά χωρίς password.
Η διαδικασία που θα πρέπει να ακολουθείται είναι εξής:
  1. Δημιουργία νέου χρήστη
  2. Εκτέλεση του LSC, άρα και δημιουργία του χρήστη στον κεντρικό κατάλογο.
  3. Ορισμός του password του χρήστη, άρα και ενημέρωσή του στον κεντρικό κατάλογο.