Condividi tramite


Allineamento delle immagini Ubuntu del servizio Azure Kubernetes con il benchmark CIS (Center for Internet Security)

Come servizio protetto, il servizio Azure Kubernetes è conforme agli standard SOC, ISO, PCI DSS e HIPAA. Questo articolo illustra la configurazione del sistema operativo di sicurezza applicata all'immagine Ubuntu usata dal servizio Azure Kubernetes. Questa configurazione di sicurezza si basa sulla baseline di sicurezza Linux di Azure, allineata al benchmark CIS. Per altre informazioni sulla sicurezza del servizio Azure Kubernetes, vedere Concetti di sicurezza per applicazioni e cluster nel servizio Azure Kubernetes. Per altre informazioni sulla sicurezza del servizio Azure Kubernetes, vedere Concetti di sicurezza per applicazioni e cluster nel servizio Azure Kubernetes. Per altre informazioni sul benchmark CIS, vedere Benchmark di Center for Internet Security (CIS). Per altre informazioni sulle baseline di sicurezza di Azure per Linux, vedere Baseline di sicurezza di Linux.

Ubuntu LTS 18.04

I cluster del servizio Azure Kubernetes vengono distribuiti in macchine virtuali host, che eseguono un sistema operativo con configurazioni protette predefinite. Questo sistema operativo viene usato per i contenitori in esecuzione nel servizio Azure Kubernetes. Questo sistema operativo host si basa su un'immagine Ubuntu 18.04.LTS con configurazioni di sicurezza applicate.

Come parte del sistema operativo ottimizzato per la sicurezza:

  • Per impostazione predefinita, il servizio Azure Kubernetes offre un sistema operativo host ottimizzato per la sicurezza, ma non è possibile selezionare un sistema operativo alternativo.
  • Il sistema operativo host ottimizzato per la sicurezza viene compilato e gestito in modo specifico per il servizio Azure Kubernetes e non è supportato all'esterno della piattaforma del servizio Azure Kubernetes.
  • Alcuni dei driver del modulo kernel non necessari sono stati disabilitati nel sistema operativo per ridurre la superficie di attacco.

Nota

Non essendo correlato ai benchmark CIS, Azure applica patch giornaliere, incluse le patch di sicurezza, agli host di macchine virtuali del servizio Azure Kubernetes.

L'obiettivo della configurazione protetta integrata nel sistema operativo host è ridurre la superficie di attacco e ottimizzare la distribuzione dei contenitori in modo sicuro.

Di seguito sono riportati i risultati delle raccomandazioni CIS Ubuntu 18.04 LTS Benchmark v2.1.0.

Le raccomandazioni possono avere uno dei motivi seguenti:

  • Potenziale impatto sulle operazioni - La raccomandazione non è stata applicata perché avrebbe un effetto negativo sul servizio.
  • Eseguita altrove - La raccomandazione è eseguita da un altro controllo nell'ambiente di calcolo cloud di Azure.

Di seguito sono riportate le regole CIS implementate:

Numero del paragrafo CIS Descrizione della raccomandazione Status Motivo
1 Configurazione iniziale
1.1 Configurazione dei file system
1.1.1 Disabilitare i file system inutilizzati
1.1.1.1 Verificare che il montaggio dei file system cramfs sia disabilitato Riuscito
1.1.1.2 Verificare che il montaggio dei file system freevxfs sia disabilitato Riuscito
1.1.1.3 Verificare che il montaggio dei file system jffs2 sia disabilitato Riuscito
1.1.1.4 Verificare che il montaggio dei file system hfs sia disabilitato Riuscito
1.1.1.5 Verificare che il montaggio dei file system hfsplus sia disabilitato Riuscito
1.1.1.6 Assicurarsi che il montaggio dei file system udf sia disabilitato Errore Potenziale impatto operativo
1.1.2 Verificare che /tmp sia configurato Errore
1.1.3 Verificare che l'opzione nodev sia impostata sulla partizione /tmp Errore
1.1.4 Verificare che l'opzione nosuid sia impostata sulla partizione /tmp Riuscito
1.1.5 Assicurarsi che l'opzione noexec sia impostata nella partizione /tmp Riuscito
1.1.6 Verificare che /dev/shm sia configurato Riuscito
1.1.7 Verificare che l'opzione nodev sia impostata sulla partizione /dev/shm Riuscito
1.1.8 Verificare che l'opzione nosuid sia impostata sulla partizione /dev/shm Riuscito
1.1.9 Assicurarsi che l'opzione noexec sia impostata sulla partizione /dev/shm Errore Potenziale impatto sulle operazioni
1.1.12 Verificare che la partizione /var/tmp includa l'opzione nodev Riuscito
1.1.13 Verificare che la partizione /var/tmp includa l'opzione nosuid Riuscito
1.1.14 Verificare che la partizione /var/tmp includa l'opzione noexec Riuscito
1.1.18 Assicurarsi che la partizione /home includa l'opzione nodev Riuscito
1.1.19 Verificare che l'opzione nodev sia impostata sulle partizioni di supporti rimovibili Non applicabile
1.1.20 Assicurarsi che l'opzione nosuid sia impostata sulle partizioni di supporti rimovibili Non applicabile
1.1.21 Assicurarsi che l'opzione noexec sia impostata sulle partizioni di supporti rimovibili Non applicabile
1.1.22 Assicurarsi che il bit permanente sia impostato su tutte le directory scrivibili da tutti Errore Potenziale impatto sulle operazioni
1.1.23 Disabilitare il montaggio automatico Riuscito
1.1.24 Disabilitare l'archiviazione USB Riuscito
1.2 Configurare gli aggiornamenti software
1.2.1 Verificare che i repository di gestione pacchetti siano configurati Riuscito Trattato altrove
1.2.2 Verificare che le chiavi GPG siano configurate Non applicabile
1.3 Controllo dell'integrità dei file system
1.3.1 Verificare che AIDE sia installato Errore Trattato altrove
1.3.2 Verificare che l'integrità dei file system sia controllata regolarmente Errore Trattato altrove
1.4 Impostazioni di avvio protetto
1.4.1 Verificare che le autorizzazioni per la configurazione di bootloader non siano sottoposte a override Errore
1.4.2 Verificare che la password del bootloader sia impostata Errore Non applicabile
1.4.3 Verificare che le autorizzazioni per la configurazione del bootloader siano configurate Errore
1.4.4 Verificare che l'autenticazione sia necessaria per la modalità utente singolo Errore Non applicabile
1,5 Protezione avanzata dei processi aggiuntivi
1.5.1 Verificare che il supporto XD/NX sia abilitato Non applicabile
1.5.2 Verificare che l'assegnazione casuale del layout dello spazio indirizzi (ASLR) sia abilitata Riuscito
1.5.3 Assicurarsi che prelink sia disabilitato Riuscito
1.5.4 Verificare che i dump di base siano limitati Riuscito
1.6 Controllo di accesso obbligatorio
1.6.1 Configurare AppArmor
1.6.1.1 Verificare che AppArmor sia installato Riuscito
1.6.1.2 Verificare che AppArmor sia abilitato nella configurazione del bootloader Errore Potenziale impatto sulle operazioni
1.6.1.3 Verificare che tutti i profili AppArmor siano in modalità di imposizione o di reclamo Riuscito
1,7 Banner di avviso della riga di comando
1.7.1 Verificare che il messaggio del giorno sia configurato correttamente Riuscito
1.7.2 Verificare che le autorizzazioni per /etc/issue.net siano configurate Riuscito
1.7.3 Verificare che le autorizzazioni per /etc/issue siano configurate Riuscito
1.7.4 Verificare che le autorizzazioni per /etc/motd siano configurate Riuscito
1.7.5 Verificare che il banner di avviso di accesso remoto sia configurato correttamente Riuscito
1.7.6 Verificare che il banner di avviso di accesso locale sia configurato correttamente Riuscito
1.8 Gestione della visualizzazione GNOME
1.8.2 Verificare che il banner di accesso GDM sia configurato Riuscito
1.8.3 Verificare che disable-user-list sia abilitato Riuscito
1.8.4 Verificare che XDCMP non sia abilitato Riuscito
1,9 Verificare che gli aggiornamenti, le patch e il software di sicurezza aggiuntivo siano installati Riuscito
2 Servizi
2.1 Servizi per scopi speciali
2.1.1 Sincronizzazione dell'ora
2.1.1.1 Verificare che la sincronizzazione dell'ora sia in uso Riuscito
2.1.1.2 Verificare che systemd-timesyncd sia configurato Non applicabile Il servizio Azure Kubernetes usa ntpd per timesync
2.1.1.3 Verificare che chrony sia configurato Errore Trattato altrove
2.1.1.4 Verificare che ntp sia configurato Riuscito
2.1.2 Verificare che X Window System non sia installato Riuscito
2.1.3 Verificare che il server Avahi non sia installato Riuscito
2.1.4 Verificare che CUPS non sia installato Riuscito
2.1.5 Verificare che il server DHCP non sia installato Riuscito
2.1.6 Verificare che il server LDAP non sia installato Riuscito
2.1.7 Verificare che NFS non sia installato Riuscito
2.1.8 Verificare che il server DNS non sia installato Riuscito
2.1.9 Verificare che il server FTP non sia installato Riuscito
2.1.10 Verificare che il server HTTP non sia installato Riuscito
2.1.11 Verificare che i server IMAP e POP3 non siano installati Riuscito
2.1.12 Verificare che Samba non sia installato Riuscito
2.1.13 Verificare che il server proxy HTTP non sia installato Riuscito
2.1.14 Verificare che il server SNMP non sia installato Riuscito
2.1.15 Verificare che l'agente di trasferimento della posta elettronica sia configurato per la modalità solo locale Riuscito
2.1.16 Verificare che il servizio rsync non sia installato Errore
2.1.17 Verificare che il server NIS non sia installato Riuscito
2.2 Client del servizio
2.2.1 Verificare che il client NIS non sia installato Riuscito
2.2.2 Verificare che il client rsh non sia installato Riuscito
2.2.3 Verificare che il client talk non sia installato Riuscito
2.2.4 Verificare che il client telnet non sia installato Errore
2.2.5 Verificare che il client LDAP non sia installato Riuscito
2.2.6 Verificare che RPC non sia installato Errore Potenziale impatto sulle operazioni
2.3 Assicurarsi che i servizi non essenziali vengano rimossi o mascherati Riuscito
3 Configurazione di rete
3.1 Disabilitare i protocolli e i dispositivi di rete inutilizzati
3.1.2 Verificare che le interfacce wireless siano disabilitate Riuscito
3.2 Parametri di rete (solo host)
3.2.1 Verificare che l'invio di reindirizzamenti di pacchetti sia disabilitato Riuscito
3.2.2 Verificare che l'inoltro IP sia disabilitato Errore Non applicabile
3.3 Parametri di rete (host e router)
3.3.1 Verificare che i pacchetti con reindirizzamento di origine non vengano accettati Riuscito
3.3.2 Verificare che i reindirizzamenti ICMP non siano accettati Riuscito
3.3.3 Verificare che i reindirizzamenti ICMP protetti non siano accettati Riuscito
3.3.4 Verificare che i pacchetti sospetti vengano registrati Riuscito
3.3.5 Verificare che le richieste ICMP di trasmissione vengano ignorate Riuscito
3.3.6 Verificare che le risposte ICMP fittizie vengano ignorate Riuscito
3.3.7 Verificare che il filtro Inverti tracciato sia abilitato Riuscito
3.3.8 Verificare che i cookie TCP SYN siano abilitati Riuscito
3.3.9 Verificare che gli annunci del router IPv6 non siano accettati Riuscito
3.4 Protocolli di rete non comuni
3.5 Configurazione del firewall
3.5.1 Configurare UncomplicatedFirewall
3.5.1.1 Verificare che ufw sia installato Riuscito
3.5.1.2 Verificare che iptables-persistent non sia installato con ufw Riuscito
3.5.1.3 Verificare che il servizio ufw sia abilitato Errore Trattato altrove
3.5.1.4 Verificare che il traffico di loopback ufw sia configurato Errore Trattato altrove
3.5.1.5 Verificare che le connessioni in uscita ufw siano configurate Non applicabile Trattato altrove
3.5.1.6 Verificare che le regole del firewall ufw esistano per tutte le porte aperte Non applicabile Trattato altrove
3.5.1.7 Assicurarsi che il criterio firewall di rifiuto ufw sia predefinito Errore Trattato altrove
3.5.2 Configurare le tabelle nftable
3.5.2.1 Verificare che le tabelle nftable siano installate Errore Trattato altrove
3.5.2.2 Assicurarsi che ufw sia disinstallato o disabilitato con le tabelle nftable Errore Trattato altrove
3.5.2.3 Verificare che le tabelle iptable vengano scaricate con le tabelle nftable Non applicabile Trattato altrove
3.5.2.4 Verificare che esista una tabella nftables Errore Trattato altrove
3.5.2.5 Verificare che le catene di base delle tabelle nftable esistano Errore Trattato altrove
3.5.2.6 Verificare che il traffico di loopback di nftables sia configurato Errore Trattato altrove
3.5.2.7 Verificare che le connessioni in uscita e stabilite siano configurate Non applicabile Trattato altrove
3.5.2.8 Verificare che i criteri firewall di negazione delle tabelle nftables siano predefiniti Errore Trattato altrove
3.5.2.9 Verificare che il servizio nftables sia abilitato Errore Trattato altrove
3.5.2.10 Assicurarsi che le regole delle tabelle nftable siano permanenti Errore Trattato altrove
3.5.3 Configurare iptables
3.5.3.1 Configurare il software iptables
3.5.3.1.1 Verificare che i pacchetti iptables siano installati Errore Trattato altrove
3.5.3.1.2 Verificare che le tabelle nftable non siano installate con iptable Riuscito
3.5.3.1.3 Assicurarsi che ufw sia disinstallato o disabilitato con iptables Errore Trattato altrove
3.5.3.2 Configurare iptable IPv4
3.5.3.2.1 Verificare che i criteri firewall di rifiuto di iptables siano predefiniti Errore Trattato altrove
3.5.3.2.2 Verificare che il traffico di loopback di iptables sia configurato Errore Non applicabile
3.5.3.2.3 Verificare che le connessioni in uscita e stabilite da iptable siano configurate Non applicabile
3.5.3.2.4 Verificare che le regole del firewall iptables esistano per tutte le porte aperte Errore Potenziale impatto sulle operazioni
3.5.3.3 Configurare ip6table IPv6
3.5.3.3.1 Verificare che i criteri firewall di negazione di ip6tables siano predefiniti Errore Trattato altrove
3.5.3.3.2 Verificare che il traffico di loopback di ip6tables sia configurato Errore Trattato altrove
3.5.3.3.3 Verificare che le connessioni in uscita e stabilite ip6table siano configurate Non applicabile Trattato altrove
3.5.3.3.4 Verificare che le regole del firewall ip6tables esistano per tutte le porte aperte Errore Trattato altrove
4 Registrazione e controllo
4.1 Configurare l'accounting di sistema (controllato)
4.1.1.2 Verificare che il controllo sia abilitato
4.1.2 Configurare la conservazione dei dati
4.2 Configurare la registrazione
4.2.1 Configura rsyslog
4.2.1.1 Verificare che rsyslog sia installato Riuscito
4.2.1.2 Verificare che il servizio rsyslog sia abilitato Riuscito
4.2.1.3 Verificare che la registrazione sia configurata Riuscito
4.2.1.4 Verificare che le autorizzazioni predefinite per i file rsyslog siano configurate Riuscito
4.2.1.5 Assicurarsi che rsyslog sia configurato per inviare i log a un host di log remoto Errore Trattato altrove
4.2.1.6 Verificare che i messaggi rsyslog remoti vengano accettati solo in host di log designati. Non applicabile
4.2.2 Configurare journald
4.2.2.1 Assicurarsi che journald sia configurato per l'invio di log a rsyslog Riuscito
4.2.2.2 Assicurarsi che journald sia configurato per comprimere file di log di grandi dimensioni Errore
4.2.2.3 Verificare che journald sia configurato per scrivere i file di log nel disco permanente Riuscito
4.2.3 Verificare che le autorizzazioni per tutti i file di log siano configurate Errore
4.3 Verificare che logrotate sia configurato Riuscito
4.4 Assicurarsi che logrotate assegni le autorizzazioni appropriate Errore
5 Accesso, autenticazione e autorizzazione
5.1 Configurare utilità di pianificazione dei processi basate sul tempo
5.1.1 Verificare che il daemon cron sia abilitato e in esecuzione Riuscito
5.1.2 Verificare che le autorizzazioni per /etc/crontab siano configurate Riuscito
5.1.3 Verificare che le autorizzazioni per /etc/cron.hourly siano configurate Riuscito
5.1.4 Verificare che le autorizzazioni per /etc/cron.daily siano configurate Riuscito
5.1.5 Verificare che le autorizzazioni per /etc/cron.weekly siano configurate Riuscito
5.1.6 Verificare che le autorizzazioni per /etc/cron.monthly siano configurate Riuscito
5.1.7 Verificare che le autorizzazioni per /etc/cron.d siano configurate Riuscito
5.1.8 Verificare che cron sia limitato agli utenti autorizzati Errore
5.1.9 Verificare che at sia limitato agli utenti autorizzati Errore
5,2 Configurare sudo
5.2.1 Verificare che sudo sia installato Riuscito
5.2.2 Verificare che i comandi sudo usino pty Errore Potenziale impatto sulle operazioni
5.2.3 Verificare che il file di log sudo esista Errore
5.3 Configurare il server SSH
5.3.1 Verificare che le autorizzazioni per /etc/ssh/sshd_config siano configurate Riuscito
5.3.2 Verificare che le autorizzazioni per i file di chiave host privati SSH siano configurate Riuscito
5.3.3 Verificare che le autorizzazioni per i file di chiave host pubblici SSH siano configurate Riuscito
5.3.4 Verificare che l'accesso a SSH sia limitato Riuscito
5.3.5 Verificare che SSH LogLevel sia appropriato Riuscito
5.3.7 Verificare che SSH MaxAuthTries sia impostato al massimo su 4 Riuscito
5.3.8 Verificare che SSH IgnoreRhosts sia abilitato Riuscito
5.3.9 Verificare che SSH HostbasedAuthentication sia disabilitato Riuscito
5.3.10 Verificare che l'accesso radice SSH sia disabilitato Riuscito
5.3.11 Verificare che SSH PermitEmptyPasswords sia disabilitato Riuscito
5.3.12 Verificare che SSH PermitUserEnvironment sia disabilitato Riuscito
5.3.13 Verificare che vengano usate solo crittografie complesse Riuscito
5.3.14 Verificare che vengano usati solo algoritmi MAC avanzati Riuscito
5.3.15 Verificare che vengano usati solo algoritmi di scambio chiavi sicuri Riuscito
5.3.16 Verificare che l'intervallo di timeout di inattività SSH sia configurato Errore
5.3.17 Assicurarsi che il valore di SSH LoginGraceTime sia impostato su al massimo un minuto Riuscito
5.3.18 Verificare che il banner di avviso SSH sia configurato Riuscito
5.3.19 Verificare che PAM SSH sia abilitato Riuscito
5.3.21 Verificare che SSH MaxStartups sia configurato Errore
5.3.22 Verificare che SSH MaxSessions sia limitato Riuscito
5.4 Configurare PAM
5.4.1 Verificare che i requisiti di creazione delle password siano configurati Riuscito
5.4.2 Verificare che il blocco per i tentativi con password non riusciti sia configurato Errore
5.4.3 Verificare che il riutilizzo delle password sia limitato Errore
5.4.4 Verificare che l'algoritmo hash delle password sia SHA-512 Riuscito
5.5 Account utente e ambiente
5.5.1 Impostare i parametri di Shadow Password Suite
5.5.1.1 Verificare che siano configurati giorni minimi tra le modifiche alle password Riuscito
5.5.1.2 Verificare che la scadenza della password sia di 365 giorni o meno Riuscito
5.5.1.3 Verificare che i giorni di avviso di scadenza della password siano 7 o più Riuscito
5.5.1.4 Verificare che il blocco password inattivo sia di 30 giorni o meno Riuscito
5.5.1.5 Verificare che la data dell'ultima modifica della password per tutti gli utenti sia nel passato Errore
5.5.2 Verificare che gli account di sistema siano protetti Riuscito
5.5.3 Verificare che il gruppo predefinito per l'account radice sia GID 0 Riuscito
5.5.4 Verificare che umask utente predefinito sia 027 o più restrittivo Riuscito
5.5.5 Verificare che il timeout predefinito della shell utente sia di 900 secondi o meno Errore
5.6 Verificare che l’accesso root sia limitato alla console di sistema Non applicabile
5.7 Assicurarsi che l'accesso al comando sia limitato Errore Potenziale impatto sulle operazioni
6 Manutenzione del sistema
6.1 Autorizzazioni per i file di sistema
6.1.2 Verificare che le autorizzazioni per /etc/passwd siano configurate Riuscito
6.1.3 Verificare che le autorizzazioni per /etc/passwd- siano configurate Riuscito
6.1.4 Verificare che le autorizzazioni per /etc/group siano configurate Riuscito
6.1.5 Verificare che le autorizzazioni per /etc/group- siano configurate Riuscito
6.1.6 Verificare che le autorizzazioni per /etc/shadow- siano configurate Riuscito
6.1.7 Verificare che le autorizzazioni per /etc/shadow- siano configurate Riuscito
6.1.8 Verificare che le autorizzazioni per /etc/shadow- siano configurate Riuscito
6.1.9 Verificare che le autorizzazioni per /etc/shadow- siano configurate Riuscito
6.1.10 Assicurarsi che non esistano file scrivibili universalmente Errore Potenziale impatto sulle operazioni
6.1.11 Assicurarsi che non esistano file o directory non creati Errore Potenziale impatto sulle operazioni
6.1.12 Assicurarsi che non esistano file o directory non raggruppati Errore Potenziale impatto sulle operazioni
6.1.13 Controllo dei file eseguibili SUID Non applicabile
6.1.14 Controllare i file eseguibili SGID Non applicabile
6.2 Impostazioni per utenti e gruppi
6.2.1 Assicurarsi che gli account in /etc/passwd usino password ombreggiate Riuscito
6.2.2 Verificare che i campi password non siano vuoti Riuscito
6.2.3 Verificare che tutti i gruppi in /etc/passwd esistano in /etc/group Riuscito
6.2.4 Verificare che tutte le home directory degli utenti esistano Riuscito
6.2.5 Assicurarsi che gli utenti siano i proprietari delle home directory Riuscito
6.2.6 Verificare che le autorizzazioni per le home directory degli utenti abbiano un valore pari a 750 o più restrittivo Riuscito
6.2.7 Verificare che i file dot degli utenti non siano scrivibili in gruppi o in tutto il mondo Riuscito
6.2.8 Verificare che nessun utente disponga di file .netrc Riuscito
6.2.9 Verificare che nessun utente disponga di file con estensione .forward Riuscito
6.2.10 Verificare che nessun utente disponga di file con estensione .rhosts Riuscito
6.2.11 Verificare che root sia l'unico account UID 0 Riuscito
6.2.12 Verificare l'integrità del percorso radice Riuscito
6.2.13 Verificare che non esistano UID duplicati Riuscito
6.2.14 Verificare che non esistano GID duplicati Riuscito
6.2.15 Verificare che non esistano nomi utente duplicati Riuscito
6.2.16 Verificare che non esistano nomi di gruppo duplicati Riuscito
6.2.17 Verificare che il gruppo shadow sia vuoto Riuscito

Passaggi successivi

Per altre informazioni sulla sicurezza del servizio Azure Kubernetes, vedere gli articoli seguenti: