Skip to main content
  1. Lab-blue/

[TODO] Lab - Active Directory + SSO + Kerberos su Ubuntu

Alessio Barnini
Author
Alessio Barnini
Table of Contents

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 SSO

Un 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.LOCAL

Fase 1 — Preparare Ubuntu come Domain Controller
#

  • Task 1.1 — Impostare hostname e /etc/hosts

    • Hostname: dc01.lab.local
    • /etc/hosts: aggiungere 192.168.64.3 dc01.lab.local dc01
    • Come sai che hai finito: hostname -f restituisce dc01.lab.local
  • Task 1.2 — Installare Samba e dipendenze

    sudo apt install -y samba krb5-config winbind smbclient
    • Come sai che hai finito: samba --version mostra la versione installata
  • 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.conf generato
  • 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.1 mostra il dominio LAB.LOCAL

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 list mostra i tre utenti
  • 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 list mostra i gruppi
  • 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 Sales mostra homer
  • Task 2.4 — Simulare privilege creep

    • Aggiungere lisa.simpson anche a Sales (simula cambio reparto senza deprovisioning)
    • Verificare con samba-tool group listmembers che 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.confnameserver 192.168.64.3
    • Come sai che hai finito: nslookup dc01.lab.local risolve correttamente
  • Task 3.2 — Installare pacchetti su Kali

    sudo apt install -y realmd sssd sssd-tools adcli krb5-user
  • Task 3.3 — Unire Kali al dominio

    sudo realm join --user=Administrator lab.local
    • Come sai che hai finito: realm list mostra lab.local con stato configured

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à
  • 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: klist mostra 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 badPasswordTime aggiornato
  • 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

Related