Protezione del bastion

Questo argomento fornisce informazioni e suggerimenti sulla sicurezza per il bastion.

Oracle Cloud Infrastructure Bastion fornisce un accesso limitato e limitato nel tempo alle risorse di destinazione che non hanno endpoint pubblici. I bastion consentono agli utenti autorizzati di connettersi da indirizzi IP specifici alle risorse di destinazione utilizzando le sessioni SSH (Secure Shell). Quando si è connessi, gli utenti possono interagire con la risorsa di destinazione utilizzando qualsiasi software o protocollo supportato da SSH. Ad esempio, è possibile utilizzare il protocollo RDP (Remote Desktop Protocol) per connettersi a un host Windows oppure utilizzare Oracle Net Services per connettersi a un database.

Responsabilità di sicurezza

Per utilizzare Bastion in modo sicuro, scopri le tue responsabilità in materia di sicurezza e conformità.

In generale, Oracle fornisce la sicurezza dell'infrastruttura e delle operazioni cloud, come i controlli di accesso degli operatori cloud e l'applicazione di patch di sicurezza dell'infrastruttura. Sei responsabile della configurazione sicura delle tue risorse cloud. La sicurezza nel cloud è una responsabilità condivisa tra te e Oracle.

Oracle è responsabile dei seguenti requisiti di sicurezza:

  • Sicurezza fisica: Oracle è responsabile della protezione dell'infrastruttura globale che esegue tutti i servizi offerti in Oracle Cloud Infrastructure. Questa infrastruttura è costituita da hardware, software, networking e strutture che eseguono i servizi Oracle Cloud Infrastructure.

In questa pagina sono descritte le responsabilità di sicurezza dell'utente, che includono le aree riportate di seguito.

  • Controllo dell'accesso: limitare il più possibile i privilegi. Agli utenti dovrebbe essere concesso solo l'accesso necessario per svolgere il proprio lavoro.
  • Sicurezza di rete: limita i nodi della rete cloud che possono accedere ai bastion.
  • Sicurezza dell'host: configurare SSH sui client e sulle istanze di destinazione per garantire la massima sicurezza.

Task di sicurezza iniziali

Utilizzare questa lista di controllo per identificare i task eseguiti per proteggere Bastion in una nuova tenancy Oracle Cloud Infrastructure.

Attività Ulteriori informazioni
Utilizzare i criteri IAM per concedere l'accesso a utenti e risorse Criteri IAM
Durante la creazione dei bastion, limitare l'accesso alla rete Sicurezza della rete

Task di sicurezza di routine

Dopo aver iniziato a usare Bastion, utilizzare questa lista di controllo per identificare i task di sicurezza che si consiglia di eseguire regolarmente.

Attività Ulteriori informazioni
Integra istanze di destinazione con IAM Controllo dell'accesso
Comunicazione sicura tra clienti e bastioni Cifratura dati
Configurare il server SSH sulle istanze di destinazione per la massima sicurezza Rafforzamento
Eseguire un controllo della sicurezza Audit

Criteri IAM

Utilizzare i criteri per limitare l'accesso al bastion.

Una policy specifica chi può accedere alle risorse di Oracle Cloud Infrastructure e come. Per ulteriori informazioni, vedere Funzionamento dei criteri.

Assegnare a un gruppo i privilegi minimi necessari per eseguire le proprie responsabilità. Ogni criterio ha un verbo che descrive le azioni che il gruppo può eseguire. Dal minor numero di accessi al massimo, i verbi disponibili sono: inspect, read, use e manage.

Il bastion supporta le variabili dei criteri per limitare ulteriormente l'accesso ai bastion, tra cui:

  • target.bastion-session.username: limita l'accesso a nomi utente specifici del sistema operativo POSIX durante la creazione di una sessione che si connette a un'istanza di computazione.
  • target.resource.ocid: limita l'accesso a istanze di computazione specifiche durante la creazione di una sessione.
Nota

Si consiglia di limitare l'accesso all'utente opc (e all'utente ubuntu nelle immagini della piattaforma Ubuntu) perché per impostazione predefinita, dispone di funzionalità sudoer sulle immagini della piattaforma Oracle Cloud Infrastructure.

Si consiglia di concedere le autorizzazioni DELETE a un set minimo di utenti e gruppi IAM. Questa pratica riduce al minimo la perdita di dati da eliminazioni involontarie da parte di utenti autorizzati o da attori malintenzionati. Assegnare solo le autorizzazioni DELETE agli amministratori della tenancy e del compartimento.

Consenti a un gruppo di gestire tutti i bastion e tutte le sessioni bastion

Consentire agli utenti del gruppo SecurityAdmins di creare, aggiornare ed eliminare tutte le risorse Bastion nell'intera tenancy:

Allow group SecurityAdmins to manage bastion-family in tenancy
Allow group SecurityAdmins to manage virtual-network-family in tenancy
Allow group SecurityAdmins to read instance-family in tenancy
Allow group SecurityAdmins to read instance-agent-plugins in tenancy
Allow group SecurityAdmins to inspect work-requests in tenancy
Consenti a un gruppo di creare qualsiasi sessione bastion

Consentire agli utenti del gruppo BastionUsers di creare, connettersi e terminare le sessioni nell'intera tenancy:

Allow group BastionUsers to use bastion in tenancy
Allow group BastionUsers to manage bastion-session in tenancy
Allow group BastionUsers to manage virtual-network-family in tenancy
Allow group BastionUsers to read instance-family in tenancy
Allow group BastionUsers to read instance-agent-plugins in tenancy
Allow group BastionUsers to inspect work-requests in tenancy
Consenti a un gruppo di creare sessioni bastion in un compartimento specifico e solo a un'istanza di computazione specifica

Consentire agli utenti del gruppo SalesAdmins di creare, connettersi e terminare le sessioni per un host di destinazione specifico nel compartimento SalesApps:

Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.resource.ocid='<instance_OCID>'}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
Consenti a un gruppo di creare sessioni bastion in un compartimento specifico e con un nome utente specifico

Consentire agli utenti del gruppo SalesAdmins di creare, connettersi e terminare le sessioni nel compartimento SalesApps e con l'utente opc:

Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.bastion-session.username in ('opc')}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
Consenti agli utenti di creare solo sessioni bastion con il proprio nome utente OCI

Consentire a qualsiasi utente di creare, connettersi e terminare le sessioni nel compartimento HRProd, ma solo se specifica un nome utente che corrisponde esattamente al proprio nome utente IAM:

Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}

Per ulteriori informazioni sui criteri bastion e per visualizzare altri esempi, vedere Criteri bastion.

Controllo dell'accesso

Oltre a creare criteri IAM, segui queste best practice aggiuntive per proteggere l'accesso alle destinazioni a cui ti connetti con Bastion.

Abilita autenticazione a più fattori (MFA)

Il modulo PAM (Pluggable Authentication Module) consente di integrare le istanze Linux di destinazione con IAM per eseguire l'autenticazione dell'utente finale con l'autenticazione del primo e del secondo fattore.

Gli utenti finali possono eseguire il login a un server Linux utilizzando SSH e l'autenticazione con le proprie credenziali utente IAM. Inoltre, puoi utilizzare le funzionalità di autenticazione a più fattori di IAM. Con l'autenticazione MFA, agli utenti finali viene richiesto di eseguire l'autenticazione con un secondo fattore, ad esempio un codice password monouso inviato tramite e-mail, SMS, un'applicazione Mobile Authenticator o di eseguire l'autenticazione utilizzando le domande di sicurezza.

  1. Prima di configurare PAM e MFA, verificare che la configurazione SSH dell'istanza soddisfi i requisiti minimi per il bastion. Consultare la sezione SSH Server is Not Configured Properly on Target Instance in Troubleshooting Bastion.
  2. Installare e configurare PAM nell'istanza, quindi abilitare l'autenticazione MFA. Vedere Enabling MFA to Authentication in Linux.

Cifratura dati

Attenersi alle procedure consigliate riportate di seguito per utilizzare la shell SSH per cifrare la comunicazione tra client e bastion.

Utilizzare un modulo certificato FIPS

Si consiglia di utilizzare il client OpenSSH 7.6 con protezione FIPS (Federal Information Processing Standard) per tutti i sistemi operativi client.

Per maggiori dettagli, consultare la documentazione di OpenSSL FIPS e il programma di convalida dei moduli crittografici.

Nota

Il modulo crittografico del client Oracle Linux 7.8 OpenSSH non ha ancora ricevuto la certificazione FIPS. Vedere Oracle FIPS Certifications.

Per impostazione predefinita, le coppie di chiavi RSA non sono supportate nel client OpenSSH, versione 8 e successive. Per abilitare le coppie di chiavi RSA, è necessario aggiungere la stanza seguente alla configurazione SSH.

Host *
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

Per maggiori dettagli, consulta le note di rilascio di OpenSSH.

Non riutilizzare le coppie di chiavi SSH per le sessioni

Rigenera una nuova coppia di chiavi SSH effimere per ogni nuova sessione bastion.

Non riutilizzare le coppie di chiavi generate in precedenza. Creare nuove coppie di chiavi sia per l'inoltro delle porte che per i tipi di sessione SSH gestiti.

Sicurezza della rete

Accesso di rete sicuro alle risorse a cui ci si connette utilizzando Bastion.

Quando si crea un bastion, utilizzare la lista di inclusione dei blocchi CIDR per specificare uno o più intervalli di indirizzi nella notazione CIDR che si desidera consentire di connettersi alle sessioni ospitate da questo bastion.

Un intervallo di indirizzi più limitato offre una maggiore sicurezza. Non specificare un intervallo CIDR aperto come 0.0.0.0/0.

Rafforzamento

Configurare il server SSH sulle istanze di computazione di destinazione per la massima sicurezza.

Si consiglia di aggiornare i valori predefiniti per queste impostazioni in /etc/ssh/sshd_config.

Impostazione descrizione;
MaxAuthTries Specifica il numero massimo di tentativi di autenticazione consentiti per connessione. Dopo che il numero di errori ha raggiunto la metà di questo valore, vengono registrati gli errori.
ClientAliveCountMax Imposta il numero di messaggi attivi del client che possono essere inviati senza ricevere alcun messaggio dal client. Se questa soglia viene raggiunta durante l'invio dei messaggi attivi del client, il server disconnette il client, interrompendo la sessione.
ClientAliveInterval Imposta un intervallo di timeout in secondi dopo il quale, se non sono stati ricevuti dati dal client, il server invierà un messaggio attraverso il canale cifrato per richiedere una risposta dal client.

Audit

Individuare i log degli accessi e altri dati di sicurezza per Bastion.

Il servizio di audit registra automaticamente tutte le chiamate API alle risorse Oracle Cloud Infrastructure. È possibile raggiungere gli obiettivi di sicurezza e conformità utilizzando il servizio di audit per monitorare tutte le attività utente all'interno della tenancy. Poiché tutte le chiamate alla console, all'SDK e alla riga di comando (CLI) passano attraverso le nostre API, viene inclusa tutta l'attività da tali origini. I record di audit sono disponibili tramite un'interfaccia API di query autenticata e filtrabile oppure possono essere recuperati come file in batch dallo storage degli oggetti. I contenuti del log di audit includono l'attività che si è verificata, l'utente che l'ha avviata, la data e l'ora della richiesta, nonché l'IP di origine, l'user agent e le intestazioni HTTP della richiesta. Vedere Visualizzazione degli eventi del log di audit.

Esempio di log di controllo

Di seguito è riportato un estratto da una voce di log per la creazione di una nuova sessione bastion.

{
  "datetime": 1651547126164,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 58181,
        "bastionId": "ocid1.bastion.oc1.<unique_id>",
        "bastionName": "mybastion",
        "displayName": "mysession",
        "lifecycleState": "CREATING",
        "sessionId": "ocid1.bastionsession.oc1.<unique_id>",
        "sessionType": "MANAGED_SSH",
        "targetResourceDisplayName": "mylinuxinstance",
        "targetResourceId": "ocid1.instance.oc1.<unique_id>",
        "targetResourceOperatingSystemUserName": "opc",
        "targetResourcePort": "22",
        "targetResourcePrivateIpAddress": "<target_ip_address>"
      },
      "availabilityDomain": "AD2",
      "compartmentId": "ocid1.compartment.oc1..<unique_id>",
      "compartmentName": "mycompartment",
      "definedTags": null,
      "eventGroupingId": "ocid1.bastionworkrequest.oc1.<unique_id>",
      "eventName": "CreateSession",
      "freeformTags": null,
      "identity": {
        "authType": "natv",
        "callerId": null,
        "callerName": null,
        "consoleSessionId": "<unique_id>",
        "credentials": "<unique_id>",
        "ipAddress": "<source_ip>",
        "principalId": "ocid1.user.oc1..<unique_id>",
        "principalName": "<user_id>",
        "tenantId": "ocid1.tenancy.oc1..<unique_id>",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
      },
      "message": "Session-20220502-2304 CreateSession succeeded",
      ...
  }
}

Se Cloud Guard è stato abilitato nella tenancy, viene segnalato qualsiasi attività utente che costituisce un potenziale problema di sicurezza. Quando rileva un problema, Cloud Guard suggerisce azioni correttive. Inoltre, puoi configurare Cloud Guard in modo che esegua automaticamente determinate azioni. Vedere la Guida introduttiva a Cloud Guard e l'elaborazione dei problemi segnalati.