Strumenti Utente

Strumenti Sito


software:samba

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

software/samba.txt · Ultima modifica: 2023/04/17 14:25 (modifica esterna)