Skip to content

Debian & Active Directory

NB: Istruzioni e configurazioni valide per il dominio UNITN configurazione LDSS e fino a debian 9

Attori:

Macchina da mettere in dominio:  sci-ldtest.unitn.it   192.168.121.30

Server di Dominio e DNS: dcunitn01.unitn.it 192.168.206.99 , dcunitn02.unitn.it 192.168.119.99

Server delle home: sci-aresw.unitn.it 192.168.131.2

Pacchetti

Installa i pacchetti:

# apt-get install krb5-user samba ntp sssd adcli

Metti UNITN.IT nel Default Kerberos realname:

Configurazioni

Nome macchina:

NOTA: il nome meglio tutto minuscolo

Diamo un nome appropriato alla nostra macchina editando il file /etc/hostname

sci-ldtest

sistemiamo anche il file /etc/hosts che dovrebbe essere circa:

127.0.0.1 localhost
127.0.1.1 sci-ldtest.unitn.it sci-ldtest

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# Aggiungi questa riga se la machina non è nel DNS
#192.168.121.30 sci-ldDTest.unitn.it sci-ldDTest

Time:

Sincroniziamo l’ora con i server di dominio (altrimanti kerberos non funziona). Editiamo il file /etc/ntp.conf commentiamo i server di debian e aggiungiamo quello di UNITN

#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 unitn.it #server di unitn

Kerberos:

Modifichiamo il il file /etc/krb5.conf lasciando solo le seguenti informazioni:

[libdefaults]
 default_realm = UNITN.IT
 rdns = false

[domain_realm]
 .unitn.it = UNITN.IT
 unitn.it = UNITN.IT

[realms]
 UNITN.IT = {
 kdc = 192.168.206.99
 kdc = 192.168.119.99
 }

DNS:

modifichiamo il file /etc/resolv.conf come segue:

# Generated by NetworkManager
search unitn.it
nameserver 192.168.206.99
nameserver 192.168.119.99

Samba:

Modifichiamo il file /etc/samba/smb.conf  nel seguente modo:

[global]
 workgroup = UNITN
 realm = UNITN.IT
 security = ADS
 kerberos method = secrets only
 syslog = 0
 machine password timeout = 0
 template homedir = /home/%u
 template shell = /bin/bash
 winbind use default domain = Yes
 winbind expand groups = 0
 winbind refresh tickets = Yes
 idmap config * : range = 10000 - 1000000
 idmap config UNITN:range = 10000 - 1000000
 idmap config UNITN:backend = rid
 idmap config * : backend = tdb
 password server = dcunitn01, dcunitn02

NOTA:  la versione di samba di Debian 8 ha un bacco che richiede un comando in più durante il join al dominio per sistemare il keytab.

dalle versioni successive di samba ( es Ubuntu 16.04) basta modificare la riga del kerberos method come segue e tutto funziona:

kerberos method = secrets and keytab

sssd:

Crea il file  /etc/sssd/sssd.conf  contenente:

[sssd]
services = nss, pam
config_file_version = 2
domains = unitn.it
#debug_level = 8


[domain/unitn.it]
ad_domain = unitn.it
krb5_realm = UNITN.IT
id_provider = ad
ldap_id_mapping = True
ldap_idmap_default_domain_sid = S-1-5-21-343818398-764733703-1708537768
ldap_idmap_range_min = 10000
ldap_idmap_range_size = 1000000
use_fully_qualified_names = False
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
fallback_homedir = /home/%u
ldap_group_nesting_level = 0
ignore_group_members = True
access_provider = simple
ad_server = dcunitn01,dcunitn02

NOTA: Cambia i permessi del file in 600

Setup Authentication:

Il file /etc/nsswitch.conf deve contenere:

passwd: compat sss
group: compat sss
shadow: compat sss

hosts: files dns
networks: files

protocols: db files
services: db files sss
ethers: db files
rpc: db files

netgroup: nis sss
sudoers: files ss

Il file /etc/idmapd.conf  deve contenere:

[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = unitn.it

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

PAM

Il file /etc/pam.d/common-auth deve contenere:

# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_sss.so use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.so
# end of pam-auth-update config

NFS:

Modifica le opzioni nel file /etc/default/nfs-common come segue:

# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=yes

# Options for rpc.statd.
# Should rpc.statd listen on a specific port? This is especially useful
# when you have a port-based firewall. To use a fixed port, set this
# this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
# For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS
STATDOPTS=

# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=yes

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD= yes

A questo punto è più veloce fare un riavvio della macchina che riavvirare i singoli servizi!!!!!

Join

Per testare l’autenticazione kerberos (facoltativo):

kinit [domai_user]@UNITN.IT

Mettere la password e se non ci sono errori procedere con il join:

adcli join -D unitn.it -U [Domain_Administrator] -S dcunitn01 -H $(hostname --fqdn) -O "OU=Linux,OU=LD,OU=Computers,OU=Scienze,OU=Unitn,dc=unitn,dc=it" --user-principal

Le parti in neretto vanno sostituite con i giusti valori a seconda dei casi…

Visto il bacco nella versione di samba di Debian 8 eseguire anche il comando:

net ads keytab create -P

Si ottiene in risposta un Warning ma tutto funziona a dovere.

Prova ad eseguire il comando klist -k per vedere cosa contiene il keytab

Esegui il comando:

timedatectl set-local-rtc 1

Per fare un test fare un ssh con un utente di dominio alla macchina e vedere se logga:

ssh [Domain_user]@localhost

Home e software remoto

A questo punto se tutto è andato bene possiamo montare le home e le cartelle di rete modificando il file /etc/fstab:

sci-ares.unitn.it:/local/local-ubuntu /usr/local nfs sec=sys 0 0
192.168.121.3:/mnt/Linux /usr/LDSS nfs sec=sys 0 0
sci-ares.unitn.it:/home /home nfs sec=krb5 0 0

e se tutto funziona con un mount -a si montano le home e il lavoro è finito….

aaa


Last updated: 14 Gennaio 2020 by Pierluigi Minati