Nous allons voir dans cet article comment installer, configurer et gérer un contrôleur de domaine Samba 4.

Samba 4 est une refonte complète de Samba, puisqu'il permet de remplacer un domaine Active Directory de manière transparente pour les machines, les applications et les utilisateurs. Etant une solution Opensource, il n'y a aucun coup de licence supplémentaire pour intégrer les machines dans le domaine.

Les outils d'administration Active Directory permettent de configurer Samba 4.

Sommaire

Présentation

Notre contrôleur de domaine primaire aura les propriétés suivantes :

  • Hostname : pdc
  • IP : 192.168.0.1
  • Domaine : INFRA.AD
  • Niveau de compatibilité du domaine : 2k3

Installation et Configuration

Pré-requis

Hostname

Éditez le fichier suivant :

nano /etc/hostname  

Mettez :

pdc  

Puis editez :

192.168.0.1      pdc.infra.ad    pdc  

Lancez la commande suivante pour prendre en compte les modifications :

/etc/init.d/hostname.sh start

Outils pour la compilation

Lancez la commande suivante :

aptitude install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils krb5-user libpam0g-dev  
aptitude install attr acl  

Puis modifiez les paramètres de montage des volumes qui hébergerons les données du domaine afin d'activer les ACL :

nano /etc/fstab  

Mettez :

/dev/mapper/SYSTEM-OPT /opt               ext4    errors=remount-ro,acl,user_xattr 0       2
/dev/DATA/data /data    ext4     errors=remount-ro,acl,user_xattr       0       2

Les points de montage et le type de système de fichiers sont à adapter en fonction de votre contexte.

Pour finir, redémarrez la machine :

reboot  

Installation

Exécutez les commandes suivantes :

cd /usr/src  
wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz  
tar -xvzf samba-latest.tar.gz  
cd samba-4.3.5/  
./configure --prefix /opt/samba
make  
make install  

Samba sera installé dans /opt/samba

Configuration

Lancez la commande suivante :

/opt/samba/bin/samba-tool  domain  provision --realm=infra.ad --domain=INFRA --adminpass='MY_PASSWORD' --server-role=dc --function-level=2003

cp /opt/samba/private/krb5.conf /etc/  

Ensuite, complétez les paramètres de Samaba :

nano /data/samba4/etc/smb.conf  

Mettez :

[global]
        workgroup = INFRA
        realm = INFRA.AD
        netbios name = PDC
        server role = active directory domain controller
        dns forwarder = 192.168.0.254
        dsdb:schema update allowed  = no
        allow dns updates = True
        template shell = /bin/bash

Le paramètre dns forwarder doit correspondre à votre serveur DNS (souvent, il s'agit de votre routeur).

Ensuite modifiez vos serveurs DNS locaux :

nano /etc/resolv.conf  

Mettez :

domain infra.ad  
search infra.ad  
nameserver 192.168.0.1  

Vérification de la configuration

Lancez la commande suivante pour lancer Samba :

/opt/samba/sbin/samba -i -M single

Ensuite testez la connection :

/opt/samba/bin/smbclient -L localhost -U%

Vous devez obtenir :

 Sharename       Type      Comment
       ---------       ----      -------
       netlogon        Disk
       sysvol          Disk
       IPC$            IPC       IPC Service (Samba 4.3.5)

Ensuite testez de vous authentifier avec le compte administrateur :

/opt/samba/bin/smbclient //localhost/netlogon -UAdministrator%'MY_PASSWORD' -c 'ls'

Vous devez obtenir :

Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.0.0beta9-GIT-e4677e3]  
  .                                   D        0  Wed Sep 12 21:00:36 2012
  ..                                  D        0  Wed Sep 12 21:02:28 2012

Ensuite, nous contrôlons le bon fonctionnement du DNS :

host -t SRV _ldap._tcp.infra.ad.  

Retourne :

_ldap._tcp.infra.ad has SRV record 0 100 389 pdc.infra.ad.  
host -t SRV _kerberos._udp.infra.ad.  

Retourne :

_ldap._udp.infra.ad has SRV record 0 100 88 pdc.infra.ad.  
host -t A pdc.infra.ad.  

Retourne :

pdc.infra.ad has address 192.168.0.1  

Puis nous contrôlons Kerberos :

kinit administrator@INFRA.AD  
klist  

Retourne :

Ticket cache: FILE:/tmp/krb5cc_1000  
Default principal: administrator@INFRA.AD

Valid starting     Expires            Service principal  
02/10/10 19:39:48  02/11/10 19:39:46  krbtgt/INFRA.AD@INFRA.AD  

Installation et configuration du serveur de temps (NTP)

Installation

Lancez la commande suivante :

aptitude install ntp  

Configuration

Modifiez le fichier suivante :

nano /etc/ntp.conf  

Mettez :

# use local clock
# Source: http://www.ntp.org/ntpfaq/NTP-s-refclk.htm#Q-LOCAL-CLOCK
server 127.127.1.1  
fudge 127.127.1.1  stratum 10

# use samba4 signing socket
ntpsigndsocket /opt/samba/var/lib/ntp_signd/  
restrict default mssntp  

Pour appliquer la nouvelle configuration, redémarrez NTP :

/etc/init.d/ntp restart

Mettre Samba4 en daemon

Créez le fichier suivant :

nano /etc/init.d/samba4  

Mettez le contenu suivant :

#! /bin/sh

### BEGIN INIT INFO
# Provides:          samba4
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start Samba daemons 
### END INIT INFO

#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#

SAMBADIR=/opt/samba  
PIDDIR=$SAMBADIR/var/run/samba  
SAMBAPID=$PIDDIR/samba.pid

# clear conflicting settings from the environment
unset TMPDIR

# See if the daemon and the config file are there
test -x $SAMBADIR/sbin/samba -a -r $SAMBADIR/etc/smb.conf || exit 0

. /lib/lsb/init-functions

case "$1" in  
    start)
        log_daemon_msg "Starting Samba 4 daemon" "samba"
        # Make sure we have our PIDDIR, even if it's on a tmpfs
        install -o root -g root -m 755 -d $PIDDIR

        if ! start-stop-daemon --start --quiet --oknodo --exec $SAMBADIR/sbin/samba -- -D; then
            log_end_msg 1
            exit 1
        fi

        log_end_msg 0
        ;;
    stop)
        log_daemon_msg "Stopping Samba 4 daemon" "samba"

        start-stop-daemon --stop --quiet --name samba $SAMBAPID
        # Wait a little and remove stale PID file
        sleep 1
        if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
        then
            # Stale PID file (samba was succesfully stopped),
            # remove it (should be removed by samba itself IMHO.)
            rm -f $SAMBAPID
        fi

        log_end_msg 0

        ;;
    restart|force-reload)
        $0 stop
        sleep 1
        $0 start
        ;;
    *)
        echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0  

Pour finir exécutez les commandes suivantes :

chmod +x /etc/init.d/samba4  
update-rc.d samba4 defaults  
/etc/init.d/samba4 start

Vérifié que vous avez coupé Samab4 après avoir fait les tests de configuration. Sinon vous ne pourrez pas le lancer (problème de port/socket déjà utilisé).

Authentifier les connexion SSH sur Samba

Nous allons voir ici, comment authentifier les connexion SSH sur le PDC grâce à Samba.

Cette étape n'est pas obligatoire et est relativement fastitieuse.

Lancez les commandes suivantes :

ln -s /data/samba4/lib/libnss_winbind.so.2 /lib/libnss_winbind.so  
ln -s /data/samba4/lib/libnss_winbind.so.2 /lib/libnss_winbind.so.2  
nano /etc/nsswitch.conf  

Mettez :

passwd:         compat  winbind  
group:          compat  winbind  

Puis exécutez :

ldconfig -v | grep winbind  
/opt/samba/bin/wbinfo -p

Vous devez obtenir :

Ping to winbindd succeeded  

Puis lancez :

/data/samba/bin/wbinfo -u

Retourne :

Administrator  
Guest  
krbtgt  
...

Puis :

getent passwd  

Retourne :

...
INFRA\Administrator:*:0:100::/home/INFRA/Administrator:/bin/bash  
...

Ensuite, exécutez :

ln -s /data/samba/lib/security/pam_winbind.so /lib/security  

Puis editez :

nano /etc/pam.d/common-auth  

Ajoutez :

# Before pam_unix.so
auth  sufficient  pam_winbind.so  

Attention, ce paramètre doit être ajouté avant pam_unix.so

Puis modifiez :

nano /etc/pam.d/common-account  

Ajoutez :

# Before pam_unix.so
account sufficient pam_winbind.so  

Attention, ce paramètre doit être ajouté avant pam_unix.so

Puis modifiez :

nano /etc/pam.d/common-session  

Ajoutez au début du fichier :

# First line
session required pam_mkhomedir.so  
session required pam_winbind.so  

Création des partages

Partage de fichiers

Nous allons créer les partages suivants :

  • profiles : pour contenir les profils utilisateurs
  • data : pour contenir les données utilisateurs
  • tools : pour contenir les outils à installer sur les postes de travail

Pour cela, commencer par créer les répertoires et les droits :

mkdir /data/profiles  
mkdir /data/data  
mkdir /data/tools  
chmod 777 /data/profiles  
chmod 777 /data/data  
chmod 777 /data/tools  

Puis éditez la configuration de Samba :

nano /opt/samba/etc/smb.conf  

Ajoutez :

[profiles]
      path = /data/profiles
      read only = no

[tools]
      path = /data/tools
      read only = no


[data]
      path = /data/data   
      read only = no

Pour activer les modifications, relancez Samaba :

/etc/init.d/samba4 restart

Partage d'imprimante

Afin de permettre le partage des imprimantes, créez les répertoires suivants :

mkdir /data/spool  
mkdir -p /data/print/{COLOR,IA64,W32ALPHA,W32MIPS,W32PPC,W32X86,WIN40,x64}  
chmod 777 /data/spool  
chmod -R 777 /data/print  

Puis éditez la configuration de Samba :

nano /opt/samba/etc/smb.conf  

Ajoutez :

[printers]
    comment = All Printers
    path = /data/spool
    browseable = Yes
    read only = No
    printable = Yes


[print$]
    comment = Point and Print Printer Drivers
    path = /data/print
    read only = No

Pour activer les modifications, relancez Samaba :

/etc/init.d/samba4 restart

Mise en place d'un antivirus (ClamAV)

Intallation

Lancez les commandes suivantes :

aptitude install clamav-daemon  
dpkg-reconfigure clamav-freshclam  
freshclam  
/etc/init.d/clamav-daemon restart
mkdir /data/infected  

Configuration

Ajoutez le cron suivant :

crontab -e  

Ajoutez :

0 3 * * * clamdscan --quiet --infected  --move=/data/infected/ /data/profiles  
0 3 * * * clamdscan --quiet --infected  --move=/data/infected/ /data/data  
0 3 * * * clamdscan --quiet --infected  --move=/data/infected/ /data/tools  

Joindre un PC Linux au domaine (marche avec l'AD)

Pré-requis

Hostname

Vérifiez dans votre hostname que votre machine appartient à votre domaine.
Par exemple, si le PC s'appel pc00001, alors vous devez obtenir :

hostname  

Retourne :

pc00001  
hostname --fqdn  

Retourne :

pc00001.infra.ad  

Serveur DNS

Modifiez le fichier de configuration suivant :

nano /etc/resolv.conf  

Mettez :

domain infra.ad  
search infra.ad  
nameserver 192.168.0.1  

Serveur de temps

Lancez la commande suivante :

aptitude install ntp ntpdate  

Puis éditez :

nano /etc/ntp.conf  

Mettez :

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst


server pdc.infra.ad  

Installation

Pour adosser la machine Linux à l'AD, nous allons utiliser Likewise.

Lancez les commandes suivantes :

cd /usr/src  
wget http://download.beyondtrust.com/PBISO/8.3/pbis-open-8.3.0.3287.linux.x86_64.rpm.sh  
chmod +x pbis-open-8.3.0.3287.linux.x86_64.rpm.sh  
./pbis-open-8.3.0.3287.linux.x86_64.rpm.sh

Répondez yes à l'ensemble des questions.

Pour trouvez la dernière version de Likewise, utilisez le lien suivant Télécharger Likewise

Joindre le domaine

Lancez les commandes suivantes :

/opt/likewise/bin/domainjoin-cli join INFRA.AD Administrator
/opt/likewise/bin/lwconfig LoginShellTemplate /bin/bash
/opt/likewise/bin/lwconfig UserDomainPrefix INFRA
/opt/likewise/bin/lwconfig AssumeDefaultDomain true

Limiter les accès au SSH

Si vous souhitez que seule les utilisateurs faisant partie du groupe AD SuperUsers puissent se connecter en SSH, alors lancez les commandes suivantes :

/opt/likewise/bin/lwregshell set_value '[HKEY_THIS_MACHINE\Services\lsass\Parameters\Providers\ActiveDirectory\]' RequireMembershipOf "INFRA\\SuperUsers"
/opt/likewise/bin/lwsm refresh lsass

Configuration de sudo

S'il n'est pas installé, exécutez :

aptitude install sudo  

Puis éditez :

nano /etc/sudoers  

Ajoutez :

%SuperUsers ALL=(ALL) ALL

Puis relancez sudo :

/etc/init.d/sudo restart

GPO

Voici quelques liens pratiques :