A richiesta di Ziokernel, posto la parte di guida che riguarda samba 4 e la sua configurazione per funzionare come Active Directory...
NOTA: ATTENZIONE! la guida è incompleta, non è completamente testata (potrei aver eseguito alcune modifiche di cui non ho tenuto traccia) e potrebbe non funzionare!
Appunti per capire gli esempi:
Codice: Seleziona tutto
Hostname Server: server
IP: 192.168.1.3
Rete: 192.168.1.0
Netmask: 255.255.255.0
Dominio scelto: sec.nervesa
WORKGROUP: SECNERVESA
REALMS: SEC.NERVESA
1) Installare Bind9 (Server DNS):
2) Installare ACL e ATTR:
3) Attivare automaticamente le ACL e gli ATTR all'avvio del mount delle partizioni:
Aggiungere "user_xattr,acl,barrier=1" (senza virgolette) alle partizioni da montare con le opzioni specificate:
Esempio:
Codice: Seleziona tutto
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=1a42c8d4-7e51-411e-ab30-f61eabbc6920 / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1
# /data was on /dev/sda5 during installation
UUID=3ca0a340-6155-4834-8004-e0770d3b0018 /data ext4 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=4a71f2b6-b1d5-4795-8d22-04c7e142f120 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
4) Installare SAMBA, KERBEROS e dipendenze:
Codice: Seleziona tutto
# apt-get install samba smbclient build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev krb5-user docbook-xsl libcups2-dev ldb-tools winbind
verrà chiesto di configurare il realm di KERBEROS:
Esempio:
Codice: Seleziona tutto
Realm predefinito: SEC.NERVESA
Server Kerberos del Proprio realm: server
Server Amministrativo per il realm Kerberos: server
5) Configurare SAMBA:
Eseguire backup configurazione Samba:
Effettuare il provisioning:
Codice: Seleziona tutto
# samba-tool domain provision --use-rfc2307 --interactive
l'opzione --use-rfc2307, attiva l'active directory per essere compatibile con XP e windows server 2003, inoltre imposto l'active directory come fosse un windows server 2008
Vengono richiesti alcuni dati (interactive):
Codice: Seleziona tutto
1. (Realm) SEC.NERVESA
2. (Domain [NETBIOS]) SECNERVESA
3. (Server Role) dc
4. (DNS Backend) BIND9_DLZ
5. (Administrator Password) abc123@ABC ###### Deve rispettare i criteri di protezione
Modificare il file smb.conf in questo modo (cambiando ovviamente con i propri paramenti, alcuni sono già impostati):
Codice: Seleziona tutto
# Global parameters
#logon script = %U.bat
[global]
server string = Server Secondaria Nervesa
workgroup = SECNERVESA
realm = SEC.NERVESA
netbios name = SERVER
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
idmap_ldb:use rfc2307 = yes
allow dns updates = nonsecure and secure
idmap config *:backend = tdb
idmap config *:range = 2000-9999
idmap config SECNERVESA:backend = ad
idmap config SECNERVESA:schema_mode = rfc2307
idmap config SECNERVESA:range = 10000-29999
bind interfaces only = True
interfaces = lo eth0
log file = /var/log/samba.log
log level = 1
winbind nss info = rfc2307
winbind use default domain = true
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
load printers = No
printcap name = /dev/null
disable spoolss = yes
domain logons = yes
[netlogon]
path = /data/shares/netlogon
read only = yes
public = no
browsable = yes
[sysvol]
path = /data/shares/sysvol
read only = No
browseable = yes
6) Configurare KERBEROS:
Eseguire un backup del file krb5.conf
Modificare il file krb5.conf in questo modo (cambiando ovviamente con i propri paramenti, alcuni sono già impostati):
Codice: Seleziona tutto
[libdefaults]
default_realm = SEC.NERVESA
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
SEC.NERVESA= {
kdc = server.sec.nervesa
admin_server = server.sec.nervesa
}
Io ho solo questo dentro il mio krb5.conf, ma voi potete tenere tutta la pappardella (inutile) che c'è già dentro.
7. Configurare BIND9:
Modificare il file named.conf.options di Bind in questo modo (cambiando ovviamente con i propri paramenti, alcuni sono già impostati):
Codice: Seleziona tutto
options {
directory "/var/cache/bind";
allow-query { 127.0.0.1; 192.168.1.0/24; } ;
allow-transfer { none; } ;
allow-recursion { 127.0.0.1; 192.168.1.0/24; } ;
forwarders {
192.168.1.1;
8.8.8.8;
};
dnssec-enable no;
listen-on-v6 { any; };
auth-nxdomain yes;
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
};
Modificare il file named.conf in questo modo:
Codice: Seleziona tutto
# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include "/var/lib/samba/private/named.conf";
#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz "AD DNS Zone" {
# For BIND 9.8.x
# database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";
# For BIND 9.9.x
database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";
# For BIND 9.10.x
# database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";
};
voi dovete verificare la versione di Bind9 che avete installato nel sistema e decommentare la riga adatta... io avevo la versione bind 9.9
Modificare il file named.conf (di bind9):
Aggiungere la stringa:
Esempio:
Codice: Seleziona tutto
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/var/lib/samba/private/named.conf";
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Cambiare i permessi al file dns.keytab
Codice: Seleziona tutto
# chgrp bind /var/lib/samba/private/dns.keytab
# chmod g+r /var/lib/samba/private/dns.keytab
Riavviare il server
9) Testare il tutto:
DNS:
risposta:
Codice: Seleziona tutto
ldap._tcp.sec.nervesa has SRV record 0 100 389 server.sec.nervesa.
risposta:
Codice: Seleziona tutto
kerberos._udp.sec.nervesa has SRV record 0 100 88 server.sec.nervesa.
risposta:
KERBEROS:
verrà richiesto di inserire la password di administrator.
risposta:
Codice: Seleziona tutto
Warning: Your password will expire in 41 days on mar 07 giu 2016 16:13:11 CEST
risposta:
Codice: Seleziona tutto
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SEC.NERVESA
Valid starting Expires Service principal
27/04/2016 14:41:19 28/04/2016 00:41:19 krbtgt/SEC.NERVESA@SEC.NERVESA
renew until 28/04/2016 14:41:13
SAMBA:
verrà richiesta la password di administrator.
risposta:
Codice: Seleziona tutto
Domain=[SECNERVESA] OS=[Windows 6.1] Server=[Samba 4.3.8-Ubuntu]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Server Secondaria Nervesa)
Domain=[SECNERVESA] OS=[Windows 6.1] Server=[Samba 4.3.8-Ubuntu]
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP ORION
10) PERMESSI AMMINISTRATIVI LOCALI E NON DI DOMINIO (MOLTO IMPORTANTE):
Creare un gruppo (esempio "Local Admins")
Seguire la guida per creare la GPO per i Restricted Groups (quì vi servirà RSAT, a meno che non siate pratici sul come creare delle policy manualmente):
https://wiki.samba.org/index.php/Managing_local_groups_on_domain_members_via_GPO_restricted_groups
Per far diventare l'utente amministratore, è sufficiente aggiungerlo al gruppo appena creato:
Applicare GPO anche a Windows XP SP3:
Windows XP Sp3, non supporta le GPO di Active Directory di Windows Server 2008, la versione Microsoft di Samba 4.
Per farle supportare seguire la seguente guida:
(Applicare Group Policy Client Side Extensions (CSE) - KB943729)
http://nolabnoparty.com/in-windows-2008-r2-le-gpo-non-vengono-applicate-nei-client-xp-e-2003/
Per eseguire un refresh forzato delle policy, è necessario un "gpupdate /F" dato da linea di comando su ogni client (od attendere che si aggiornino da sole).
Tenete conto che alcune volte, ad esempio per applicare le GPO che vanno a modifica i membri dei gruppi, potrebbe essere necessario disconnettere e riconnettere l'utente.
- - - Fine Guida - - -
Per chi fosse interessato, ecco una mini guida su come creare ed utilizzare i loop device:
Creare un loop device da circa 100 Mb
Codice: Seleziona tutto
dd if=/dev/zero of=/data/images/loop.img bs=1K count=100K
/data/images/ è il percorso dove creo il loop device nominato come loop.img
potete aumentare o diminuire a piacimento il numero 100K (esempio: 100M, ne crea uno da un GB).
Formattare disco virtuale
-m 0 > permette di non dedicare nessuno spazio aggiuntivo all'utente root (non fare su device di sistema)
-F > ignora gli errori che si verifica (è normale, perchè il device creato non è a blocchi... ma lo diventerà)
Creare punto di mount:
sostituire con il punto dove si andrà a creare il futuro punto di mount del device (può anche essere /dev/loop)
Modificare il file /etc/fstab aggiungendo questo (per montare automaticamente il loop device all'avvio):
Codice: Seleziona tutto
/data/images/loop.img /data/mount/loop ext4 loop,auto,dev,user_xattr,acl,barrier=1 0 0
Montare tutti i dischi non montati:
si può decidere di montare anche solo il loop appena creato con il comando:
Codice: Seleziona tutto
mount -o loop /data/images/loop.img /data/mount/loop
Svuotare il contenuto del loop device:
Posto inoltre alcuni comandi utili per gestire il dominio senza rsat:
NOTA: Sostituire la stringa tra i simboli percentuali con il corrispondente valore.
Configurazioni Passwords Dominio:
Codice: Seleziona tutto
Imposta complessità password:
samba-tool domain passwordsettings set --complexity %on|off%
Imposta quante password precedenti ricordare:
samba-tool domain passwordsettings set --history-length %numero%
Imposta la lunghezza minima delle password:
samba-tool domain passwordsettings set --min-pwd-length %numero%
Imposta il numero di giorni che bisogna attendere prima di cambiare password:
samba-tool domain passwordsettings set --min-pwd-age %giorni%
Imposta il numero di giorni per la scadenza della password:
samba-tool domain passwordsettings set --max-pwd-age %giorni%
Imposta il tempo di minuti che bisogna attendere prima che l’account venga sbloccato dopo aver inserito troppe password sbagliate :
samba-tool domain passwordsettings set --account-lockout-duration %minuti - 0 l’account deve essere riattivato manualmente%
Imposta il numero di volte che è possibile inserire la password sbagliata prima di essere bloccati:
samba-tool domain passwordsettings set --account-lockout-threshold %numero - 0 non è mai bloccato%
Imposta il numero di minuti che bisogna attendere prima che l’account precedentemente bloccato (per un numero troppo alto di inserimenti sbagliati della password) venga sbloccato ed il conteggio riparta da 0 (in pratica indica quanto tempo attendere prima di poter riprovare ad inserire una password):
samba-tool domain passwordsettings set --reset-account-lockout-after %minuti%
Visualizza le impostazioni del dominio sulle configurazioni delle passwords:
samba-tool domain passwordsettings show
Utenti:
Codice: Seleziona tutto
Inserire nuovo utente:
samba-tool user add %username% %password% --must-change-at-next-login"
--must-change-at-next-login serve per obbligare l'utente a cambiare password al primo accesso
Disabilitare un utente:
samba-tool user disable %username%
Abilitare un utente disabilitato:
samba-tool user enable %username%
Verificare se utente è disabilitato:
pdbedit -u %username% -v
guardare il testo "Account Flags", se c’è una D significa che l’account è disabilitato
Cambiare password ad utente:
samba-tool user setpassword %username% --newpassword "%nuova password%" --must-change-at-next-login
Cancellare utente:
samba-tool user delete %username%
Ottenere lista utenti:
samba-tool user list
Impostare nome visualizzato
pdbedit --username %username% --modify --fullname "%Nome da Visualizzare%"
Impostare e-mail (descrizione):
pdbedit -u %username% -N "%indirizzo e-mail%"
Impostare la home directory:
pdbedit -u %username% -h "%home directory%"
Reimposta il numero di tentativi di accesso falliti:
pdbedit -u %username% -z
Obbligare l’utente a cambiare password:
pdbedit -u %username% --force-initialized-passwords
Visualizzare configurazione utente:
pdbedit -u %username% -v
Gruppi:
Codice: Seleziona tutto
Ottenere la lista di gruppi:
samba-tool group list
Ottenere la lista utenti di un gruppo:
samba-tool group listmembers "%nome gruppo%"
Aggiungere un gruppo:
samba-tool group add "%nome nuovo gruppo%"
Rimuovere un gruppo:
samba-tool group delete "%nome gruppo%"
Aggiungere un membro ad un gruppo:
samba-tool group addmembers "%gruppo%" "%username - gruppo%"
Rimuovere membro da gruppo:
samba-tool group removemembers "%gruppo%" "%username - gruppo%"
Visualizzare membri di un gruppo:
samba-tool group listmembers "%gruppo%"
Spero possa essere utile a qualcuno.
Genymus