24/05/2012
791522
Alessandro
Brusò
Installazione di una piattaforma Linux
Server
LDAP
07/04/2012
File
Server
Amministratore di sistema
Domain
Controller
2
1
24/05/2012
1
• Analisi
2
• Creazione del server
virtuale
3
• Installazione e
configurazione dei servizi
07/04/2012
Amministratore di sistema
3
Servizi
Configurazione di rete
Server LDAP (OpenLDAP)
File Server (Samba)
Domain Controller (Samba)
07/04/2012
Amministratore di sistema
4
2
24/05/2012
Configurazione di rete
Nelle slide precedenti sono state abilitate due schede di rete per condividere
la connessione Wi-Fi. Come prima cosa bisogna configurarle:
sudo nano /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# Interfaccia esterna
auto eth0
iface eth0 inet dhcp
# The secondary network interface
# Interfaccia interna
auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Ctrl-O
Salva
Ctrl-X
Esci
sudo /etc/init.d/networking restart
07/04/2012
Amministratore di sistema
5
LDAP
LDAP è l’acronimo di Lightweight Directory Access Protocol (protocollo
leggero di accesso alle directory). È un protocollo standard che fornisce un
efficiente algoritmo di ricerca per l’interrogazione dei servizi di directory
Oltra alla ricerca è possibile inserire/modificare/eliminare informazioni
LDAP è solitamente utilizzato per l’autenticazione degli utenti e realizza l’SSO
(Single Sign-On) ovvero tramite un’unica autenticazione un utente può
accedere a tutte le risorse informatiche alle quali è abilitato
LDAP è client-server: un client LDAP invia una richiesta ad un server LDAP che
la processa, accede ad un directory database e restituisce i risultati
È una versione semplificata del protocollo X.500
https://help.ubuntu.com/10.04/serverguide/C/network-authentication.html
07/04/2012
Amministratore di sistema
6
3
24/05/2012
LDAP
Le informazioni vengono memorizzate in una struttura gerarchica, il DIT
Directory Information Tree (albero delle informazioni di una directory)
Una directory riservata (cn=config) nel DIT permette di configurare
dinamicamente slapd senza dover riavviare il servizio
L’informazione all’interno di una directory è organizzata in elementi (entry)
Ogni entry è un insieme di attributi
Ad ogni livello esiste un Relative Distinguished Name (RDN) che lo identifica
L’unione degli RDN presi in successione dalla foglia alla radice costituisce il
Distinguished Name (DN)
http://it.wikipedia.org/wiki/LDAP
07/04/2012
Amministratore di sistema
7
Open LDAP
Open LDAP è una implementazione open source di LDAP
È costituito da tre componenti principali:
• slapd (stand alone LDAP daemon), il demone LDAP
• le librerie che implementano il protocollo LDAP
• I software client per la gestione, l’interrogazione e la manutenzione del
database (ldapsearch, ldapadd, ldapdelete, …)
http://it.wikipedia.org/wiki/OpenLDAP
http://www.openldap.org/
07/04/2012
Amministratore di sistema
8
4
24/05/2012
LDAP: Installazione
Installazione dei pacchetti
sudo apt-get install slapd
ldap-utils db4.8-util
07/04/2012
Amministratore di sistema
9
LDAP: Configurazione
Configurazione dei pacchetti
sudo dpkg-reconfigure
slapd
07/04/2012
Amministratore di sistema
10
5
24/05/2012
LDAP: Configurazione
Configurazione dei pacchetti
Omettere la configurazione del
server LDAP?
Selezionare No
Premere Invio
07/04/2012
Amministratore di sistema
11
LDAP: Configurazione
Configurazione dei pacchetti
Eliminare il database quando
slapd verrà disinstallato?
Selezionare No
Premere Invio
07/04/2012
Amministratore di sistema
12
6
24/05/2012
LDAP: Configurazione
Configurazione dei pacchetti
Permettere l’utilizzo del
protocollo LDAPv2 (obsoleto)?
Selezionare No
Premere Invio
07/04/2012
Amministratore di sistema
13
LDAP: Schemi
La configurazione di default è minimale e serve solo a far partire il servizio
Aggiungete i seguenti file schema:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Cos’è un file schema?
LDAP raccoglie informazioni sulle risorse presenti in rete, lo schema è il
tracciato record che descrive i campi delle risorse
L’estensione LDIF sta per Lightweight Data Interchange Format
07/04/2012
Amministratore di sistema
14
7
24/05/2012
LDAP: Database
Preparare uno script per il backend
cd /etc/ldap
sudo nano db.ldif
# Load dynamic backend modules
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb
# Create the database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
07/04/2012
Amministratore di sistema
15
LDAP: Database
Lo script continua…
In evidenza: il dominio, l’amministratore LDAP e la sua password
olcSuffix: dc=dominio,dc=it
olcRootDN: cn=admin,dc=dominio,dc=it
olcRootPW: dominiopwd
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid eq,pres,sub
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq
Ctrl-O per salvare e Ctrl-X per uscire da nano
07/04/2012
Amministratore di sistema
16
8
24/05/2012
LDAP: Database
Lanciare lo script
sudo ldapadd –Y
EXTERNAL –H ldapi:///
-f db.ldif
07/04/2012
Amministratore di sistema
17
LDAP: Configurazione di base
Password crittografata
slappasswd -h {MD5}
-s dominiopwd
Verrà visualizzata la password
crittografa e quest’ultima andrà
inserita nel file di configurazione
di base
07/04/2012
Amministratore di sistema
18
9
24/05/2012
LDAP: Configurazione di base
Preparare lo script per il frontend con la configurazione di base
cd /etc/ldap
sudo nano base.ldif
In evidenza la password crittografata
ricavata con slappasswd
dn: dc=dominio,dc=it
objectClass: dcObject
objectClass: organization
o: dominio.it
dc: dominio
description: Dominio
dn: cn=admin,dc=admin,dc=it
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {MD5}lIc0QwP/2k3HX5n+lwzefA==
description: LDAP administrator
07/04/2012
Amministratore di sistema
19
LDAP: Configurazione di base
Lanciare lo script
sudo ldapadd –Y EXTERNAL –
H ldapi:/// -f base.ldif
07/04/2012
Amministratore di sistema
20
10
24/05/2012
LDAP: ACL
ACL acronimo di Access Control List, serve per regolamentare l’accesso alle
directory. Create il file di configurazione: sudo nano config.ldif
dn: cn=config
changetype: modify
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}lIc0QwP/2k3HX5n+lwzefA==
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess
07/04/2012
Amministratore di sistema
21
LDAP: ACL
Lanciare lo script
sudo ldapadd –Y
EXTERNAL –H ldapi:///
-f config.ldif
07/04/2012
Amministratore di sistema
22
11
24/05/2012
LDAP: ACL
ACL di lettura e scrittura
sudo nano acl.ldif
Nota: i comandi olcAccess vanno su un’unica riga
dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=dominio,dc=it"
write by anonymous auth by self write by * none
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=dominio,dc=it" write by * read
07/04/2012
Amministratore di sistema
23
LDAP: ACL
Lanciare lo script
sudo ldapmodify –x –D
cn=admin,cn=config –W
–f acl.ldif
07/04/2012
Amministratore di sistema
24
12
24/05/2012
LDAP
Sbagliato qualcosa?
Potete ripetere la procedura dall’inizio avendo cura prima di rimuovere e poi
di reinstallare ldap
sudo apt-get remove slapd --purge
sudo apt-get install slapd
07/04/2012
Amministratore di sistema
25
LDAP: NSS
Il Network Service Switch determina l’ordine delle ricerche effettuate quando
viene richiesta una certa informazione
Modificare il file nsswitch.conf in modo che la precedenza spetti ai file locali e,
in seconda battuta, usi LDAP per la risoluzione di utenti, password e gruppi.
Con la seguente modifica, la precedenza spetti sempre ai file locali
(/etc/passwd per gli utenti, /etc/shadow per le password, /etc/group per i
gruppi), permettendo l’autenticazione dell’amministratore anche qualora il
servizio LDAP non risultasse disponibile
07/04/2012
Amministratore di sistema
26
13
24/05/2012
LDAP: NSS
Meglio fare un backup del file originale prima di modificarlo
sudo cp /etc/nsswitch.conf
/etc/nsswitch.conf.bkp_20120407
Procedere con la modifica al file, sostituendo compat con files ldap
sudo nano /etc/nsswitch.conf
passwd: compat
group: compat
shadow: compat
07/04/2012
passwd: files ldap
group: files ldap
shadow: files ldap
Amministratore di sistema
27
LDAP: PAM
Pluggable Authentication Modules (PAM) è un meccanismo per integrare più
schemi di autenticazione a basso livello in un’unica API ad alto livello,
permettendo a programmi che necessitino di una forma di autenticazione, di
essere scritti indipendentemente dallo schema di autenticazione sottostante
utilizzato
Installate il software necessario:
sudo apt-get install libpam-ldap libnss-ldap auth-clientconfig
07/04/2012
Amministratore di sistema
28
14
24/05/2012
LDAP: PAM Configurazione
LDAP Server URI
ldapi:///localhost
07/04/2012
Amministratore di sistema
29
LDAP: PAM Configurazione
DN of the search base:
dc=dominio,dc=it
07/04/2012
Amministratore di sistema
30
15
24/05/2012
LDAP: PAM Configurazione
LDAP version:
3
07/04/2012
Amministratore di sistema
31
LDAP: PAM Configurazione
Make local root database admin:
Yes
07/04/2012
Amministratore di sistema
32
16
24/05/2012
LDAP: PAM Configurazione
LDAP database require login?
No
07/04/2012
Amministratore di sistema
33
LDAP: PAM Configurazione
LDAP account for root:
cn=admin,dc=dominio,dc
=it
07/04/2012
Amministratore di sistema
34
17
24/05/2012
LDAP: PAM Configurazione
LDAP root account password:
alessandro
07/04/2012
Amministratore di sistema
35
LDAP: PAM Configurazione
Le modifiche vengono salvate nel file /etc/ldap.conf
Fate un backup del file /etc/ldap/ldap.conf
sudo cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.bkp_20120407
Quindi sovrascrivere il file /etc/ldap/ldap.conf
sudo cp /etc/ldap.conf /etc/ldap/ldap.conf
07/04/2012
Amministratore di sistema
36
18
24/05/2012
LDAP: Profilo
Create il profilo
sudo nano /etc/auth-client-config/profile.d/ldap_profile
[ldap_profile]
nss_passwd=passwd: files ldap
nss_group=group: files ldap
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: files ldap
07/04/2012
Amministratore di sistema
37
LDAP: Profilo
Create il profilo
pam_auth=auth
auth
auth
auth
auth
pam_account=account
account
account
pam_password=password
password
password
07/04/2012
required
sufficient
required
sufficient
required
sufficient
sufficient
required
sufficient
sufficient
required
pam_env.so
pam_unix.so likeauth nullok
pam_group.so use_first_pass
pam_ldap.so use_first_pass
pam_deny.so
pam_unix.so
pam_ldap.so
pam_deny.so
pam_unix.so nullok md5 shadow
pam_ldap.so use_first_pass
pam_deny.so
Amministratore di sistema
38
19
24/05/2012
LDAP: Profilo
Create il profilo
pam_session=session
session
skel=/etc/skel/
session
session
required
required
pam_limits.so
pam_mkhomedir.so
required
optional
pam_unix.so
pam_ldap.so
Lanciate lo script
sudo auth-client-config –a –p ldap_profile
07/04/2012
Amministratore di sistema
39
LDAP
Riavviare il servizio:
sudo /etc/init.d/slapd restart
Test del servizio
ldapsearch -x
Non dovrete ottenere errori
07/04/2012
Amministratore di sistema
40
20
24/05/2012
SAMBA
Scopo: interoperabilità tra Windows e Linux nei servizi di autenticazione e
condivisione di file e stampanti da una qualsiasi piattaforma TCP/IP enabled.
Limiti
Alcune funzionalità di Active Directory non sono presenti in Samba
Ad esempio mancano i gruppi nidificati e le Group Policy
Vantaggi
 Risparmio sulle licenze
 Single Sign-On: con OpenLdap c’è un unico repository di utenti e password
per tutti i servizi e i server aziendali, sia Windows che Linux
07/04/2012
Amministratore di sistema
41
SAMBA: Installazione
Installazione dei pacchetti
sudo apt-get install samba samba-doc smbclient smbldap-tools
smbldap-tools sono script che permettono di gestire gruppi utenti e gruppi
Samba/Unix salvando i dati sull’albero LDAP anziché sui file /etc/passwd,
/etc/shadow e /etc/group
In pratica sostituiscono i comandi Linux di gestione degli utenti
Gli script vengono installati in /usr/bin e i file di configurazione in
/etc/smbldap-tools
07/04/2012
Amministratore di sistema
42
21
24/05/2012
SAMBA: Schema
Nello schema Samba sono specificati i campi per il nome utente, la password,
la home, i gruppi, … che servono per memorizzare i dati nell’albero LDAP
Il file samba.schema è già stato installato
Copiatelo nella directory di openLDAP e decomprimetelo
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz
/etc/ldap/schema/
sudo gzip –d /etc/ldap/schema/samba.schema.gz
07/04/2012
Amministratore di sistema
43
SAMBA: OpenLDAP Schema
Inserire le informazioni per Samba nel Directory Information Tree di LDAP
nano /tmp/convert
Ecco lo script:
include
include
include
include
include
07/04/2012
/etc/ldap/schema/core.schema
/etc/ldap/schema/collective.schema
/etc/ldap/schema/corba.schema
/etc/ldap/schema/cosine.schema
/etc/ldap/schema/duaconf.schema
Amministratore di sistema
44
22
24/05/2012
SAMBA: OpenLDAP Schema
Lo script continua…
include
include
include
include
include
include
include
include
/etc/ldap/schema/dyngroup.schema
/etc/ldap/schema/inetorgperson.schema
/etc/ldap/schema/java.schema
/etc/ldap/schema/misc.schema
/etc/ldap/schema/nis.schema
/etc/ldap/schema/openldap.schema
/etc/ldap/schema/ppolicy.schema
/etc/ldap/schema/samba.schema
07/04/2012
Amministratore di sistema
45
SAMBA: OpenLDAP Schema
Creare una directory temporanea
mkdir /tmp/ldif
Conversione
slapcat –f /tmp/convert –F /tmp/ldif –n0 –s
ʺcn={12}samba,cn=schema,cn=configʺ >
/tmp/cn=samba.ldif
07/04/2012
Amministratore di sistema
46
23
24/05/2012
SAMBA: OpenLDAP Schema
Editate il file generato:
nano /tmp/cn=\samba.ldif
Eliminate il {12} dalle prime 3 righe
dn: cn={12}samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {12}samba
dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: samba
07/04/2012
Amministratore di sistema
47
SAMBA: OpenLDAP Schema
Eliminate le ultime 7 righe che dovrebbero somigliare a queste
structuralObjectClass: olcSchemaConfig
entryUUID: 458debec-27e2-1031-965b-0113f6ef9828
creatorsName: cn=config
createTimestamp: 20120501140411Z
entryCSN: 20120501140411.677492Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120501140411Z
07/04/2012
Amministratore di sistema
48
24
24/05/2012
SAMBA: OpenLDAP Schema
Quindi aggiungete le informazioni nel DIT
sudo ldapadd –x –D cn=admin,cn=config –W –f
/tmp/cn\=samba.ldif
Verrà chiesta la password
dominiopwd
07/04/2012
Amministratore di sistema
49
SAMBA: ACL
Impostare le regole di accesso a LDAP
nano /tmp/smbacl.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to dn.base="" by self write by * auth
olcAccess: to
attrs=userPassword,sambaNTPassword,sambaLMPassword by
dn="cn=admin,dc=dominio,dc=it" write by anonymous auth by self
write by * none
olcAccess: to * by * read by anonymous auth
Nota: i parametri di olcAccess devono essere su un’unica riga
07/04/2012
Amministratore di sistema
50
25
24/05/2012
SAMBA
Lanciare lo script
sudo ldapmodify –x –D cn=admin,cn=config –W –f
/tmp/smbacl.ldif
Potete vedere le regole impostate con il comando:
ldapsearch –xLLL –D cn=admin,cn=config –x –b
cn=config –W olcDatabase={1}hdb
07/04/2012
Amministratore di sistema
51
SAMBA: LDAP Tools
Configurazione degli LDAP Tools
Fermare il servizio smbd
sudo /etc/init.d/smbd stop
Backup della configurazione
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bkp_20120407
Modificate la configurazione
sudo nano /etc/samba/smb.conf
07/04/2012
Amministratore di sistema
52
26
24/05/2012
SAMBA: LDAP Tools
Segue lo script
[global]
workgroup = DOMINIO
netbios name = SERVER
server string = %h PDC (%v)
interfaces = eth0, lo
bind interfaces only = yes
enable privileges = yes
guest account = guest
domain logons = yes
07/04/2012
Nome del dominio
Nome del server
Samba ascolta solo
eth0 e lo
È domain controller
Amministratore di sistema
53
SAMBA: LDAP Tools
Lo script continua…
domain master = yes
preferred master = yes
os level = 65
wins support = yes
security = user
ldap suffix = dc=dominio,dc=it
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
07/04/2012
Amministratore di sistema
Master browser
Server wins
Autenticazione
Parametri
Samba per
collegarsi a
LDAP
54
27
24/05/2012
SAMBA: LDAP Tools
Lo script continua…
ldap admin dn = cn=admin,cn=dominio,cn=it
idmap backend = ldap:ldap://ldap.dominio.it
idmap uid = 10000-20000
idmap gid = 10000-20000
ldap passwd sync = yes
ldap ssl = no
07/04/2012
Amministratore di sistema
55
SAMBA: LDAP Tools
Prendiamo nota del sid (Secure Identifier) del dominio
sudo net getlocalsid
Otterremo qualcosa del tipo:
SID for domain LDAP is: S-1-5-21-12853714474050154245-2850450890
07/04/2012
Amministratore di sistema
56
28
24/05/2012
SAMBA: LDAP Tools
Configurare smbldap-tools
sudo cp /usr/share/doc/smbldaptools/examples/smbldap.conf.gz /etc/smbldap-tools/
sudo gzip –d /etc/smbldap-tools/smbldap.conf.gz
sudo cp /usr/share/doc/smbldaptools/examples/smbldap_bind.conf /etc/smbldap-tools/
sudo nano /etc/smbldap-tools/smbldap.conf
07/04/2012
Amministratore di sistema
57
SAMBA
Scorrere i parametri modificando impostandoli come indicato
Lasciare inalterate le altre righe
SID="S-1-5-21-1285371447-4050154245-2850450890"
sambaDomain="DOMINIO"
#slaveLDAP="127.0.0.1"
masterLDAP="127.0.0.1"
ldapTLS="0"
#cafile="/etc/smbldap-tools/ca.pem"
#clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem"
#clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key"
suffix="dc=dominio,dc=it"
hash_encrypt="MD5"
userLoginShell="/bin/false"
userGecos="DOMINIO Domain User"
07/04/2012
Amministratore di sistema
58
29
24/05/2012
SAMBA
Lo script continua…
defaultMaxPasswordAge="180"
userSmbHome=""
userProfile=""
userHomeDrive="K:"
userScript="%U.bat"
mailDomain="dominio.it"
07/04/2012
Amministratore di sistema
59
SAMBA
Modificate smbldap_bind.con f
sudo nano /etc/smbldap-tools/smbldap_bind.conf
Facendolo diventare così:
slaveDN="cn=admin,dc=dominio,dc=it"
slavePW="dominiopwd"
masterDN="cn=admin,dc=dominio,dc=it"
masterPW="dominiopwd"
Proteggiamo i file:
sudo chmod 0664 /etc/smbldap-tools/smbldap.conf
sudo chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
07/04/2012
Amministratore di sistema
60
30
24/05/2012
SAMBA
Dite a Samba la password per accedere a LDAP
sudo smbpasswd –w dominiopwd
Se è tutto corretto dovreste ottenere:
Setting stored password for "cn=admin,cn=dominio,cn=it" in
secrets.tdb
07/04/2012
Amministratore di sistema
61
SAMBA
Popolare LDAP
Per il corretto funzionamento, Samba ha bisogno di alcuni gruppi predefiniti e
di 2 utenti: Administrator e guest
sudo /usr/sbin/smbldap-populate –a administrator –u 5001 –g 5001 –r
5001 –b guest –l 5000
Per comodità specificate la password di Administrator: alessandro
07/04/2012
Amministratore di sistema
62
31
24/05/2012
SAMBA
Lista degli utenti
Possiamo ottenere la lista degli utenti con il seguente comando:
sudo getent passwd
In particolare verranno visualizzati gli utenti administrator e guest
07/04/2012
Amministratore di sistema
63
SAMBA
Create i gruppi di utenti
Gruppo
Descrizione
DISIT
Direzione Sistemi Informatici e Telematici
DIAMM
Direzione Amministrativa
DIPER
Direzione Personale
DIPRO
Direzione Produzione
Domain Users Gruppo che contiene tutti gli utenti
Domain Users è già stato creato con il comando smbldap-populate
Ogni nuovo utente viene assegnato in modo automatico a questo gruppo
07/04/2012
Amministratore di sistema
64
32
24/05/2012
SAMBA
Create i gruppi
sudo
sudo
sudo
sudo
/usr/sbin/smbldap-groupadd
/usr/sbin/smbldap-groupadd
/usr/sbin/smbldap-groupadd
/usr/sbin/smbldap-groupadd
07/04/2012
-a
-a
-a
-a
disit
diamm
diper
dipro
Amministratore di sistema
65
SAMBA
Create gli utenti
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
/usr/sbin/smbldap-useradd -a -m disit_u01
/usr/sbin/smbldap-passwd disit_u01
/usr/sbin/smbldap-useradd -a -m diamm_u01
/usr/sbin/smbldap-passwd diamm_u01
/usr/sbin/smbldap-useradd -a -m diper_u01
/usr/sbin/smbldap-passwd diper_u01
/usr/sbin/smbldap-useradd -a -m dipro_u01
/usr/sbin/smbldap-passwd dipro_u01
/usr/sbin/smbldap-useradd -a -m dipro_u02
/usr/sbin/smbldap-passwd dipro_u02
07/04/2012
Amministratore di sistema
Parametri:
-a è un Windows User
-m crea la home
directory
66
33
24/05/2012
SAMBA
Abilitazione utenti
Agli utenti non viene concesso l’accesso alla shell (è stato impostato
/bin/false). Diamo l’abilitazione al personale informatico.
sudo /usr/sbin/smbldap-usermod -s /bin/bash disit_u01
Assegnare gli utenti ai gruppi
sudo
sudo
sudo
sudo
sudo
/usr/sbin/smbldap-groupmod
/usr/sbin/smbldap-groupmod
/usr/sbin/smbldap-groupmod
/usr/sbin/smbldap-groupmod
/usr/sbin/smbldap-groupmod
07/04/2012
-m
-m
-m
-m
-m
disit_u01
diamm_u01
diper_u01
dipro_u01
dipro_u02
disit
diamm
diper
dipro
dipro
Amministratore di sistema
67
SAMBA
Lista
degli utenti
Verifica
Possiamo ottenere la lista degli utenti con il seguente comando:
sudo getent group
E ottenere qualcosa del genere:
…
disit:*:5001:disit_u01
diamm:*:5002:diamm_u01
diper:*:5003:diper_u01
dipro:*:5004:dipro_u01,dipro_u02
07/04/2012
Amministratore di sistema
68
34
24/05/2012
SAMBA
Condivisioni
Verifica
Condivisione Percorso
Descrizione
public
/samba/public
Cartella pubblica. Contiene una cartella per ogni gruppo
apps
/samba/apps
Cartella applicazioni in sola lettura
netlogon
/samba/netlogon Cartella di sistema, necessaria in un domain controller
Contiene gli script di logon di un utente
profiles
/samba/profiles
Cartella di sistema per i profili roaming di Windows
homes
/samba/home
Cartella home degli utenti (ciascuno ha la propria)
rootdir
/samba
Condivisione utile per i backup
07/04/2012
Amministratore di sistema
69
SAMBA
Condivisione
public
Verifica
Anziché avere una condivisione per ogni gruppo, la scelta è quella di avere
public come condivisione principale e lavorare con i permessi. A fronte di
molti gruppi ci sarà un’unica mappatura.
Ognuno vede solamente le sottocartelle alle quali ha accesso!
sudo
sudo
sudo
sudo
sudo
sudo
mkdir
mkdir
mkdir
mkdir
mkdir
mkdir
–p
–p
–p
–p
–p
–p
/samba/public
/samba/public/comune
/samba/public/disit
/samba/public/diamm
/samba/public/diper
/samba/public/dipro
Parametro –p crea anche le cartelle parent se non esistono
07/04/2012
Amministratore di sistema
70
35
24/05/2012
SAMBA
Condivisione
public
Verifica
Aggiustare i permessi
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
sudo
chmod
chgrp
chmod
chgrp
chmod
chgrp
chmod
chgrp
chmod
chgrp
770 /samba/public/comune
"Domain Users" /samba/public/comune
770 /samba/public/diamm
diamm /samba/public/diamm
770 /samba/public/diper
diper /samba/public/diper
770 /samba/public/dipro
dipro /samba/public/dipro
770 /samba/public/disit
disit /samba/public/disit
Solo i membri del
gruppo Domain
Admins possono
creare file nella
directory public
Verifica: ls –al /samba/public
07/04/2012
Amministratore di sistema
71
SAMBA
Condivisione
public
Verifica
suid
Quando gli utenti creano files o cartelle nelle condivisioni, questi vengono
marcati con utente=UtenteCreatore e gruppo=GruppoDefaultUtente. Il
gruppo di default è Domain Users, quindi tutti i file creati in disit sono
potenzialmente a disposizione anche degli utenti del gruppo diamm essendo
questi membri del gruppo Domain Users
Nota: in questo caso sono protetti dai permessi della cartella
Ogni file creato/copiato/ripristinato dall’amministratore non risulta accessibile
dagli utenti normali senza reimpostare manualmente i permessi sui files
07/04/2012
Amministratore di sistema
72
36
24/05/2012
SAMBA
Condivisione
public
Verifica
setuid
Con i seguenti comandi ogni file creato nelle cartelle avrà come gruppo
proprietario il gruppo della cartella e non quello dell’utente
sudo
sudo
sudo
sudo
sudo
chmod
chmod
chmod
chmod
chmod
g+s
g+s
g+s
g+s
g+s
/samba/public/comune
/samba/public/disit
/samba/public/diamm
/samba/public/diper
/samba/public/dipro
I permessi di gruppo verranno modificati da rwx a rws
Verifica: ls –al /samba/public
07/04/2012
Amministratore di sistema
73
SAMBA
Condivisione apps
In questa condivisione mettiamo tutti i programmi condivisi nella rete.
Solo l’amministratore può scrivere nella cartella, gli altri utenti possono solo
leggere ed eseguire i file contenuti
sudo
sudo
sudo
sudo
mkdir
chmod
chgrp
chmod
07/04/2012
/samba/apps
750 /samba/apps
"Domain Users" /samba/apps
g+s /samba/apps
Amministratore di sistema
74
37
24/05/2012
SAMBA
Condivisione netlogon
Condivisione necessaria quando si configura un domain controller
Conterrà gli script degli utenti
sudo mkdir /samba/netlogon
Condivisione profiles
Consente di usare i profili roaming di Windows
sudo mkdir /samba/profiles
sudo chmod 777 /samba/profiles
Condivisione home: creata automaticamente da Samba (slides successive)
07/04/2012
Amministratore di sistema
75
SAMBA
Condivisione netlogon
Condivisione necessaria quando si configura un domain controller
Conterrà gli script degli utenti
sudo mkdir /samba/netlogon
Condivisione profiles
Consente di usare i profili roaming di Windows
sudo mkdir /samba/profiles
sudo chmod 777 /samba/profiles
07/04/2012
Amministratore di sistema
76
38
24/05/2012
SAMBA
Condivisione home
Creata automaticamente da Samba e mappata come K: in Windows al
momento del logon tramite lo script logon.pl presente nelle slides successive
Condivisione rootdir
Utile per i backup, è accessibile solo all’amministratore
sudo
sudo
sudo
sudo
ln -s
mkdir
ln -s
ln -s
/home /samba/home
/samba/system
/etc /samba/system/etc
/var/lib/ldap /samba/system/ldap
07/04/2012
Amministratore di sistema
77
SAMBA
È necessario configurare le condivisioni in Samba
sudo nano /etc/samba/smb.conf
Condivisione homes
[homes]
comment = "K: Cartella privata di %U, %u"
writeable = yes
create mask = 0700
directory mask = 0775
browseable = no
force user = %U
07/04/2012
Amministratore di sistema
78
39
24/05/2012
SAMBA
Condivisione public
[public]
comment = "L: - Cartella pubblica"
path = /samba/public
writeable = yes
browseable = yes
hide unreadable = yes
directory mask = 0775
create mask = 0775
force create mode = 0775
force directory mode = 6775
security mask = 0777
force directory security mode = 0
07/04/2012
Amministratore di sistema
79
SAMBA
Condivisione rootdir
[rootdir]
comment = "Cartella globale, solo per amministrazione e backup"
path = /samba
writeable = yes
browseable = yes
directory mask = 0770
create mask = 0775
force create mode = 0775
security mask = 0777
force security mode = 0
directory security mask = 0777
admin users = Administrator
valid users = "@Domain Admins"
force create mode = 0644
force directory mode = 6775
07/04/2012
Amministratore di sistema
80
40
24/05/2012
SAMBA
Condivisione apps
[apps]
comment = "X: Applicazioni"
path = /samba/apps
writeable = yes
browseable = yes
directory mask = 0770
create mask = 0775
security mask = 0777
force security mode = 0
directory security mask = 0777
force directory security mode = 0
hide unreadable = yes
force create mode = 0775
force directory mode = 6775
07/04/2012
Amministratore di sistema
81
SAMBA
Condivisione netlogon
[netlogon]
comment = "Network Logon Service"
path = /samba/netlogon
guest ok = yes
locking = no
browseable = no
root preexec = /etc/samba/logon.pl "%U" "%G" "%L" "%T" "%m" "%a"
Condivisione profiles
[profiles]
comment = "Profile share"
path = /samba/profiles
writeable = yes
07/04/2012
Amministratore di sistema
82
41
24/05/2012
SAMBA
Ultimi parametri in smb.conf
map acl inherit = yes
passdb backend = ldapsam:ldap://server.dominio.it
name resolve order = wins host dns bcast
add user script = /usr/sbin/smbldap-useradd -a -m '%u'
delete user script = /usr/sbin/smbldap-userdel '%u'
add group script = /usr/sbin/smbldap-groupadd -a -p '%g'
delete group script = /usr/sbin/smbldap-groupdel '%g'
add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
add machine script = /usr/sbin/smbldap-useradd -w '%u'
logon script = %U.bat
logon path =
logon home =
logon drive = K:
07/04/2012
Amministratore di sistema
83
SAMBA
Ultimi parametri in smb.conf
log level = 0
log file = /var/log/samba/%m
max log size = 50
smb ports = 139 445
hide dot files = yes
name resolve order = wins host dns bcast
time server = yes
guest account = guest
show add printer wizard = no
lock directory = /var/lock/samba
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
template shell = /bin/false
07/04/2012
Amministratore di sistema
84
42
24/05/2012
SAMBA
File di configurazione creato al volo al momento della login
sudo nano /etc/samba/logon.pl
#!/usr/bin/perl
open LOG, ">>/var/log/samba/netlogon.log";
print LOG, "$ARGV[3] - Utente $ARGV[0] collegato a $ARGV[2]\n";
close LOG;
# Elenco utenti
$APPS = "-disit_u01-disit_u02-";
$NOLOGON = "-administrator-";
$DELMAP = "-winnt-win2k-win2k3-winxp-";
$ADMIN = "administrator";
07/04/2012
Amministratore di sistema
85
SAMBA
# Inizio generazione script
open LOGON, ">/samba/netlogon/$ARGV[0].bat";
print LOGON "\@ECHO OFF\r\n";
print LOGON "ECHO DOMINIO logon script\r\n";
print LOGON "ECHO.\r\n";
# Sincronizza orario con il server
print LOGON "NET TIME \\\\DOMINIO /SET /YES\r\n";
# Se piattaforma PC in $DELMAP cancella i vecchi map
if (index($DELMAP,"-".lc($ARGV[0])."-")==1)
{
print LOGON "NET USE " /DEL /YES\r\n";
}
07/04/2012
Amministratore di sistema
86
43
24/05/2012
SAMBA
# Esci se utente in $NOLOGON altrimenti applica i map
if (index($NOLOGON,"-".lc($ARGV[0])."-")==-1)
{
# Disco L: (PUBLIC)
print LOGON "NET USE L: \\\\DOMINIO\public /YES\r\n";
# Disco K: (HOME)
print LOGON "NET USE K: \\\\DOMINIO\$ARGV[0] /YES\r\n";
# Disco X: (APPS)
if (index($APPS,"-".lc($ARGV[0])."-")>=0)
{
print LOGON "NET USE X: \\\\DOMINIO\apps /YES\r\n";
}
}
# Chiudi il file
close LOGON;
07/04/2012
Amministratore di sistema
87
SAMBA
Avvio del servizio
sudo /etc/init.d/smbd start
Ora è possibile fare il join al dominio
Start\Pannello di controllo\Sistema
Cambia impostazioni
Click su Cambia
07/04/2012
Amministratore di sistema
88
44
24/05/2012
SAMBA
Selezionare Dominio
Digitare il nome del dominio: DOMINIO
Click su Ok
Riavviare il PC
07/04/2012
Amministratore di sistema
89
SAMBA
Test di funzionamento
Per vedere il client appena aggiunto:
sudo getent passwd
Per vedere gli utenti del dominio:
sudo pdbedit -L
Per vedere le condivisioni:
sudo smbclient –L localhost –U administrator
07/04/2012
Amministratore di sistema
90
45
24/05/2012
CRITICITÀ
Le slides presentate mostrano come installare un server Linux che funzioni
come Server LDAP, File Server e Domain Controller
Le slides hanno scopo didattico. Per la messa in produzione di un server che
offra questi servizi è necessario investire su aspetti che esulano dalle finalità
di questo progetto, quali, ad esempio:
• Sicurezza: la necessità di proteggere il server da possibili attacchi interni ed
esterni alla rete, crittografare la connessione tra Samba e LDAP, …
• Backup e disaster recovery: Salvataggio dei backup e prove di ripristino
• Criticità e ridondanza: questi servizi sono critici, meglio ridondarli. Le
repliche devono sincronizzarsi tra loro
07/04/2012
Amministratore di sistema
91
LIBRO
Le slides presentate sono state prodotte
rielaborando gli argomenti trattati nel
libro:
Small Business Server (seconda edizione)
per Ubuntu Server 10.04 LTS
di Stefano Giro
07/04/2012
Amministratore di sistema
92
46
Scarica

Server LDAP File Server Domain Controller