A volte, la gestione dell'accesso ai sistemi della rete è un'attività complessa. Ho visto amministratori creare tutti gli utenti su tutti i computer, altri che condividono gli account utilizzando chiavi SSH o addirittura password e altri ancora che applicano il binding LDAP (a volte tramite l'infrastruttura Active Directory esistente oppure tramite un dominio diverso), nel qual caso devono scrivere query LDAP per filtrare l'accesso.
Questi metodi complicano la gestione dell'accesso ai computer e impongono agli amministratori di essere informati ogni volta che un utente abbandona o aderisce a un team. Gli account condivisi possono rendere inutile il login, poiché tutti avranno lo stesso nome utente. Molto probabilmente non sono il solo ad avere avuto una brutta esperienza con un reparto delle risorse umane che ha comunicato ai team tecnici una modifica apportata a un team. Ma c'è una soluzione che funziona bene e si integra con le configurazioni aziendali più diffuse.
La maggior parte delle aziende che conosco dispone di un sistema ERP che crea, disabilita o elimina automaticamente gli account utente in Microsoft Active Directory (AD), consentendo di trarre vantaggio dal lavoro svolto dagli altri. Ad esempio, il servizio SSSD può connettersi direttamente ad AD.
Se hai configurato un server di autenticazione per Linux che aveva una relazione di trust con AD, hai messo in comunicazione SSSD con i server AD. Ecco come funziona un trust: il server di autenticazione che hai configurato restituisce un riferimento ai server AD, in modo che SSSD possa inviare direttamente le query a questi. La configurazione seguente elimina la necessità di un server di autenticazione aggiuntivo e configura SSSD in modo che passi direttamente ad AD.
Ora dobbiamo chiederci come controllare l'accesso. È qui che entra in gioco il controllo degli accessi basato sui ruoli (RBAC). Con RBAC puoi evitare di assegnare l'accesso agli utenti e iniziare ad assegnare l'accesso ai ruoli. Una volta definiti i gruppi, potrai aggiungere un nuovo membro a un team, a cui è già assegnato un ruolo e che dispone dell'accesso appropriato a un gruppo di server. Ciò consente di evitare richieste come: "Sono appena stato assunto e ho bisogno dello stesso tipo di accesso di X", in cui X è una persona che ha lasciato l'azienda mesi fa, e per la quale sono stati eliminati tutti gli accessi.
Dopo essere stato aggiunto al gruppo del suo team, il nuovo utente avrà l'accesso richiesto. Ti evita anche di scoprire che qualcuno che ha lasciato l'azienda più di un anno fa ha ancora accesso a tutti i server, perché nessuno ha comunicato le dimissioni agli amministratori. Quando il sistema ERP aggiorna automaticamente gli account AD, elimina anche tutti gli accessi del collaboratore.
Fino a qualche tempo fa, era complicato gestire AD da sistemi operativi diversi da Windows. Da quando Microsoft ha rilasciato Windows Admin Center è possibile accedere alla console Utenti e computer di Active Directory da qualsiasi browser eseguito su qualsiasi sistema operativo. Permette inoltre di utilizzare diversi altri strumenti di gestione di Windows. Installandolo su un server Windows non dovrai più preoccuparti dei limiti delle sessioni o delle difficoltà con RemoteApp. Sarà sufficiente aprire un browser e accedere all'interfaccia web.
Configura i gruppi AD per il controllo degli accessi basato sui ruoli
Lo schema di denominazione della tua azienda potrebbe differire dagli esempi riportati in questo articolo, ma i nomi dei gruppi non sono importanti, mentre è fondamentale l'utilizzo previsto di ciascun gruppo.
Poiché SSSD non esegue la sincronizzazione dei gruppi di Active Directory e si limita a ottenere un elenco di gruppi di cui l'utente è membro durante la procedura di accesso, i gruppi che mancano non impediranno il funzionamento di questa configurazione. Se però all'interno di AD sono presenti più team con autorizzazioni delegate, è preferibile creare tutti i gruppi, in modo che non siano creati nell'unità organizzativa errata o che l'accesso sia sotto il controllo del team sbagliato.
Accesso a macchine specifiche
In Active Directory, crea due gruppi per ogni macchina. Entrambi i gruppi devono includere il nome breve della macchina.
Un gruppo fornisce l'accesso SSH specifico per macchina (indicato come Machine_SSH_Access
da qui in avanti).
L'altro fornisce l'accesso sudo specifico per macchina (indicato come Machine_SUDO_Access
da qui in avanti).
Esempi di formati di gruppo:
<DOMAIN> Linux <hostname> ssh access <DOMAIN> Linux <hostname> sudo access
- <hostname> è il nome breve della macchina
- <DOMAIN> è il nome breve del dominio ed è facoltativo
Accesso a tutte le macchine
In Active Directory crea due gruppi per l'accesso globale.
Uno dei gruppi fornisce l'accesso SSH (indicato come Global_SSH_Access
da qui in avanti) a tutte le macchine.
L'altro fornisce l'accesso sudo (indicato come Global_SUDO_Access
da qui in avanti) a tutte le macchine.
Esempi di formati di gruppo:
<DOMAIN> Linux ssh access <DOMAIN> Linux sudo access
<DOMAIN> è il nome breve del dominio ed è facoltativo.
Nidificazione
È consentita la nidificazione all'interno dei gruppi AD. Per creare un gruppo con accesso a più macchine, non è necessario modificare la configurazione sulle macchine RHEL. Puoi invece configurare il nuovo gruppo come membro del gruppo di accesso per le macchine specifiche. Questo approccio consente di controllare l'accesso direttamente da AD.
Esempio di nidificazione:
- CONTOSO Linux Webserver1 ssh access
- CONTOSO Linux Webservers ssh access
- CONTOSO Web Developers
- User1
- User2
- CONTOSO Web Developers
- CONTOSO Linux Webservers ssh access
Questa nidificazione consente di assegnare ruoli (CONTOSO Web Developers) a gruppi di macchine (CONTOSO Linux Webservers ssh access) anziché utenti a sistemi specifici.
Aggiunta di una macchina Linux a un dominio
Se nell'ambiente in uso è abilitato RC4, leggi la procedura illustrata in questo Avviso di sicurezza Microsoft e disabilitalo.
Per aggiungere una macchina Linux a un dominio:
- Installa i pacchetti richiesti:
$ sudo dnf install -y chrony krb5-workstation \ samba-common-tools oddjob-mkhomedir samba-common \ sssd authselect
- Aggiungi la catena CA del dominio creando
/etc/sssd/pki/sssd_auth_ca_db.pem
e scrivendo la catena del dominio, che non deve necessariamente includere il certificato per i controller di dominio, ma può iniziare con il certificato che ha firmato i relativi certificati. - Aggiungi la catena CA ai trust anchor del sistema:
$ sudo trust anchor /etc/sssd/pki/sssd_auth_ca_db.pem
- Configura SSSD modificando /etc/sssd/sssd.conf o /etc/sssd/conf.d/<DOMAIN>.conf in modo che corrisponda alle righe seguenti.
La modifica di /etc/sssd/conf.d/<DOMAIN>.conf è il metodo più recente e preferito, ma è valida anche la modifica di /etc/sssd/sssd.conf.
[domain/<DOMAIN>] access_provider = simple auth_provider = ad chpass_provider = ad id_provider = ad dyndns_update = true override_homedir = /home/%u override_shell = /bin/bash default_shell = /bin/bash ldap_idmap_range_size = 4000000 cache_credentials = true simple_allow_groups = Global_SSH_Access, Global_SUDO_Access, Machine_SSH_Access, Machine_SUDO_Access ignore_group_members = true ad_gpo_access_control = disabled ad_enable_gc = false ad_use_ldaps = true [sssd] services = nss, pam config_file_version = 2 domains = <DOMAIN>
- <DOMAIN> è il nome di dominio completo del tuo dominio, TUTTO MAIUSCOLO. Non utilizzando tutte le lettere maiuscole, potrebbero verificarsi problemi di autenticazione.
ldap_idmap_range_size
è facoltativo, ma necessario se si lavora in ambiente AD di grandi dimensioni. La modifica di questo valore comporta la modifica dell'hash UID, quindi non modificarlo una volta che la macchina è stata aggiunta al dominio e assicurati di utilizzare lo stesso valore su tutte le macchine.Global_SSH_Access
,Global_SUDO_Access
,Machine_SSH_Access
eMachine_SUDO_Access
sono i gruppi AD creati in precedenza per il controllo degli accessi basato sui ruoli.
- Imposta le autorizzazioni per il file appena scritto: /etc/sssd/sssd.conf o /etc/sssd/conf.d/<DOMAIN>.conf:
$ sudo chmod 400 /etc/sssd/sssd.conf
oppure
$ sudo chmod 400 /etc/sssd/conf.d/*.conf
- Configura KRB5 modificando /etc/krb5.conf in modo che corrisponda alle righe seguenti:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log
[libdefaults] dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = true default_ccache_name = KEYRING:persistent:%{uid} default_realm = <DOMAIN>
[realms]
[domain_realm]
Non è necessario specificare nulla in [realms]
né in [domain_realm]
. SSSD rileva automaticamente queste informazioni dal DNS.
- Configura l'accesso SUDO creando un file in /etc/sudoers.d:
$ sudo visudo -f /etc/sudoers.d/<DOMAIN>
Specifica l'accesso sudo predefinito per i membri dei gruppi sudo
di AD. Puoi utilizzare qualsiasi nome file desiderato, e non deve necessariamente essere chiamato DOMAIN
.
È necessario che ogni spazio sia preceduto da una barra rovesciata (\). Ad esempio: "Linux sudo access" deve essere scritto come "Linux\ sudo\ access".
%Global_SUDO_Access ALL=(ALL) ALL %Machine_SUDO_Access ALL=(ALL) ALL
Global_SUDO_Access e Machine_SUDO_Access sono i gruppi AD creati in precedenza per il controllo degli accessi basato sui ruoli. Il segno di percentuale (%) prima del nome del gruppo indica che si tratta di un gruppo.
Puoi definire nello stesso modo, in file separati o nello stesso file, qualsiasi altro accesso sudo da concedere ai gruppi AD.
- Verifica che il nome host della macchina sia impostato sul nome di dominio completo. Il nome host della macchina non può corrispondere al nome breve:
$ sudo hostnamectl set-hostname $(hostname -f)
- Aggiungi la macchina con uno dei seguenti comandi (
adcli
è compatibile con SMBv1 e SMBv2). Per impostare le informazioni sul sistema operativo in AD durante l'aggiunta, utilizza il comando seguente:
$ source /etc/os-release $ sudo adcli join -U <join_user> --os-name="${NAME}" \ --os-version="${VERSION}" --os-service-pack="${VERSION_ID}"
In alternativa, puoi aggiungere la macchina senza impostare le informazioni sul sistema operativo:
$ sudo adcli join -U <join_user>
<join_user> è l'account AD che verrà utilizzato per aggiungere la macchina al dominio. La password richiesta da adcli
non viene memorizzata. Nell'articolo Delegated Permissions vengono descritte le autorizzazioni necessarie per l'aggiunta.
- Abilita e avvia
SSSD
eoddjobd
:
$ sudo systemctl enable sssd oddjobd $ sudo systemctl restart sssd oddjobd
- Abilita l'accesso con AD:
$ sudo authselect select sssd with-mkhomedir --force
A condizione che il tuo account sia membro di uno dei gruppi che hai creato, ora potrai accedere alla macchina. Non è necessario specificare il dominio. Viene utilizzato il dominio specificato come default_realm
in /etc/krb5.conf
. GNOME potrebbe richiedere il riavvio, mentre in genere sshd
accetta le modifiche senza chiedere il riavvio.
Aggiorna costantemente le informazioni sul sistema operativo
Per impostazione predefinita, l'oggetto computer non è autorizzato ad aggiornare le proprie informazioni sul sistema operativo. Assicurati di accedere a Utenti e computer di Active Directory e di autorizzare SELF a scrivere in ogni campo del sistema operativo negli oggetti del computer (puoi farlo a livello di unità organizzativa). Al termine, aggiorna l'oggetto AD con le informazioni più recenti sul sistema operativo:
$ source /etc/os-release $ sudo /usr/sbin/adcli update --os-name="${NAME}" \ --os-version="${VERSION}" --os-service-pack="${VERSION_ID}"
Queste informazioni possono essere aggiunte come processo cron o come servizio systemd. Ad esempio:
[Unit] Description=Updates AD with current OS information After=sssd.service
[Service] Type=oneshot EnvironmentFile=/etc/os-release ExecStart=/usr/sbin/adcli update --os-name="${NAME}" --os-version="${VERSION}" --os-service-pack="${VERSION_ID}"
[Install] WantedBy=multi-user.target
Abilita l'autenticazione tramite smart card
Questa sezione presuppone che l'autenticazione tramite smart card sia già stata configurata sui computer Windows. In caso contrario, configurare l'autenticazione tramite smart card su un computer Windows prima di procedere.
- Scrivi la catena di certificati per il tuo dominio in
/etc/sssd/pki/sssd_auth_ca_db.pem
. che non deve necessariamente includere il certificato per i controller di dominio, ma può iniziare con il certificato che ha firmato i relativi certificati. - Aggiungi il certificato all'elenco delle CA attendibili della macchina:
$ sudo trust anchor /etc/sssd/pki/sssd_auth_ca_db.pem
- Modifica /etc/sssd/sssd.conf o /etc/sssd/conf.d/<DOMAIN>.conf, in base al file utilizzato quando il dominio è stato aggiunto al sistema, quindi aggiungi la riga seguente nella sezione [domain/<DOMAIN>]. Questa voce indica a SSSD dove cercare il certificato utente. Poiché Windows utilizza l'attributo
userCertificate
, se si utilizza lo stesso attributo, la smart card funzionerà sia su Linux che su Windows.
ldap_user_certificate = userCertificate;binary
Aggiungi queste righe alla fine dello stesso file di configurazione:
[pam] pam_cert_auth = true
- Modifica
/etc/krb5.conf
e aggiungi le seguenti righe in[realms]
, sostituendo <DOMAIN> con il nome di dominio completo del tuo dominio, scritto in LETTERE MAIUSCOLE. In questo modo vengono risolte le mancate corrispondenze che possono verificarsi perché Windows non distingue tra maiuscole e minuscole, al contrario di Linux.
<DOMAIN> = { pkinit_anchors = DIR:/etc/sssd/pki pkinit_kdc_hostname = <DOMAIN> }
- Utilizza uno dei seguenti comandi per abilitare l'autenticazione tramite smart card in PAM:
authselect enable-feature with-smartcard
: abilita l'opzione per l'autenticazione tramite smart card.authselect enable-feature with-smartcard-required
: richiede l'autenticazione tramite smart card. Per impostazione predefinita, sshd non invia una chiamata a PAM durante l'autenticazione con chiavi SSH.authselect enable-feature with-smartcard-lock-on-removal
: richiede l'autenticazione tramite smart card e blocca la macchina quando la smart card viene rimossa.
Abilita l'accesso SSH utilizzando il certificato della smart card
In RHEL 8 e versioni successive, è possibile abilitare l'accesso SSH utilizzando una smart card.
- Verifica che il certificato della smart card venga letto correttamente da AD:
sss_ssh_authorizedkeys ${USER}
Se non viene restituita una chiave pubblica, verifica che l'autenticazione tramite smart card sia configurata correttamente.
- Modifica
/etc/ssh/sshd_config
aggiungendo queste righe:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandUser nobody
- Riavvia
sshd
:
$ sudo systemctl restart sshd
Per accedere da un client tramite SSH, utilizza l'opzione PKCS11Provider=/usr/lib64/opensc-pkcs11.so
. A condizione che la smart card corrisponda a una chiave pubblica dell'utente, verrà richiesto di inserire il PIN o la password della smart card:
$ ssh -o PKCS11Provider=/usr/lib64/opensc-pkcs11.so <host>
Ulteriori informazioni
Hai aggiunto al dominio una macchina dotata del controllo degli accessi basato sui ruoli che consente di stabilire chi può accedere o eseguire comandi con privilegi. La gestione diventa più semplice perché puoi trarre vantaggio dal lavoro già compiuto da altri. Ecco alcuni aspetti di cui tenere conto:
- La disattivazione di un utente in AD blocca immediatamente l'accesso dell'utente al computer. Proprio come con Windows, chiunque abbia già effettuato l'accesso rimane connesso.
- Le modifiche ai gruppi dell'utente vengono aggiornate durante l'accesso, proprio come avviene con Windows. Questa operazione viene eseguita prima di verificare se sono autorizzati ad accedere.
- SSSD riconosce i siti. Se configuri i siti nella console Siti e servizi di Active Directory, SSSD si connette al controller di dominio appropriato.
- SSSD abilita la rotazione automatica della password della macchina.
- SSSD crea e gestisce automaticamente i record DNS di una macchina, purché siano abilitati gli aggiornamenti dinamici (protetti o non protetti).
In genere sconsiglio di utilizzare gli strumenti Windows per gestire i sistemi Linux e viceversa, perché possono verificarsi perdite di funzionalità importanti o problemi di sicurezza, oppure perché è più semplice eseguire la stessa attività con uno strumento nativo. Con Active Directory però è diverso. Gli sviluppatori di SSSD si sono impegnati molto per garantirne la compatibilità con AD, semplificando così il tuo lavoro.
Sull'autore
Jason Nagin joined Red Hat in 2022 as a RHEL Specialist Solutions Architect. He is based out of Dallas, Texas.
Ricerca per canale
Automazione
Novità sull'automazione IT di tecnologie, team e ambienti
Intelligenza artificiale
Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque
Hybrid cloud open source
Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido
Sicurezza
Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti
Edge computing
Aggiornamenti sulle piattaforme che semplificano l'operatività edge
Infrastruttura
Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale
Applicazioni
Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili
Serie originali
Raccontiamo le interessanti storie di leader e creatori di tecnologie pensate per le aziende
Prodotti
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servizi cloud
- Scopri tutti i prodotti
Strumenti
- Formazione e certificazioni
- Il mio account
- Supporto clienti
- Risorse per sviluppatori
- Trova un partner
- Red Hat Ecosystem Catalog
- Calcola il valore delle soluzioni Red Hat
- Documentazione
Prova, acquista, vendi
Comunica
- Contatta l'ufficio vendite
- Contatta l'assistenza clienti
- Contatta un esperto della formazione
- Social media
Informazioni su Red Hat
Red Hat è leader mondiale nella fornitura di soluzioni open source per le aziende, tra cui Linux, Kubernetes, container e soluzioni cloud. Le nostre soluzioni open source, rese sicure per un uso aziendale, consentono di operare su più piattaforme e ambienti, dal datacenter centrale all'edge della rete.
Seleziona la tua lingua
Red Hat legal and privacy links
- Informazioni su Red Hat
- Opportunità di lavoro
- Eventi
- Sedi
- Contattaci
- Blog di Red Hat
- Diversità, equità e inclusione
- Cool Stuff Store
- Red Hat Summit