Souvent, quand on a un environnement windows, on dispose aussi d'une solide base utilisateurs... quand on déploit des serveurs Debian... ben ils sont souvent authetifier "en local"... ce qui peut devenir insuportable quand vous avez beaucoup d'utilisateurs a synchronisé entre votre base debian "local" et vos domaines Controllers...
Heureusement, Linux n'est pas raciste et peut authentifier vos utilisateurs via vos domain controllers...
DNS et réseaux
Je pars du principe que votre serveur est installer avec les dns et une IP fixe... sinon
Sur votre serveur DNS windows, ajoutez un 'A Record' ayant le même nom de serveur (ex: debian) et son IP.
N'oubliez pas de vérifier votre résolution réseaux
un petit ping vers vos DC sera aussi un bon moyen de controler votre configuration et la bonne résolution des dns externes.
Vérifiez aussi le réverse dns, vous pourriez avoir des surprises...
dig -x 192.168.0.26
N'allez surtout pas plus loin si vous avez le moindre problème...
Synchroniser le temps
Il vaut mieux que tout vos serveurs soit à la même heure... Dans la pratique, c'est même un règles élémentaires pour domaine.
Comme Kerberos est un protocol sécurisé sur une base de ticket,le temps (heure) risque de vous poser pas mal de problème de synchro voir de vous refuser l'autentification si vos serveurs ne sont pas à la même heure...
Modifiez le fichier en pécisant le nom complet de votre(vos) time server(s)... Et relancez le service ntpd, puis testez vos serveurs
ntpq -p
Vous devriez avoir vos serveurs avec des informations (sinon vous avez un probleme de dns ou de serveur cible).
Kerberos
Là, nous entrons dans le vif du sujet...
Installation
Si d'aventures, debconf devait vous demandez des informations, acceptez les informations par défaut, nous alons quand même tout vérifier "à la main"...
Configuration
Par sécurité, nous faisons quand même une copie des fichiers de base:
nano /etc/krb5.conf
Nous stoppons maintenant les services que nous allons modifier:
service krb5-kdc stop
Nous allons maintenant configurer notre domaine dans le krb5.conf:
default_realm = EXAMPLE.LOCAL
dns_lookup_kdc = no
dns_lookup_realm = no
ticket_lifetime = 24h
; for Windows 2003
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; for Windows 2008 with AES
; default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
EXAMPLE.LOCAL = {
kdc = domaincontroller1.example.local
kdc = server2.example.local
admin_server = domaincontroller1.example.local
default_domain = example.local
}
[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = false
Tout ce qui est en rouge est à changer... par vos valeurs....
Login ou logs ?
après cette opération, vous devriez vous loguer avec vos données 'domaine'...
Si vous désirez logguer kerberos (pourquoi pas en fait...) ajoutez cette section:
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmin.log
default = FILE:/var/log/kerberos/krb5lib.log
N'oubliez surtout pas de créer le dossier 'kerberos' dans votre '/var/log'
Dans ce cas, pensez aussi a créer une entrée 'logrotate' pour vos kerberos log... Sinon, votre log risque de devenir indigeste rapidement:
Voici le contenu de ce fichier (pour un archivage par jour et une conservation de 7 jours):
daily
missingok
rotate 7
compress
delaycompress
notifempty
}
Redémarrage de Kerberos
Le plus simple dans ce cas sera un reboot... (surtout avec toutes les configs qui ont changer) mais en théorie ce n'est pas nécéssaire...
Configurer winbind
Winbind est le service qui se chargera de faire la transition entre le local et votre domain Active Directory (via kerberos)
[global]
workgroup = EXAMPLEDOM
realm = EXAMPLE.LOCAL
server string = %h server (Samba %v)
load printers = no
security = ads
local master = no
domain master = no
preferred master = no
wins server = 192.168.11.100
dns proxy = no
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = yes
interfaces = eth0 lo
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
panic action = /usr/share/samba/panic-action %d
invalid users = root
template homedir = /home/%D/%U
template shell = /bin/bash
winbind offline logon = yes
winbind refresh tickets = yes
Relancer les services
Votre configuration complete; il suffit de relancer les services:
service winbind restart
Configurer nsswitch
Cet outil est utilisé par le système pour faire la recherche des utilisateurs et des groupes dans l'Active Directory, de base l'outil est bien plus que cela, mais nous nous contenterons de ce type d'informations pour commencer...
ajouter "winbind" aux bons endroits:
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Gerer le mapping via PAM
PAM : Pluggable Authentication Module
Ce module permet de changer les informations de authentification... Les fichiers de configuration se trouvent dans /etc/pam.d/
# nano /etc/pam.d/common-account
account required pam_unix.so
# nano /etc/pam.d/common-auth
auth required pam_unix.so use_first_pass
# nano /etc/pam.d/common-session
session sufficient pam_winbind.so
session required pam_unix.so
Joindre le domaine
il vaut toujour mieux acquerir un ticket kerberos, utiliser un compte domain admin comme user_admin, vous devrez aussi fournir le mot de passe de ce compte...
Bien entendu vérifiez votre ticket...
Si tout est en ordre, enfin la commande ultime...
Joined 'server_name' to realm 'example.local'