Cosa fa#
Costruisce un domain controller Samba 4 su Ubuntu ARM, crea una struttura RBAC con utenti e gruppi, e dimostra SSO/Kerberos in azione osservando i ticket con klist.
TL;DR#
Ubuntu (192.168.64.3) → Domain Controller (Samba AD DC + Kerberos KDC)
Kali (192.168.64.200) → Client che si unisce al dominio e testa SSOUn login → Kerberos emette un TGT → ogni risorsa riceve un Service Ticket automaticamente → SSO verificato.
graph TD
DC["DOMAIN CONTROLLER
Il server centrale del dominio"]
DC --> A["AUTHENTICATION
Verifica le credenziali tramite Kerberos
Emette il TGT"]
DC --> B["DATABASE
Contiene tutti gli utenti, gruppi,
computer e permessi tramite LDAP"]
DC --> C["POLICY
Distribuisce le regole aziendali
a tutti i PC tramite GPO"]
style DC fill:#4a90d9,color:#fff
style A fill:#e67e22,color:#fff
style B fill:#27ae60,color:#fff
style C fill:#8e44ad,color:#fff
Valore curriculum#
"Ho configurato un domain controller Samba 4 su Ubuntu con autenticazione Kerberos, struttura RBAC con security groups, e verificato il funzionamento di SSO tramite klist su client Linux."
Competenze dimostrabili:
- Configurazione AD-compatible domain controller su Linux
- Gestione utenti e gruppi con
samba-tool - Comprensione pratica di Kerberos (TGT, Service Ticket, PAC)
- RBAC: assegnazione permessi per ruolo/gruppo
- Join di un client Linux a un dominio AD
Ambiente#
DC (Domain Controller): Ubuntu Server ARM — 192.168.64.3
Client: Kali Linux ARM — 192.168.64.200
Dominio: LAB.LOCALFase 1 — Preparare Ubuntu come Domain Controller#
Task 1.1 — Impostare hostname e /etc/hosts
- Hostname:
dc01.lab.local /etc/hosts: aggiungere192.168.64.3 dc01.lab.local dc01- Come sai che hai finito:
hostname -frestituiscedc01.lab.local
- Hostname:
Task 1.2 — Installare Samba e dipendenze
sudo apt install -y samba krb5-config winbind smbclient- Come sai che hai finito:
samba --versionmostra la versione installata
- Come sai che hai finito:
Task 1.3 — Provisioning del dominio AD
sudo samba-tool domain provision \ --use-rfc2307 \ --realm=LAB.LOCAL \ --domain=LAB \ --server-role=dc \ --dns-backend=SAMBA_INTERNAL \ --adminpass='Admin1234!'- Come sai che hai finito: nessun errore, file
/etc/samba/smb.confgenerato
- Come sai che hai finito: nessun errore, file
Task 1.4 — Avviare e abilitare Samba AD
sudo systemctl unmask samba-ad-dc sudo systemctl enable samba-ad-dc sudo systemctl start samba-ad-dc- Come sai che hai finito:
sudo samba-tool domain info 127.0.0.1mostra il dominio LAB.LOCAL
- Come sai che hai finito:
Fase 2 — Creare struttura RBAC#
Task 2.1 — Creare utenti
sudo samba-tool user create homer.simpson 'Password1!' sudo samba-tool user create lisa.simpson 'Password1!' sudo samba-tool user create bart.simpson 'Password1!'- Come sai che hai finito:
sudo samba-tool user listmostra i tre utenti
- Come sai che hai finito:
Task 2.2 — Creare gruppi per ruolo (RBAC)
sudo samba-tool group add Sales sudo samba-tool group add HR sudo samba-tool group add IT-Admins- Come sai che hai finito:
sudo samba-tool group listmostra i gruppi
- Come sai che hai finito:
Task 2.3 — Assegnare utenti ai gruppi
sudo samba-tool group addmembers Sales homer.simpson sudo samba-tool group addmembers HR lisa.simpson sudo samba-tool group addmembers IT-Admins bart.simpson- Come sai che hai finito:
sudo samba-tool group listmembers Salesmostra homer
- Come sai che hai finito:
Task 2.4 — Simulare privilege creep
- Aggiungere lisa.simpson anche a Sales (simula cambio reparto senza deprovisioning)
- Verificare con
samba-tool group listmembersche lisa ha accesso a entrambi i gruppi - Come sai che hai finito: hai un caso reale di privilege creep documentato
Fase 3 — Unire Kali al dominio#
Task 3.1 — Configurare DNS su Kali
- Kali deve usare Ubuntu come DNS:
/etc/resolv.conf→nameserver 192.168.64.3 - Come sai che hai finito:
nslookup dc01.lab.localrisolve correttamente
- Kali deve usare Ubuntu come DNS:
Task 3.2 — Installare pacchetti su Kali
sudo apt install -y realmd sssd sssd-tools adcli krb5-userTask 3.3 — Unire Kali al dominio
sudo realm join --user=Administrator lab.local- Come sai che hai finito:
realm listmostralab.localcon statoconfigured
- Come sai che hai finito:
Fase 4 — Osservare Kerberos in azione (SSO)#
Task 4.1 — Ottenere un TGT manualmente
kinit homer.simpson@LAB.LOCAL- Come sai che hai finito: nessun errore — il TGT è stato emesso dal KDC
Task 4.2 — Osservare il TGT con klist
klist- Osservare: ticket server (
krbtgt/LAB.LOCAL), orario emissione, scadenza (~10 ore) - Come sai che hai finito: vedi il TGT con timestamp di validità
- Osservare: ticket server (
Task 4.3 — Accedere a una risorsa e osservare il Service Ticket
smbclient //dc01.lab.local/netlogon -k klist- Dopo l'accesso comparirà un secondo ticket (Service Ticket per il server SMB)
- Come sai che hai finito:
klistmostra TGT + almeno un Service Ticket separato
Task 4.4 — Verificare SSO
- Accedere a una seconda risorsa senza reinserire la password
- Come sai che hai finito: nessun prompt di password — il token Kerberos viene riusato
Fase 5 — Osservare gli Authentication Indicators#
Task 5.1 — Simulare account lockout
- Tentare login con password errata 5 volte per
bart.simpson - Sul DC:
sudo samba-tool user show bart.simpson— verificare se l'account è bloccato - Come sai che hai finito: account mostra
badPasswordTimeaggiornato
- Tentare login con password errata 5 volte per
Task 5.2 — Leggere i log di autenticazione
sudo tail -f /var/log/samba/log.samba- Identificare: tentativi falliti, login riusciti, emissione ticket
- Come sai che hai finito: sai leggere chi ha fatto cosa e quando
Scenario Reale#
Il SOC riceve un alert: homer.simpson ha ottenuto un TGT alle 03:14 da un IP in Romania — impossible travel rispetto all'ultimo login dalla sede italiana 8 minuti prima. Il SIEM correla il TGT con una serie di Service Ticket verso i fileserver Sales. Il PAC nel ticket mostra i gruppi di appartenenza: il triage conferma che l'attaccante ha ereditato tutti i permessi Sales di Homer senza dover escalare. Primo contenimento: disabilitare l'account, invalidare i ticket Kerberos attivi con samba-tool user disable homer.simpson.
Risorse#
- Samba Wiki — Setting up Samba as an AD Domain Controller
- MIT Kerberos documentation — klist, kinit, kdestroy
Collegato a#
- cap-02-identity-access-management-(IAM) — concetti teorici dietro questo lab
- cap-03-security-architecture — LDAP/LDAPS, AD DS authentication e authorization


