Εγκατάσταση SAMBA+LDAP Ρύθμιση του PAM με LDAP

E-mail Εκτύπωση PDF
Αξιολόγηση Χρήστη: / 0
ΧείριστοΆριστο 

Ρύθμιση του PAM με LDAP.

Για κάθε χρήστη στο σύστημά μας υπάρχουν τρία password Hashes, τα οποία παράγονται από τον ίδιο κωδικό: Το UserPassword, το οποίο χρησιμοποιεί το PAM (Password Authentication Module) του Unix και το οποίο είναι HASHED με τον αλγόριθμο SSHA, και τα Nt και Lm Passwords που χρησιμοποιεί το SAMBA για να ταυτοποιήσει τους χρήστες που συνδέονται από Windows workstation. Η επιλογή στο smb.conf: password sync = yes, έχει ως στόχο να αναγκάζει τον εξυπηρετητή SAMBA να τροποποιεί τα Nt και Lm HASHES, κάθε φορά που ο χρήστης αλλάζει το SSHA Hash του. Γενικότερα για να παράγουμε τα 3 αυτά HASH από κονσόλα, μπορούμε να χρησιμοποιήσουμε τα ακόλουθα script:

#!/usr/bin/perl
use Crypt::SmbHash;
$password="12345678";
ntlmgen($password, $lm, $nt);
print "sambaLMPassword: $lm\n";
print "sambaNTPassword: $nt\n";

Και

#!/usr/bin/perl
use Digest::SSHA;
use MIME::Base64;
if ($ARGV[0] eq "") {
printf STDERR "usage: ssha.pl PASSWORD\n";
exit 1;
}
$pass = Digest::SSHA->new;
$pass->add($ARGV[0]);
$pass->add('%s');
print '{SSHA}' . encode_base64($pass->digest . 'salt' ,'') . "\n";

Σε αυτό το σημείο θα τροποποιήσουμε τα configuration αρχεία του PAM, ώστε οι χρήστες που δημιουργούμε μέσω SAMBA+LDAP, να μπορούνε να συνδέονται με SSH στο PDC LDAP. Καταρχήν ανοιγουμε το configuration file του SSH, /etc/sshd/sshd.conf και τοποθετούμε το εξής:

Use pam=yes

Στη συνέχεια τροποποιούμε το αρχείο /etc/nsswitch.conf ως εξής:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files dns ldap wins
networks: files dns ldap wins
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Μετά εγκαθιστούμε τα πακέτα libnss-ldap και libpam-ldap:
#apt-get install libnss-ldap libpam-ldap

τροποποιούμε αρχικά τα configuration files του libnss-ldap ως εξης:

Στο αρχείο /etc/libnss-ldap.secret Γράφουμε το password του cn=admin,dc=myhost,dc=mydomain,dc=gr το εξυπηρετητή LDAP:
*********
Το αρχείο αυτό πρέπει να έχει δικαιώματα 600. Μετά τροποποιώ το αρχείο των ρυθμίσεων του libnss-ldap, /etc/libnss-ldap.conf ως εξής:

# The distinguished name of the search base.

base dc=myhost,dc=mydomain,dc=gr

# The LDAP version to use (defaults to 3
# if supported by client library)
ldap_version 3

# The distinguished name to bind to the server with
# if the effective user ID is root. Password is
# stored in /etc/libnss-ldap.secret (mode 600)
# Use 'echo -n "mypassword" > /etc/libnss-ldap.secret' instead
# of an editor to create the file.
rootbinddn cn=admin,dc=myhost,dc=mydomain,dc=gr
# The port.
# Optional: default is 389.
port 389

Τροποποιούμε τα configuration files του libpam-ldap ως εξης:
Στο αρχείο /etc/pam-ldap.secret Γράφουμε το password του cn=admin,dc=myhost,dc=mydomain,dc=gr το εξυπηρετητή LDAP:
*********

Το αρχείο αυτό πρέπει να έχει δικαιώματα 600. Μετά τροποποιώ το αρχείο των ρυθμίσεων του libpam-ldap, /etc/pam-ldap.conf ως εξής:
# The distinguished name of the search base.
base dc=myhost,dc=mydomain,dc=gr
# The LDAP version to use (defaults to 3
# if supported by client library)
ldap_version 3
# # The distinguished name to bind to the server with
# if the effective user ID is root. Password is
# stored in /etc/pam_ldap.secret (mode 600)
rootbinddn cn=admin,dc=myhost,dc=mydomain,dc=gr
# The port.
# Optional: default is 389.
port 389

Πλέον έχω ρυθμίσει τις βιβλιοθήκες για την ταυτοποίηση του PAM μέσω LDAP. Τώρα μένει να πω στο PAM να χρησιμοποιήσει αυτές τις βιβλιοθήκες. O NSCD είναι ένας δαίμονας ο οποίος αποθηκεύει προσωρινά στην cache του τις αναζητητήσεις του NSS (Name Service Lookups), περιορίζοντας τις αναζητήσεις στο LDAP και βελτιώνοντας τις επιδόσεις του συστήματος. Εγκαθίσταται ως εξής:

#apt-get install nscd
#/etc/init.d/nscd start

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

#nscd --invalidate=passwd
#nscd --invalidate=groups
#nscd --invalidate=hosts

και να μεγαλώσω των αριθμό των ανοιχτών file descriptors του Linux:
#echo 16384 > /proc/sys/fs/file-max

Τα configuration files του PAM βρίσκονται στο φάκελο /etc/pam.d. Από αυτά τα αρχεία ρυθμίζω ώστε να περιέχουν τα εξής:

  • /etc/pam.d/common-password

password sufficient pam_ldap.so type=network use_authtok first_pass
password sufficient pam_unix.so type=machine nullok obscure min=4 max=8 md5
password required pam_deny.so

  • /etc/pam.d/common-auth

auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth required pam_deny.so

  • /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
session optional pam_foreground.so

και
  • /etc/pam.d/common-account
account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_deny.so

Πλέον μπορούμε να συνδεθούμε με τον ίδιο χρήστη και στο PDC του LDAP μέσω SSH. H ταυτοποίηση του χρήστη γίνεται μέσω του libpam ενώ η αναζήτηση του χρήστη και της ομάδας γίνεται μέσω του libnss. Σε περίπτωση που είναι ενεργοποιημένο το winbind, το NSS παρακάμτεται από αυτό και το SAMBA αναζητά το maping μέσω winbind.




Tags: hashes  password  ssha  pam  samba  perl  ldap  shadows  ldap_version  port  nscd  winbind  


Μοιραστείτε αυτό το άρθρο
Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Live! Facebook! StumbleUpon! Yahoo! Dig Me Joomla Free PHP

Σχόλια
Προσθήκη νέου Αναζήτηση RSS
Γράψτε σχόλιο
Όνομα:
Email:
 
Τίτλος:
 
Please input the anti-spam code that you can read in the image.
Τελευταία Ενημέρωση ( Σάββατο, 28 Μάρτιος 2009 23:02 )  

Seach By Google

Translate this website :

Επιλογές


Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in /home/flakgr/public_html/libraries/joomla/cache/handler/callback.php on line 99

Manuals


Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in /home/flakgr/public_html/libraries/joomla/cache/handler/callback.php on line 99

Σε σύνδεση

Έχουμε 37 επισκέπτες συνδεδεμένους

Τελευταία Σχόλια