Thứ Năm, 11 tháng 2, 2010

Controleur de domaine Samba avec LDAP sur CentOS 5.4

Mon nom de domaine sera "hendaye64", l'admin sera "administrateur"
Ip du serveur: 192.168.20.254 , Ip du poste Windows Xp Pro SP3 est : 192.168.20.2
Objectif : Création d'un Domaine appelé "hendaye64" avec une gestion des utilisateurs via LDAP
Création des comptes machines et utilisateurs automatiques.

Controleur de domaine Samba avec LDAP sur CentOS 5.4


Pour commencer, il faut désactiver SELinux.
Ouvrir une console et taper :
echo 0 >/selinux/enforce
 Ouvrir le fichier /etc/sysconfig/selinux
 vi /etc/sysconfig/selinux
Puis mettre :

SELINUX=disabled


A présent il faut installer les dépendances et les logiciels LDAP et Samba ainsi que des utilitaires.

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum update
yum install openldap-servers nss_ldap samba httpd openssl mod_ssl mysql mysql-server php php-xml php-ldap php-mysql php-pdo php-cli php-common smbldap-tools

La version de  smbldap-tools que vous avez téléchargée est bugger donc on prend la dernière :
rpm -Uvh http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5-1.noarch.rpm
 A présent on configure LDAP.

On fait la sauvegarde du fichier de configuration et rend le fichier de configuration vierge.
mv -f /etc/openldap/slapd.conf /etc/openldap/slapd.conf.dist

Ouvrir le fichier :
vi /etc/openldap/slapd.conf

Et y mettre :

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

database bdb
suffix "dc=hendaye"
rootdn "cn=administrateur,dc=hendaye"
rootpw {SSHA}TTzshhAbmZPPb8F2s7sgf9B+IrZt+nUD
password-hash {SSHA}
directory /var/lib/ldap
index cn,sn,uid,displayName pres,sub,eq
index uidNumber,gidNumber eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index objectClass pres,eq
index default sub
Les lignes en gras sont modifiables selon vos besoins.
La seule chose à changer est le mot de passe root en gras dans le code.
Il faut en créé un nouveau via la commande :
slappasswd

Ensuite remplacer le code donné.
Vous pouvez aussi changer l'admin qui pour moi est "administrateur" par ce que vous souhaité.

A présent nous allons donner à LDAP les fichiers dont il a besoin pour fonctionner correctement :
cp /usr/share/doc/samba-3.*/LDAP/samba.schema /etc/openldap/schema/
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
chmod 600 /var/lib/ldap/DB_CONFIG

Pas besoin de grande connaissance pour comprendre les commandes.

Maintenant il faut ouvrir le fichier init.ldif :
vi /etc/openldap/init.ldif

Et y mettre le code suivant :
dn: dc=hendaye
objectclass: dcObject
objectclass: organization
o: Domain Server
dc: hendaye

dn: cn=administrateur,dc=hendaye
objectclass: organizationalRole
cn: administrateur
Les lignes en gras sont modifiables selon vos besoins.
Enregistrer et taper les commandes :
slapadd -l /etc/openldap/init.ldif
chown -R ldap:ldap /var/lib/ldap
chmod 600 /var/lib/ldap/*

Il ne doit pas y avoir d'erreur à la première commande, merci de respecter les espaces.

On peut démarrer LDAP et le mettre au démarrage :
service ldap start
chkconfig ldap on

Aucune erreur ne doit apparaitre au lancement.

Je conseil l'installation de PHPLdapAdmin qui permet de gérer la base depuis le navigateur.
Pour cela ouvrir le fichier /etc/php.ini et chercher la ligne memory_limit = 16 et la mettre à 32.
Puis :
mkdir /var/www/html/samba && cd /var/www/html/samba
wget http://softlayer.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.7.tar.gz
tar zxf phpldapadmin-1.1.0.7.tar.gz
ln -s phpldapadmin-1.1.0.7 pla
cp pla/config/config.php.example pla/config/config.php


Ouvrir le fichier ./pla/config/config.php de dé-commenter la lige :
$config->custom->jpeg['tmpdir'] = "/tmp";
On lance le service :
service httpd start
chkconfig httpd on

Si votre Pare Feux est activé, ce qui n'est pas mon cas, ouvrir les ports suivant via le fichier
/etc/sysconfig/iptables
Et y mettre :
#Allow Https://
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
#Allow samba:
-A RH-Firewall-1-INPUT -m multiport -p udp --dport 137,138 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m multiport -p tcp --dport 139,445 -j ACCEPT
Ouvrir le navigateur est entré : "https://127.0.0.1/samba/pla/", accepter le certificat et voilà l'interface.

Utilisateur : cn=administrateur,dc=hendaye
Password :   ****** (Celui indiquer dans le fichier de configuration de LDAP créer via "slappasswd"

Je n'explique pas comment elle marche c'est relativement facile.

A présent on attaque Samba, je commence par prendre le fichier de samba, d'en faire une sauvegarde et mettre le fichier de conf par défaut donné par smbldap-tools

 mv /etc/samba/smb.conf /etc/samba/smb.conf.dist
cp /usr/share/doc/smbldap-tools-0.9.5/smb.conf /etc/samba/smb.co
nf

Ouvrir le fichier, 

Les seules lignes à remplacer selon vos besoins sont :

        ldap admin dn = cn=administrateur,dc=hendaye
        ldap suffix = dc=hendaye
        workgroup = hendaye

Rajouter ces lignes :

        ldap ssl = off         
       nt acl support = yes       
      socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE

Il faut également créer certain dossier, les chemins son modifiables si vous le souhaitaient.
mkdir -p /home/netlogon
mkdir -p /home/profile
chmod a+w /home/netlogon
chmod a+w /home/profile
Voici mon smb.conf : 


Attention à cause d'un Bug lors de la création d'une machine automatiquement merci d'utiliser ce script :
        add machine script = /usr/sbin/useradd -s /bin/false -d /dev/null -M  %u
        passwd program = /usr/sbin/smbldap-passwd -a -m "%u"

Copier le fichier smbldap.conf :
cp /usr/share/doc/smbldap-tools-0.9.5/smbldap.conf /etc/smbldap-tools/smbldap.conf

Il faut le remplacer par l'ancien donc faite oui s'il demande de l'écraser.
Éditer pour l'adapter voici le mien :




Idem pour le fichier "/etc/smbldap-tools/smbldap_bind.conf"
Attention les mots de passe son en clair.

Voila le mien :



On sécurise les fichiers :
chmod 644 /etc/smbldap-tools/smbldap.conf
chmod 600 /etc/smbldap-tools/smbldap_bind.conf

A présent on donne le mot de passe ldap à Samba via la commande :
smbpasswd -w VOTRE-MDP-EN-CLAIR

Pour vérifier que tous est bon, taper la commande :
net getlocalsid

Aucune erreur ne doit apparaitre.
Copier le SID donné dans le fichier :"/etc/smbldap-tools/smbldap.conf", dans le fichier expemple c'est le mien.

On test le fichier de configuration de samba :
testparm

Si tout est ok, sans erreur on peu lancer la commande :
smbldap-populate
Et rentrer le mot de passe LDAP.
Lancer Samba et le mettre au démarrage :
/etc/init.d/smb start
chkconfig smb on
Ensuite il faut configurer NSS et PAM  car un système Linux peut aller chercher dans différents endroits pour  authentifier des utilisateurs. Par défaut il s'agit du fichier /etc/passwd Cependant on peut lui en ajouter d'autres sources de données. On va donc lui indiquer notre annuaire LDAP.

Rendez-vous dans le fichier "/etc/pam.d/system-auth" est rajouter c'est ligne :
 auth  sufficient pam_ldap.so use_first_pass
 account [default=bad success=ok user_unknown=ignore] pam_ldap.so
 password sufficient pam_ldap.so use_authtok
 session optional pam_ldap.so

Essuite éditer le fichier "/etc/ldap.conf"
Voici le mien à adapter selon vos besoins. 




Editer aussi "/etc/openldap/ldap.conf"
Voici le mien : 


Et pour finir je complète le fichier "/etc/nsswitch.conf" en rajoutant ldap à ces lignes :

 passwd: files ldap
 shadow: files ldap
 group:  files ldap
A présent redémarrer Samba et LDAP.


-Ajout des utilisateurs :

smbldap-useradd -a -m nom_utilisateur
smbldap-passwd nom_utilisateur

A présent je souhaite remplacer l'utilisateur root par administrateur.
Je fais la commande :
smbldap-populate -a administrateur

Je tape le mot de passe souhaité et nous pouvons à présent enregistré des machines via ce compte.
Il faut a présent Maper les groupe.
Faite un :
net groupmap list
Puis cette commande pour tous mapper :
groupadd -g 512 domain_admins
groupadd -g 513 domain_users
groupadd -g 514 samba_domain_guests
groupadd -g 515 samba_domain_computers
groupadd -g 544 samba_administrator
groupadd -g 548 samba_account_operators
groupadd -g 550 samba_print_operators
groupadd -g 551 samba_backup_operators
groupadd -g 552 samba_replicators
 

A présent je souhaite mettre root comme administrateur du domaine et des machines Windows.
Se rendre sur le phpLDAPadmin et aller sur l'utilisateur "root" dans "Users".

Remplacer le "gidNumber" par 512 (Numéro Gid de Domain Admins ou en commande :
usermod -a -G domain_admins root

Même opération pour les autres groupes.

Pour faciliter l'administration du serveur on peut donner plusieurs nom au compte administrateur

Éditer le fichier /etc/samba/smbusers
y mettre : Administrator = administrateur admin root administrator
Il est possible de donner des alias à d'autres comptes.


Donc pour ajouter une machines, rentrer son nom a la main, se connecter en root, reboot puis se connecter sur l'utilisateur désiré.
Il y aura création du profil itinérant, stocker dans /home/profiles/*


Et voilà, si j'ai oublié des trucs merci de me le dire !

Không có nhận xét nào:

Đăng nhận xét