Iscriviti al feed

Red Hat Ansible Automation Platform è una piattaforma per l'implementazione dell'automazione a livello aziendale, il che la rende uno strumento ideale per gli audit di sicurezza. Le misure di sicurezza vanno implementate su più livelli, ma questo articolo è dedicato alla riduzione degli attacchi SSH agli host gestiti. Rafforzare gli host gestiti non basta per eliminare tutti i rischi per la sicurezza, ma permette di ridurli al minimo (in particolare gli attacchi di forza bruta) o limitarne gli effetti (consentendo le connessioni SSH solo da host autorizzati, applicando sudo e così via). Questo articolo è incentrato su Ansible Automation Platform, ma la maggior parte della configurazione avanzata viene applicata agli host gestiti (modifica di sshd_config, sssd.conf, access.conf) in modo da poter applicare questi concetti ad altri strumenti di configurazione centralizzati come Red Hat Satellite.

Questo articolo illustra come potenziare la configurazione dell'host gestito utilizzando questo schema:

  • Più account di servizio per l'accesso SSH agli host, creati in AD/LDAP:
    • Chiave pubblica archiviata in AD/LDAP per l'accesso SSH con autenticazione con chiave pubblica
    • Password archiviata in AD/LDAP solo per sudo (non per l'accesso SSH)
  • Su qualsiasi host gestito:
    • Un account di servizio può accedere solo dai nodi di esecuzione di Ansible Automation Platform (qualsiasi tentativo di accesso da qualsiasi altra posizione viene rifiutato)
    • L'escalation dei privilegi con sudo per qualsiasi account di servizio richiede una password
hardening-ssh-connections-with-ansible-img1-it

Configurazione

Inizia da un deployment standard non protetto, che in genere include:

  • Un account di servizio Ansible Automation Platform
    • Utilizzato per l'accesso SSH agli host
    • Creato in AD/LDAP con una password casuale
  • Su qualsiasi host:
    • L'account di servizio può accedere con la password
    • L'account di servizio può eseguire comandi con i privilegi di altri utenti (sudo) senza utilizzare la password

Rafforzamento della configurazione

Molte aziende creano un solo account di servizio per ogni servizio. In questo scenario Ansible Automation Platform, viene creato un solo account di servizio da utilizzare con Ansible Automation Platform per connettersi a tutti gli host gestiti. Tuttavia, se per qualsiasi motivo l'account di servizio viene compromesso, l'autore dell'attacco potrebbe accedere a qualsiasi host gestito.

Questa è la prima modifica da apportare. La sicurezza viene implementata a più livelli, e un primo passo importante è la creazione di account di servizio diversi. Non esiste un approccio universale all'implementazione. Analizza la tua architettura e decidi cosa ha più senso per la tua infrastruttura. Di seguito sono riportate alcune strategie comuni per la creazione di account di servizio diversi:

  • Posizione o datacenter: crea un account di servizio per ogni datacenter
  • Organizzazione o dominio: crea un account di servizio per ogni organizzazione o dominio
  • Sistema operativo: crea un account di servizio per ogni tipo di host (Red Hat Enterprise Linux 7, 8, 9 e così via)
  • Utilizzo: crea un account di servizio per ogni utilizzo host dell'applicazione principale (database, Apache, Kafka)
  • Sicurezza: crea un account di servizio per ogni area di sicurezza (DMZ, Internal Zone 1 e così via)

Crea un gruppo comune per tutti gli account di servizio. In questo modo è più semplice consentire l'accesso a un account di servizio e negare l'accesso a tutti gli altri.

Autenticazione con chiave pubblica SSH tramite AD/LDAP

Basa l'autenticazione SSH per gli account di servizio su chiavi pubbliche. Sebbene le chiavi pubbliche presentino alcuni svantaggi rispetto alle password, il loro utilizzo annulla l'efficacia degli attacchi di forza bruta per l'accesso SSH.

Innanzitutto, aggiungi le chiavi SSH pubbliche di ciascun account di servizio all'attributo altSecurityIdentities in AD/LDAP.

Su ciascun host gestito, aggiungi ssh all'elenco dei servizi in /etc/sssd/sssd.conf:

services = nss, pam, ssh

Aggiungi i parametri ldap_user_extra_attrs e ldap_user_ssh_public_key alla sezione [domain] di /etc/sssd/sssd.conf:

[domain/example.com]
ldap_user_extra_attrs = altSecurityIdentities
ldap_user_ssh_public_key = altSecurityIdentities

L'opzione AuthorizedKeysCommandUser specifica l'account utente utilizzato per eseguire AuthorizedKeysCommand. Consigliamo di utilizzare un utente dedicato, quindi aggiungi questi parametri SSH a /etc/ssh/sshd_config:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

Per ulteriori informazioni, leggi l'articolo su come memorizzare le chiavi SSH degli utenti in Active Directory per l'autenticazione SSH, disponibile su Red Hat Customer Portal.

Nega l'autenticazione tramite password

Aggiungi questi parametri SSH a /etc/ssh/sshd_config su tutti gli host gestiti per negare l'utilizzo dell'autenticazione tramite password SSH (<Service Account> sostituisci con il nome effettivo dell'account del servizio):

Match User <Service Account>
PasswordAuthentication no
Match all

Richiedi la password per i privilegi sudo

Richiedi la password dell'account del servizio per i privilegi sudo. A tale scopo, crea un nuovo file con il nome del gruppo di account di servizio in /etc/sudoers.d e aggiungi questa riga:

%<Service Account Group>   ALL=(ALL:ALL) ALL

Ad esempio, se il nome del gruppo è aapsas:

$ cat /etc/sudoers.d/aapsas
%appsas   ALL=(ALL:ALL) ALL

Anche se le procedure consigliate in materia di sicurezza suggeriscono di aggiungere solo alcuni specifici comandi consentiti per eseguire comandi sudo, con Ansible Automation Platform questo non è possibile. Nel caso degli host gestiti, Ansible Automation Platform comunica con i computer di destinazione (in genere tramite SSH) e copia ed esegue uno script Python.

Consenti le connessioni dai nodi di esecuzione autorizzati di Ansible Automation Platform

La configurazione di protezione avanzata prevede che le connessioni SSH per un account di servizio provengano solo dai nodi di esecuzione di Ansible Automation Platform o LOCAL (per sudo). Per implementarla, aggiungi una riga in /etc/security/access.conf. La prima riga consente le connessioni da Ansible Automation Platform e LOCAL, mentre l'altra vieta qualsiasi altro account di servizio.

+: <Service Account> : <AAP Execution Nodes IPS> LOCAL
-: <Service Account Group> : ALL

Automazione di tutta la configurazione

Questo articolo ha indicato i passaggi necessari per potenziare gli host gestiti per l'accesso SSH, ma nel caso di Ansible Automation Platform non è necessario eseguire tutto manualmente. Tutti i passaggi di configurazione descritti possono essere facilmente automatizzati utilizzando il modulo del modello. Crea modelli per i file di configurazione /etc/security/access.conf, /etc/sssd/sssd.conf e /etc/ssh/sshd_config.

Stai modificando i parametri di sicurezza della connessione dell'host di destinazione, quindi fai attenzione. Una configurazione errata potrebbe causare il malfunzionamento del servizio SSHD, concedere l'accesso a utenti che non ne hanno bisogno e così via. Ricontrolla il tuo lavoro prima di propagare le modifiche.

Naturalmente, per implementare misure di sicurezza efficaci non è sufficiente una configurazione una tantum. Il rafforzamento della configurazione SSH per gli host gestiti è un passaggio importante in un processo continuo di protezione, ed è reso più semplice grazie ad Ansible Automation Platform.


Sull'autore

Alberto Gonzalez de Dios is a Senior Cloud consultant: Automation and OpenShift specialist. He joined Red Hat in 2018, and he is certified in Azure, AWS and Red Hat (Red Hat Certified Architect Level II).

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Ricerca per canale

automation icon

Automazione

Novità sull'automazione IT di tecnologie, team e ambienti

AI icon

Intelligenza artificiale

Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque

open hybrid cloud icon

Hybrid cloud open source

Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido

security icon

Sicurezza

Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti

edge icon

Edge computing

Aggiornamenti sulle piattaforme che semplificano l'operatività edge

Infrastructure icon

Infrastruttura

Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale

application development icon

Applicazioni

Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili

Original series icon

Serie originali

Raccontiamo le interessanti storie di leader e creatori di tecnologie pensate per le aziende