Samba4

Da MontelLUG.

Fonti:

Config:

  • Server: Debian 7.1.0 - Bind9.8.6 - Samba4 (IP: 192.168.1.100 - srv.agno.lan)
  • Client Linux: Lubuntu 13.04
  • Client Windows: Win XP Pro SP3

Server

Installazione Bind9

Configurare Bind9 dopo apt-get install bind9 (da qui: http://guide.debianizzati.org/index.php/Un_server_DNS_e_DHCP_su_Debian):

  • named.conf:

File immutato.

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
  • named.conf.local:
zone "agno.lan" {
        type master;
        file "/etc/bind/db.agno";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.1";
};
  • named.conf.options:

Aggiunto i forwarders, il resto era il file di default.

options {
        directory "/var/cache/bind";
         forwarders {
                8.8.8.8;
         };
        dnssec-validation auto;
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};
  • /etc/bind/db.agno
$ORIGIN .
; ---Area 1---
$TTL 86400      ; 1 day
; ---Area 2---
agno.lan       IN      SOA     srv.agno.lan. root.agno.lan. (
                                  2007081501 ; serial
                                  86400      ; refresh (1 giorno)
                                  28800      ; retry (8 ore)
                                  604800     ; expire (1 settimana)
                                  86400      ; minimum (1 giorno)
                                );
; ---Area 3---
                IN      NS      srv.agno.lan.

; ---Area 4---
$ORIGIN agno.lan.
srv             IN      A       192.168.1.100
agno          IN      A       192.168.1.99
  • /etc/bind/db.192.168.1
$TTL    604800
@       IN      SOA     srv.agno.lan.       root.agno.lan. (
                                2007081501   ; serial
                                604800       ; refresh
                                86400        ; retry
                                2419200      ; expire
                                604800       ; negative cache ttl
                                );
@       IN      NS      srv.agno.lan.
100       IN      PTR     srv.agno.lan.
99       IN      PTR     agno.agno.lan.

Installazione di Samba 4

(da qui: https://wiki.samba.org/index.php/Samba4/HOWTO)

apt-get install samba4

Se alla file da qualche errore, rimuovere il file /etc/samba/smb.conf e ripetere il comando apt-get installa samba4.

Andare in /usr/share/samba/setup e dare il comando ./provision

Rispondere:

  • Realm: AGNO.LAN
  • Domain: AGNO
  • Server Role: dc

Il file /etc/samba/smb.conf dovrebbe contenere almeno queste direttive (notare che non sono tutte generate in automatico da provision):

[global]
  workgroup = AGNO
  realm = AGNO.LAN
  server role = domain controller
  server services = +smb -s3fs
  dcerpc endpoint servers = +winreg +srvsvc
  idmap_ldb:use rfc2307 = yes

[sysvol]
  path = /var/lib/samba/sysvol
  read only = no

[netlogon]
  path = /var/lib/samba/sysvol/AGNO.LAN/scripts
  read only = no
  • L'ultima opzione di [global] serve per peremttere il login ai client Linux
  • server services e dcerpc endpoint servers le ho dovute usare con Debian7 come server perché quando con Win impostavo il agno.lan come dominio, mi diceva che non riusciva a trovare il percorso di rete. Se si utilizza Ubuntu come server forse non servono.

A questo punto bisogna tornare a modificare i file di Bind. In partciolare:

  • in named.conf commentare la riga relativa a named.conf.local e aggiungere include "/var/lib/samba/private/named.conf;":
include "/etc/bind/named.conf.options";
//include "/etc/bind/named.conf.local";
include "/var/lib/samba/private/named.conf";
include "/etc/bind/named.conf.default-zones";
  • in named.conf.options aggiungere tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";:
options {
        directory "/var/cache/bind";
        forwarders {
                8.8.8.8;
         };
        tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
        dnssec-validation auto;
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};
  • scommentare la riga gisuta seconda della vostra versione di bind9 nel file /var/lib/samba/private/named.conf:
dlz "AD DNS Zone" {
    # For BIND 9.8.0
    database "dlopen /usr/lib/i386-linux-gnu/samba//bind9/dlz_bind9.so";

    # For BIND 9.9.0
    # database "dlopen /usr/lib/i386-linux-gnu/samba//bind9/dlz_bind9_9.so";
};

Riavviare tutti i servizi con:

  • /etc/init.d/bind9 restart
  • /etc/init.d/samba restart

DNS Testing:

$ host -t SRV _ldap._tcp.agno.lan.
_ldap._tcp.agno.lan has SRV record 0 100 389 srv.agno.lan.

$ host -t SRV _kerberos._udp.agno.lan.
_kerberos._udp.agno.lan has SRV record 0 100 88 srv.agno.lan.

$ host -t A srv.agno.lan.
srv.agno.lan has address 192.168.1.100

Samba testing:

smbclient4 -L localhost -U%

Sharename       Type       Comment
	---------       ----       -------
	homes           Disk       Home Directories
	printers        Printer    All Printers
	print$          Disk       Printer Drivers
	sysvol          Disk       
	netlogon        Disk       
	profiles        Disk       
	IPC$            IPC        IPC Service
REWRITE: list servers not implemented

E la configurazione di Samba base è fatta! Ora potete provare a loggarvi con il client Windows seguendo i passi qui descritti #Logging_in

Kerberos

Installiamo:

  • apt-get install krb5-user

Come deve essere /etc/krb5.conf (e /var/lib/samba/private/krb5.conf):

[libdefaults]
        default_realm = AGNO.LAN
        dns_lookup_realm = false
        dns_lookup_kdc = true

Init:

  • kinit administrator@AGNO.LAN

Creazione utente e ticket da dare ai client, occhio che è prezioso. Questo ticket in particolare ci servirà per i servizi di LDAP:

  • samba-tool user add ldap-service
  • samba-tool user setexpiry ldap-service --noexpiry
  • samba-tool domain exportkeytab /etc/nslcd.keytab --principal=ldap-service

NFS - Export *nix homes

Installare NFS-Server:

  • apt-get install nfs-kernel-server

Aggiunge questa riga in /etc/exports:

/home/AGNO 192.168.1.0/24(rw,sync,sec=none:sys:krb5:krb5i:krb5p,no_subtree_check,insecure)

Dove dentro /home/AGNO ci sono le home degli utenti LDAP. Per far si che la home venga creata al primo avvio, aggiungere in /etc/pam.d/common-account su tutti i client:

session    required   pam_mkhomedir.so skel=/etc/skel/ umask=0022

Non testato.

Dare un occhio a AutoFS per risparmiare banda(?)

Client

Client Windows

Logging in

  • Nella scheda di rete, nella configurazione di TCP/IP impostare come DNS il server con bind (192.168.1.100) e controllare su Avanzate che sia abilitato NetBios
  • Tasto destro su Risorse del Computer - sulla seconda scheda, cliccare Cambia... e mettere come Dominio agno.lan
  • Nel popup dove richiederà Utente e Password, mettere: administrator e la password scelta durante l'installa di Samba4
  • Pregare
  • Se dopo una decina di secondi, sentite un bel suono e vedete la scritta OK! Il gioco è fatto!!
  • Provate a loggarvi con utente: administrator e la password scelta durante l'installa di Samba4
  • Per aggiungere nuovi utenti, utilizzare ADUC da Win (scaricabile gratuitamente da qui: http://www.microsoft.com/en-us/download/details.aspx?id=16770 e poi lo troverete sotto: Pannello di Controllo - Tools amministrazione...) oppure dal server Samba con il comando: samba-tool user add nomeutente

Roaming profile

Guarda qui: https://wiki.samba.org/index.php/Samba_%26_Windows_Profiles#Profiles_share_on_a_Samba_4.x_server

Di base, si aggiunge questo a smb.conf sul server:

[Profiles]
     path = /srv/samba/Profiles/
     read only = no

Verificare con esplora risorse in \\\srv la presenza delle cartelle condivise dal file smb.conf e settare in modo corretto i permessi, facendo tasto destro da Win. Chiaramente è bene farlo quando si è collegati con l'utente Administrator.

Poi:

  • aprire ADUC
  • cliccare con il testo destro su un account di un utente e scegliere "Proprietà"
  • andare nel tab "Profilo" e riempire il path dello "User profile" tipo: \\\srv\Profiles\%USERNAME%

Queste operazioni si possono fare anche selezionando più utenti contemporaneamente, grazie alla comodità di: %USERNAME%

Client Linux

Posix User

La prima cosa da fare è aggiungere un POSIX User su LDAP (server). Se magari si ha un manager web tipo GoSA o PHPLDAPADMIN funzionante (non è il nostro caso), si riesce a fare tranquillamente da li:

  • samba-tool user add samu
  • samba-tool user setexpiry samu --noexpiry
  • samba-tool group add linari
  • mkdir /home/AGNO/samu
  • vi /tmp/user.ldif

e buttarci dentro:

dn: cn=samu,cn=Users,dc=agno,dc=lan
changetype: modify
add: objectClass
objectClass: posixAccount
-
add: uidNumber
uidNumber: 3001
-
add: gidNumber
gidNumber: 3000
-
add: unixHomeDirectory
unixHomeDirectory: /home/samu
-
add: loginShell
loginShell: /bin/bash

e vi /tmp/group.ldif:

dn: cn=linari, cn=Users,dc=agno,dc=lan
changetype: modify
add: objectclass
objectclass: posixGroup
-
add: gidNumber
gidnumber: 3000
  • ldbmodify -H ldap://srv -k yes /tmp/group.ldif (se non va, date prima un kinit administrator)
  • ldbmodify -H ldap://srv -k yes /tmp/user.ldif (se non va, date prima un kinit administrator)

Logging in

Installare tutti i pacchetti necessari e rispondere in modo corretto alle domande, magari prendendo spunto dai passaggi precendenti (es. realm=AGNO.LAN e domain=AGNO) e successivi (es. per nsswitch.conf):

sudo apt-get install libnss-ldapd krb5-user libsasl2-modules-gssapi-mit  kstart samba4-clients

Verificare il contenuto di dei file di PAM:

  • cat /etc/pam.d/common-auth | grep ldap
auth	[success=1 default=ignore]	pam_ldap.so minimum_uid=1000 use_first_pass
  • cat /etc/pam.d/common-account | grep ldap
account	[success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]	pam_ldap.so minimum_uid=1000
  • cat /etc/pam.d/common-session | grep ldap
session	[success=ok default=ignore]	pam_ldap.so minimum_uid=1000

Controllare nsswitch:

  • cat /etc/nsswitch.conf
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

hosts:          files dns
networks:       files

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

netgroup:       nis

Sistemare nslcd, demone incaricato di fare le query LDAP:

  • sudo vi /etc/nslcd.conf
uid nslcd
gid nslcd

uri ldap://192.168.1.100
base dc=agno,dc=lan

map passwd uid samAccountName
map passwd homeDirectory unixHomeDirectory

sasl_mech GSSAPI
sasl_realm AGNO.LAN
krb5_ccname /var/run/nslcd/nslcd.tkt
  • sudo vi /etc/default/nslcd
K5START_START="yes"
K5START_BIN=/usr/bin/k5start
K5START_KEYTAB=/etc/nslcd.keytab
K5START_PRINCIPAL=ldap-service

Kerberos stuff:

  • sudo vi /etc/krb5.conf
[libdefaults]
        default_realm = AGNO.LAN
        dns_lookup_realm = false
        dns_lookup_kdc = true
  • sudo scp root@192.168.1.100:/etc/nslcd.keytab /etc/nslcd.keytab
  • sudo kinit -k -t /etc/nslcd.keytab -p ldap-service/srv.agno.lan@AGNO.LAN

Modificare il file di configurazione del DM:

  • sudo vi /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=lightdm-gtk-greeter
user-session=Lubuntu
greeter-show-manual-login = true
  • sudo net ads join -UAdministrator anche se è sempre fallito questo comando...

Inizializzare Kerberos:

  • kinit administrator

Modificare ldap.conf:

  • sudo vi /etc/ldap/ldap.conf
BASE    dc=agno,dc=lan
URI     ldap://srv.agno.lan

TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

Samba:

  • sudo vi /etc/samba/smb.conf:
[global]
  workgroup = AGNO
  realm = AGNO.LAN
  security = ADS
  kerberos method = system keytab

Restartare i servizi:

  • sudo service nslcd restart

Aggiungere il nome e IP del dc:

  • sudo vi /etc/hosts
127.0.0.1       localhost
127.0.1.1       agno-lubu-virt.agno.lan agno-lubu-virt
192.168.1.100   srv.agno.lan

Verificare il funzionamento di LDAP:

  • ldapsearch -H ldap://srv.agno.lan
  • getent passwd

L'ultimo comando dovrebbe ritornare anche gli utenti di LDAP.

Riavviate e...ora potete provare la loggarvi, magari provate prima con login testuale per vedere ententuali errori.

P.S. anche qui sulle impostazioni della scheda di rete va impostato il DNS a 192.168.1.100

Export home utenti

Aggiungere a /etc/fstab la seguente riga:

srv.agno.lan:/home/	/home/	nfs4	_netdev,auto	0	0

Occhio che forse è melgio spostare le home da qualche altra parte, altrimenti così si perdono gli utenti del sistema locale.