Samba4

Da sia.
Versione del 18 feb 2022 alle 10:10 di Malvezzi (discussione | contributi) (→‎Query ldap)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Installazione

apt-get install build-essential python-dev python-crypto libgpgme11-dev python-gpgme heimdal-clients libacl1-dev libblkid-dev libreadline-dev libgnutls28-dev libbsd-dev pkg-config libsystemd-dev libpam0g-dev
./configure --with-gpgme --enable-debug --enable-gnutls --enable-selftest --with-quotas --with-systemd --prefix=/opt/samba
make
make install

bind9

apt-get install bind9

Modificare il file: /etc/bind/named.conf:

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/opt/samba-4.1.1/private/named.conf";

(cioé aggiungere l'ultima riga che è sarà citata nel comando di provisioning)

Modificare il file: /etc/bind/named.conf.options

 options {
	directory "/var/cache/bind";
	forwarders {
		155.185.1.2;
		155.185.1.5;
	};
        allow-query {155.185.0.0/16;};
#	dnssec-validation auto;
	tkey-gssapi-keytab "/opt/samba/private/dns.keytab";
	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { none; };
 };

Prove del bind

host -t SRV _ldap._tcp.ad.unimore.it.

nsupdate

francesco@ateneo:~$ nsupdate -g -v
> server ateneo.ad.unimore.it
> zone ad.unimore.it
> update delete wimpyshell.ad.unimore.it A
> show
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;ad.unimore.it.			IN	SOA

;; UPDATE SECTION:
wimpyshell.ad.unimore.it. 0	ANY	A	

> send

Oppure, piu' semplice: scrivere i comandi nel file nsupdate.cmd e lanciare:

nsupdate -g -v nsupdate.cmd

Provision

Il nome del dominio deve essere diverso da quanto risulta da hostname -s sul pdc.

sudo ./bin/samba-tool domain provision --dns-backend=BIND9_DLZ --host-ip=155.185.253.28 \
--realm=ATENEO.AD --domain=ATENEOAD --use-rfc2307 --adminpass=k2zL16ekuJs --server-role=dc

In cui domain è il dominio a cui gli utenti windows fanno il join, mentre realm è un dominio DNS fittizio creato per l'inserimento dei record ddns dei client.

Configurazione del resolv.conf

domain ateneo.ad
nameserver 127.0.0.1
nameserver 155.185.1.2
nameserver 155.185.1.5

Controllare anche in /etc/network/interfaces che non ci siano gli IP statici dei nameserver.

Modifica del smb.conf

Aggiungere le righe (in global):

#dns forwarder = 155.185.1.2
interfaces = eth0, lo
log level = 3
log file = /var/log/samba/log.%m

Firewall

  • Dns 53/UDP 53/TCP
  • LDAP 389/TCP e 389/UDP
  • Samba 137/UDP, 138/UDP, 139/TCP, 445/TCP
  • Kerberos 88/TCP e 88/UDP
  • Kadmin 1024/TCP
  • 3268/TCP
  • RPC: 49152:65535/TCP

Errori

  • kinit: krb5_get_init_creds: Server (krbtgt/ATENEO.AD@ATENEO.AD) unknown

Il nome del realm è diverso da quello atteso. Nel caso in oggetto il provisioning era con il nome in minuscolo o forse era unimore.it. In ogni caso la soluzione è stata cancellare l'intero albero di installazione di samba4, rifare make install e rifare il provisioning

  • TSIG error with server: tsig verify failure

Non funziona il ddns. Ho risolto passando dal dns builtin al bind9.8. Forse invece la soluzione era il interfaces = eth0

  • Server not found in Kerberos database

Un client non riesce a fare un ldapsearch -Y GSSAPI e riceve questo errore: accertarsi di avere il pacchetto libsasl2-modules-gssapi-heimdal e non libsasl2-modules-gssapi-mit

  • i client non riescono a risolvere in ipv6 il nome del PDC:
 host ateneo.ateneo.ad ateneo.dmz-int.unimo.it
 Using domain server:
 Name: ateneo.dmz-int.unimo.it
 Address: 155.185.253.28#53
 Aliases: 

 ateneo.ateneo.ad has address 155.185.253.28
 ateneo.ateneo.ad has IPv6 address ::1

Cancellare la entry ipv6 sbagliata (temporaneamente):

sudo ./bin/samba-tool dns query 155.185.253.28 ateneo.ad ateneo AAAA
sudo ./bin/samba-tool dns delete localhost ateneo.ad ateneo AAAA 0000:0000:0000:0000:0000:0000:0000:0001

Cancellare la entry ipv6 sbagliata (definitivamente): editare il file: private/dns_update_list e togliere le righe AAAA

Gestione

Creazione delle username

./bin/samba-tool user create francesco
./bin/smbpasswd francesco
./bin/samba-tool group addmembers 'Domain Admins' francesco
./bin/samba-tool user setexpiry --noexpiry francesco
./bin/samba-tool group listmembers 'Domain Admins'
./bin/samba-tool domain passwordsettings show
./bin/samba-tool domain passwordsettings set --complexity=off
./bin/samba-tool domain passwordsettings set --min-pwd-length=5
./bin/samba-tool domain passwordsettings set --max-pwd-age=999

DNS

./bin/samba-tool dns query addc.unimore.it  unimore.it ldap ALL
./bin/samba-tool dns zonecreate addc.unimore.it 253.185.155.in-addr.arpa
./bin/samba-tool dns add localhost 253.185.155.in-addr.arpa 17 PTR ldap.unimore.it -U francesco
sudo ./bin/samba-tool dns add localhost ad.unimore.it pod A 155.185.89.2 -Ufrancesco
sudo ./bin/samba-tool dns zonecreate localhost 89.185.155.in-addr.arpa -Ufrancesco
sudo ./bin/samba-tool dns add localhost 89.185.155.in-addr.arpa 1 PTR ateneo.ad.unimore.it -Ufrancesco

./bin/samba-tool dns add ateneo.ad.unimore.it ad.unimore.it vic20 A 155.185.89.3 -k yes
./bin/samba-tool dns add ateneo.ad.unimore.it 89.185.155.in-addr.arpa 3 PTR vic20.ad.unimore.it -k yes

Query ldap

Da fare (tenere d'occhio i log in /var/log/auth.log):

sudo apt-get install libsasl2-modules-gssapi-heimdal
ldbsearch -H ldap://addc.unimore.it -U administrator
ldbsearch -k yes -H ldap://addc.unimore.it
# se uso -k yes (= kerberos) non posso usare lo switch -U 
ldapsearch -N -Y GSSAPI -b dc=unimore,dc=it -H ldap://addc.unimore.it 'cn=malvezzi'
# -N significa non fare il reverse lookup: è fondamentale

controllare che il nome del server sia quello delle AD, non l'equivalente dns.

Server ssh

Fare login su una macchina linux con le credenziali kerberos di samba4.

Su ateneo.ad:

cd /opt/samba
sudo ./bin/samba-tool user create --random-password OMNIBUS$
sudo ./bin/samba-tool spn add host/omnibus.dmz-int.unimo.it OMNIBUS$
sudo ./bin/samba-tool spn list OMNIBUS$
sudo ./bin/samba-tool domain exportkeytab ~/krb5.keytab.omnibus --principal=host/omnibus.dmz-int.unimo.it
sudo ./bin/samba-tool domain exportkeytab ~/krb5.keytab.omnibus --principal=OMNIBUS$

Questo crea un spn per il server ssh omnibus.dmz-int.unimo.it; il keytab deve contenere anche OMNIBUS$ se si conta di essere un client nfsv4. Trasferire il file krb5.keytab su server ssh e metterlo in /etc (root:root)

Sul server ssh:

sudo apt-get install heimdal-clients

modificare il file /etc/ssh/sshd_config:

KerberosAuthentication yes
GSSAPIAuthentication yes

Sul client ssh:

sudo apt-get install heimdal-clients
kinit
ssh ...

nel file /etc/ssh/ssh_config l'impostazione:

GSSAPIAuthentication yes

e' gia' corretta in Debian

NFSv4

Montare una share:

sudo mount -t nfs4 -o sec=krb5 kmaster.dmz-int.unimo.it:/floppy /floppy/


apache2

sudo apt-get install libapache2-mod-auth-kerb

su ateneo creare il principal per HTTP/fqdn@REALM:

cd /opt/samba
sudo ./bin/samba-tool spn add HTTP/omnibus.dmz-int.unimo.it OMNIBUS$
sudo ./bin/samba-tool domain exportkeytab ~/apache2.keytab --principal=HTTP/omnibus.dmz-int.unimo.it

portare il keytab sul server apache in /etc/apache2, dare la ownership a www-data, poi creare una risorsa protetta tipo:

 <Location /kerberos>
  AuthType Kerberos
  AuthName "Kerberos Login"
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  KrbAuthRealms AD.UNIMORE.IT
  Krb5KeyTab /etc/apache2/apache2.keytab
 # require valid-user # tutti gli utenti
  require malvezzi@AD.UNIMORE.IT # uno o piu' utenti
 </Location>

Da risolvere

  • connessione ldap alle AD in chiaro: non riesco a compilare samba4 con le gnutls

28/11/2013: risolto: c'era bisogno di pkg-config

  • aggiunta di schemi a samba4: il comando di ldbmodify aggiunge gli schemi, che non sono recepiti

28/11/2013: risolto: sbagliavo ad aggiungere lo schema allo sam.tdb (lo aggiungevo a sam_tdb).

  • msktutil da linux non funziona

2/12/2013: funziona se il dns primario e' 155.185.89.1

  • bisogna creare le pagine man dei comandi samba4