===== Active directory ===== 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/ \\ ==== installazione di Debian ==== 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).\\ ==== preparazione sistema ==== 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 ==== predispongo i dati fondamentali ==== 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 \\ ==== installazione pacchetti ==== 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 ==== configurazione ==== 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 \\ ===== debian ===== 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...\\ ===== integrazione con ad ===== 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 ===== rifatto un po il tutto ===== 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 ==== procedura ==== 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 ==== altri appunti ultimi ==== con centos 7 per dare i diritti sulla partella per gli utenti di dominio:\\ chown "root:NOMEDOMINIO\\Domain Admins" /PERCORSOdirectory ==== altro su debian ==== 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 ==== idmap SAMBA ==== 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\\ ==== altre prove con debian ==== vedi qui: https://gurjap.org/samba-shares-with-active-directory-authentication/ \\