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

Come servizio sicuro, servizio Azure Kubernetes (AKS) è 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 in servizio Azure Kubernetes (servizio Azure Kubernetes). Per altre informazioni sulla sicurezza del servizio Azure Kubernetes, vedere Concetti di sicurezza per applicazioni e cluster in servizio Azure Kubernetes (servizio Azure Kubernetes). Per altre informazioni sul benchmark CIS, vedere Center for Internet Security (CIS) Benchmarks (Center for Internet Security). 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 sicure 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:

  • Il servizio Azure Kubernetes offre un sistema operativo host ottimizzato per la sicurezza per impostazione predefinita, 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 driver di modulo kernel non necessari sono stati disabilitati nel sistema operativo per ridurre la superficie di attacco.

Nota

Non 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 sicura 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 .

Consigli può avere uno dei motivi seguenti:

  • Potenziale impatto sulle operazioni: la raccomandazione non è stata applicata perché avrebbe un effetto negativo sul servizio.
  • Altre informazioni : la raccomandazione è coperta da un altro controllo nell'ambiente di calcolo cloud di Azure.

Di seguito sono riportate le regole CIS implementate:

Numero di paragrafo CIS Descrizione della raccomandazione Stato Motivo
1 Configurazione iniziale
1.1 Configurazione del file system
1.1.1 Disabilitare i file system inutilizzati
1.1.1.1 Assicurarsi che il montaggio dei file system cramfs sia disabilitato Riuscito
1.1.1.2 Assicurarsi 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 Assicurarsi che il montaggio dei file system di hfs sia disabilitato Riuscito
1.1.1.5 Assicurarsi 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 nella partizione /tmp Errore
1.1.4 Verificare che l'opzione nosuid impostata nella 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 nella partizione /dev/shm Riuscito
1.1.8 Verificare che l'opzione nosuid impostata nella partizione /dev/shm Riuscito
1.1.9 Assicurarsi che l'opzione noexec sia impostata nella partizione /dev/shm Errore Potenziale impatto operativo
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 /home partition includa l'opzione nodev Riuscito
1.1.19 Verificare che l'opzione nodev sia impostata nelle partizioni di supporti rimovibili Non applicabile
1.1.20 Assicurarsi che l'opzione nosuid sia impostata nelle partizioni di supporti rimovibili Non applicabile
1.1.21 Assicurarsi che l'opzione noexec sia impostata nelle partizioni di supporti rimovibili Non applicabile
1.1.22 Assicurarsi che il bit permanente sia impostato in tutte le directory scrivibili a livello globale Errore Potenziale impatto sulle operazioni
1.1.23 Disabilitare il montaggio automatico Riuscito
1.1.24 Disabilitare l'Archiviazione USB Riuscito
1.2 Configurare Aggiornamenti software
1.2.1 Verificare che i repository di Gestione pacchetti siano configurati Riuscito Coperto altrove
1.2.2 Verificare che le chiavi gpg siano configurate Non applicabile
1.3 Controllo dell'integrità del file system
1.3.1 Verificare che AIDE sia installato Errore Coperto altrove
1.3.2 Verificare che l'integrità del file system sia controllata regolarmente Errore Coperto 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 la randomizzazione del layout dello spazio degli indirizzi (ASLR) sia abilitata Riuscito
1.5.3 Verificare che il prelink sia disabilitato Riuscito
1.5.4 Verificare che i dump di base siano limitati Riuscito
1.6 Controllo di accesso obbligatori
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 Assicurarsi che il banner di avviso di accesso remoto sia configurato correttamente Riuscito
1.7.6 Assicurarsi che il banner di avviso di accesso locale sia configurato correttamente Riuscito
1.8 Gestione 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 Assicurarsi che siano installati aggiornamenti, patch e software di sicurezza aggiuntivo 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 Coperto 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 il server IMAP e POP3 non siano installati Riuscito
2.1.12 Assicurarsi 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 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 Assicurarsi 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 operativo
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 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 indirizzati all'origine non siano accettati Riuscito
3.3.2 Verificare che i reindirizzamenti ICMP non siano accettati Riuscito
3.3.3 Assicurarsi che i reindirizzamenti ICMP sicuri non siano accettati Riuscito
3.3.4 Assicurarsi che i pacchetti sospetti vengano registrati Riuscito
3.3.5 Assicurarsi che le richieste ICMP di trasmissione vengano ignorate Riuscito
3.3.6 Assicurarsi che le risposte ICMP fittizie vengano ignorate Riuscito
3.3.7 Verificare che il filtro percorso inverso sia abilitato Riuscito
3.3.8 Verificare che i cookie TCP SYN siano abilitati Riuscito
3.3.9 Verificare che gli annunci 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 Coperto altrove
3.5.1.4 Verificare che il traffico di loopback ufw sia configurato Errore Coperto altrove
3.5.1.5 Verificare che le connessioni in uscita ufw siano configurate Non applicabile Coperto altrove
3.5.1.6 Verificare che le regole del firewall ufw esistano per tutte le porte aperte Non applicabile Coperto altrove
3.5.1.7 Verificare che i criteri firewall di rifiuto predefiniti di ufw Errore Coperto altrove
3.5.2 Configurare le tabelle nftable
3.5.2.1 Verificare che le tabelle nftable siano installate Errore Coperto altrove
3.5.2.2 Assicurarsi che ufw sia disinstallato o disabilitato con le tabelle nftable Errore Coperto altrove
3.5.2.3 Verificare che le tabelle iptable siano scaricate con le tabelle nftable Non applicabile Coperto altrove
3.5.2.4 Verificare che esista una tabella nftables Errore Coperto altrove
3.5.2.5 Verificare che le catene di base delle tabelle nftable esistano Errore Coperto altrove
3.5.2.6 Verificare che il traffico di loopback di nftables sia configurato Errore Coperto altrove
3.5.2.7 Verificare che le connessioni in uscita e stabilite siano configurate Non applicabile Coperto altrove
3.5.2.8 Verificare che i criteri firewall di negazione predefiniti delle tabelle nftables Errore Coperto altrove
3.5.2.9 Verificare che il servizio nftables sia abilitato Errore Coperto altrove
3.5.2.10 Assicurarsi che le regole delle tabelle nftable siano permanenti Errore Coperto 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 Coperto 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 Coperto altrove
3.5.3.2 Configurare iptable IPv4
3.5.3.2.1 Verificare che i criteri firewall di rifiuto predefiniti di iptables Errore Coperto 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 predefiniti di ip6tables Errore Coperto altrove
3.5.3.3.2 Verificare che il traffico di loopback di ip6tables sia configurato Errore Coperto altrove
3.5.3.3.3 Verificare che le connessioni in uscita e stabilite ip6table siano configurate Non applicabile Coperto altrove
3.5.3.3.4 Verificare che le regole del firewall ip6tables esistano per tutte le porte aperte Errore Coperto 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 Configurare 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 Coperto 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 il 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 il 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 Assicurarsi che cron sia limitato agli utenti autorizzati Errore
5.1.9 Assicurarsi 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 operativo
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 privata SSH siano configurati Riuscito
5.3.3 Verificare che le autorizzazioni per i file di chiave host pubblica SSH siano configurate Riuscito
5.3.4 Verificare che l'accesso SSH sia limitato Riuscito
5.3.5 Verificare che LOGLevel SSH sia appropriato Riuscito
5.3.7 Verificare che SSH MaxAuthTries sia impostato su 4 o meno Riuscito
5.3.8 Verificare che SSH IgnoreRhosts sia abilitato Riuscito
5.3.9 Verificare che l'host SSHbasedAuthentication sia disabilitato Riuscito
5.3.10 Verificare che l'account di 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 Assicurarsi che vengano usate solo crittografie complesse Riuscito
5.3.14 Assicurarsi che vengano usati solo algoritmi MAC avanzati Riuscito
5.3.15 Assicurarsi 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 Verificare che LoginGraceTime SSH sia impostato su un minuto o meno 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 di 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 di 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 della 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 Assicurarsi 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 di tutti gli utenti sia precedente Errore
5.5.2 Assicurarsi 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'account di accesso radice sia limitato alla console di sistema Non applicabile
5.7 Assicurarsi che l'accesso al comando su sia limitato Errore Potenziale impatto sulle operazioni
6 Manutenzione del sistema
6.1 Autorizzazioni 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/gshadow siano configurate Riuscito
6.1.9 Verificare che le autorizzazioni per /etc/gshadow- siano configurate Riuscito
6.1.10 Assicurarsi che non esistano file scrivibili in tutto il mondo 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 Controlla eseguibili SUID Non applicabile
6.1.14 Controllare i file eseguibili SGID Non applicabile
6.2 Impostazioni utente e gruppo
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 proprietari delle proprie home directory Riuscito
6.2.6 Verificare che le autorizzazioni delle home directory degli utenti siano 750 o più restrittive Riuscito
6.2.7 Assicurarsi che i file dot degli utenti non siano scrivibili in gruppi o in tutto il mondo Riuscito
6.2.8 Assicurarsi che nessun utente disponga di file .netrc Riuscito
6.2.9 Assicurarsi che nessun utente disponga di file con estensione forward Riuscito
6.2.10 Assicurarsi 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 Assicurarsi che non esistano UID duplicati Riuscito
6.2.14 Assicurarsi che non esistano GID duplicati Riuscito
6.2.15 Assicurarsi che non esistano nomi utente duplicati Riuscito
6.2.16 Assicurarsi 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: