Samba come controller di dominio active directory
Questo progetto prevede l'installazione di Debian
l'avvio di samba come controller di dominio
bind come server dns del dominio
qualche appunto qui
https://sleeplessbeastie.eu/2022/05/11/how-to-create-samba-active-directory-server/
Scegliere la lingua
impostare hostname e dominio. possiamo già scegliere l'FQDN oppure lasciare debian come predefinito. Tanto verrà tutto modificato e controllato dopo.
configurare rete: se è attivo un dhcp si acquisirà automaticamente un indirizzo altrimenti si imposta un IP (nel mio caso di classe C). verrà comunque tutto controllato e corretto dopo.
proseguire con il resto dell'installazione. (non rivedo qui i passaggi fondamentali).
disattivazione ipv6 se non lo si vuole usare(aggiungere a /etc/sysctl.conf):
net.ipv6.conf.all.disable_ipv6 = 1
rendo immediatamente esecutiva la disattivazione del protocollo ipv6
sysctl -p
per comodità mia permetto a root di accedere in ssh (modifico /etc/ssh/sshd_config )
permitRootLogin yes
riavvio il servizio per attivare la modifica
systemctl restart sshd
aggiorno i repository
apt-get update
faccio l'upgrade del sistema
apt-get upgrade
imposto il nome host:
hostnamectl --static set-hostname adns1.dominio.mio
modifico /etc/hosts lasciando solo:
127.0.0.1 localhost
e commentando tutto il resto
.
assicurarsi che il servizio systemd-resolved sia disablilitato
systemctl status systemd-resolved.service
Il resolver DNS deve puntare al server DNS che verrà utilizzato in seguito come server d'inoltro quindi imposto nel /etc/resolv.conf :
nameserver 192.168.1.9
oppure anche altro dns pubblico. nel mio caso ho già un dns mio che risponde internamente al quell'indirizzo
assegnare ip statico si /etc/network/interface o su file specifico /etc/network/interface/nome
installo chrony come client e server NTP
apt-get install chrony
disabilito temporaneamente il servizio
systemctl disable --now chrony
installo il server DNS
apt-get install bind9 bind9utils
disabilito temporaneamente il servizio
systemctl disable --now named
installo samba che diventerà il mio server di dominio che implementa Active Directory e Kerberos che attiverà il servizio di tiket per la sicurezza di accesso alla directory
DEBIAN_FRONTEND=noninteractive apt-get install -y samba smbclient winbind krb5-user krb5-config
disabilito temporaneamente il servizio
systemctl disable --now samba-ad-dc.service smbd.service nmbd.service winbind.service
il comando
smbd -b
visualizza come è stato costruito samba, e quindi si vedono tutte le impostazioni di base
quindi permette di visualizzare le directory e i file sui quali lavora samba.
rimuovo la configurazione di default per samba
unlink /etc/samba/smb.conf
e kerberos
unlink /etc/krb5.conf
attenzione a inserire la giusta scheda di rete, il realm e il dominio. la password viene inserita ma poi non funziona.
samba-tool domain provision --realm DOMINIO.MIO \ --domain DOMINIO \ --server-role dc \ --dns-backend BIND9_DLZ \ --adminpass oct0passwOrd \ --use-rfc2307 \ --option="interfaces=lo ens33" \ --option="bind interfaces only=yes"
modificare il /etc/resolv.conf mettendo il search nel dominio e il nome stesso del server di cui prima ho impostato l'ip statico
search dominio.mio nameserver 192.168.1.181
copio il file di configurazione di default di kerberos nella posizione corretta
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
collego la tabella delle chiavi nell'apposita directory
ln -s /var/lib/samba/private/secrets.keytab /etc/krb5.keytab
se si vuole si può verificare il contenuto di /etc/krb5.keytab con
klist -k /etc/krb5.keytab
modificare /etc/samba/smb.conf aggiungendo il forwarder
# Global parameters
[global]
bind interfaces only = Yes
interfaces = lo ens33
dns forwarder = 192.168.1.9
netbios name = ADNS1
realm = DOMINIO.MIO
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
workgroup = DOMINIO
idmap_ldb:use rfc2307 = yes
[sysvol]
path = /var/lib/samba/sysvol
read only = No
[netlogon]
path = /var/lib/samba/sysvol/questre.labo/scripts
read only = No
manovre relative a ntp (la sincronizzazione del tempo in AD è fondamentale)
verificare qual'è la directory del socket segnato ntp per samba
samba -b | grep NTP_SIGND_SOCKET_DIR
se non esiste crearla (e normalmente per una installazione fresh come questa non esiste quindi crearla e assegnargli gli opportuni diritti)
mkdir /var/lib/samba/ntp_signd chgrp _chrony /var/lib/samba/ntp_signd chmod 750 /var/lib/samba/ntp_signd
eliminare questa voce in /etc/chrony/chrony.conf
sed -i -e "/\# Use Debian vendor zone./,+2d" /etc/chrony/chrony.conf
e aggiungere un nuovo file
vi /etc/chrony/sources.d/debian-pool.sources
.
pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst
aggiungere anche
vi /etc/chrony/conf.d/server.conf
.
bindaddress 192.168.1.181 allow 192.168.1.0/24 ntpsigndsocket /var/lib/samba/ntp_signd
aggiungere anche
vi /etc/chrony/conf.d/cmd.conf
.
bindcmdaddress /var/run/chrony/chronyd.sock cmdport 0
avviare il servizio
systemctl enable --now chrony
come verificato precedentemente con samba controllare la directory di lavoro di bind per samba
smbd -b | grep BINDDNS
in questo caso esiste già
verificare la versione di bind
named -v
e controllare nel file /var/lib/samba/bind-dns/named.conf se è abilitata la libreria corrispondente
aggiungere a /etc/bind/named.conf il percorso della directory bind per samba
include "/var/lib/samba/bind-dns/named.conf";
aggiungere a /etc/bind/named.conf.options la tabella delle chiavi di kerberos per gli aggiornamenti DNS (in fondo al file subito dopo “listen-on-v6 { any; };” )
tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
abilitare il dns
systemctl enable --now named
passiamo a samba
systemctl unmask samba-ad-dc.service
avviamo il servizio
systemctl enable --now samba-ad-dc.service
verificare lo stato del servizio
systemctl status samba-ad-dc.service
impostare la password dell'administrator
samba-tool user setpassword administrator
verificare la lista della zone
samba-tool dns zonelist adns1 -U administrator
dall'esito del comando possiamo vedere che manca la zona del reverse
quindi la creiamo
samba-tool dns zonecreate -U administrator adns1.dominio.mio 1.168.192.in-addr.arpa
controllare con dig e tutte le varie opzioni le risoluzioni ad esempio
dig adns1.dominio.mio +short
e anche le informazioni ads
net ads info net ads lookup
per tutta la gestione usare il comando samba-tool ricordandosi di aggiungere in fonro -U administrator per applicare modifiche cioè dando il comando come amministratore
Connettersi da linux verso cartelle condivise. (non è banale) almeno per quello che ho capito io.
Perchè se fossimo semplici utenti Windows non ci sarebbero problemi a collegarsi con l'esplorazione risorse a cartelle condivise senza protezioni quindi libere
Ma per linux dobbiamo far installare all'amministratore i seguenti pacchetti:
S.O.: Debian 8
Desktop: Xfce
installare fusesmb e smbclient
apt-get install fusesmb smbclient
accertarsi che il modulo fusesmb sia attivo all'avvio
far creare all'amministratore un gruppo utente “fuse”
groupadd fuse
far aggiungere dall'amministratore l'utente linux al gruppo “fuse” appena creato
usermod -a -G fuse nomesempliceutente
da utente creare una directory nella quale montare le cartelle condivise
mkdir /home/utente/CONDIVISI
infine creare il file /home/nomeutente/.smb/fusesmb.conf come semplice utente linux
vi /home/nomeutente/.smb/fusesmb.conf
inserire
[/192.168.1.xxx/cartelladiretecondivisa]
eseguire da semplice utente
fusesmb /home/utente/CONDIVISI
Per rendere automatica la connessione al login dell'utente con xfce eseguire i seguenti passaggi:
menu
impostazioni
sessione e avvio
Avvio automatico
aggiungi
nome:quello che vuoi
descrizione:quello che vuoi
comando:/usr/bin/fusesmb /home/utente/CONDIVISI
Non so se è una mancanza di xfce però è veramente macchinoso…
Questa parte è sperimentale e molto ambiziosa. (su Centos 7)
yum install krb5-workstation
modificare il file /etc/krb5.conf
yum install samba samba-client samba-winbind
modificare il file /etc/samba/smb.conf
modificare il file /etc/nsswith.conf
montare la cartella da condividere con queste opzioni:
mount /dev/drbd1 /cartella/ -o rw,acl,user_xattr
impostare subito l'hostname, l'ip statico, e il resolv.conf e il file hosts
disabilitare selinux
controllare la data e l'orario: l'ora non deve essere oltre i 5 minuti di differenza dal dominio
sistemare i repository
preparare lo storage facendolo trovare montato nel modo giusto
mount /dev/xxx /directorydacondividere -o rw,acl,user_xattr
disabilitare NetworkManager
yum install krb5-workstation pam_krb5 samba samba-client samba-winbind samba-winbind-clients
modificare i file
vi /etc/krb5.conf vi /etc/samba/smb.conf vi /etc/nsswitch.conf
avviare saba e winbind
service smb start service winbind start
aggiungere al dominio
net ads join -U Administrator
per verificare
getent passwd getent group wbinfo -u wbinfo -r net ads testjoin kinit -V Administrator@DOMINIO
eseguire necessariamente
setfacl -m g:DOMINIOSENZAESTENSIONE^domain\ admins:rwx /directorydacondividere setfacl -d -m g:DOMINIOSENZAESTENSIONE^domain\ admins:rwx /directorydacondividere
inserire nella sezione global di smb.conf:
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
commento
quardare sopratutto qui:
https://www.lorenzomonti.it/sistemi-operativi/creare-un-file-server-integrato-con-active-directory-utilizzando-linux-e-samba/
https://www.linuxtrent.it/documentazione/gnulinux/samba-come-condividere-cartelle-e-gestire-le-acl-estese-di-m-sfruttando-gli
http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/
https://www.ictpower.it/guide/autenticazione-di-sistemi-linux-verso-un-dominio-active-directory-con-winbind.htm
commento
authconfig-tui
[x] use winbind [x] Usa password MD5 [x] Usa password shadow [x] Usa l'autenticazione winbind
avanti
Modello di sicurezza (*) ads
Dominio: mettere il nome minuscolo del dominio senza .local Controllori di dominio: mettere il nome del server.dominio.local Reame ADS: mettere il nome MAIUSCOLO del dominio con anche .LOCAL (*) /bin/bash
unione al dominio
Si
mettere la password dell'Administrator
ok ok
verificare la riuscita della connessione al dominio windows
net ads testjoin
deve dire “Join is OK”
verificare anche la lettura dell'elenco gruppi e utenti con:
wbinfo -g wbinfo -u
installazione impostando l'hostname nodo.dominio.local
gateway ip 1
netmask ip 42
non modificare file hosts ne resolv.conf
installazione pacchetti
authconfig-tui
inserire associazione nome ip nel dns del server windows a manina
verificare net ads testjoin frequentemente e ping vari.
collegare seconda scheda di rete
fdisk
creare drbd con nomi host completi nodo.dominio.local
dare i diritti grant
net rpc rights grant "DOMINIO\Domain Admins" SeDiskOperatorPrivilege -U "DOMINIO\amministratore"
file smb.conf aggiungere:
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes winbind separator = ^ winbind enum users = yes winbind enum groups = yes
verificare frequentemente ping e connessione a dominio
una volta montata la directory
setfacl -d -m g:DOMINIO^domain\ admins:rwx /directory
una volta partita la condivisione controllare i diritti di condivisione e farli come nel vecchio server
poi da windows cambiare il propietario e assegnare i vari diritti ai gruppi
crare il cluster e le risorse.
prima di eseguire il cluster auth attivare il servizio pcsd
systemctl enable pcsd.service systemctl start pcsd.service
verificare i nodi con i nomi senza estensione dominio
pcs cluster auth nomenodo1 nomenodo2
creare il cluster
pcs cluster setup --name nomecluster nomenodo1 nomenodo2
avviare anche pacemaker su entrambi i nodi
pcs cluster start --all
con centos 7 per dare i diritti sulla partella per gli utenti di dominio:
chown "root:NOMEDOMINIO\\Domain Admins" /PERCORSOdirectory
dopo aver installato:
krb5-user realmd sssd-tools adcli packagekit samba-common samba-common-bin samba-libs resolvconf krb5-config winbind smblient
ho eseguito
realm join --user=mionome nomedominio.local
il 26-02-20 ho risolto il problema del mancato allineamento con i diritti di accesso ai dati del server 1 e del server cen2.
il problema era data dalla mappa di accesso ai file condivisi di samba.
la mappa viene gestita da winbind nel file /var/lib/samba/winbindd_idmap.tdb
viene gestita in quel file di default. altrimenti dovrebbe collegarsi al dominio, ma bisogna impostare diversamente da come ho fatto io il file smb.conf o comunque non erano allineati i file dei due server, probabilmente perchè quando davo i diritti di accesso su uno, l'altro era spento o non so…
fatto sta che è stato necessario allineare i due file dei due server nel seguente modo
fermare il servizio winbind e samba
backup di un file attraverso il comando
net idmap dump > nomefilebackup.bk
copiare il file sul server da allineare con scp
poi importare il file
net idmap restore nomefilebackup.bk
applicare la modifica con
net cache flush
riavviare i servizi winbind e samba