Point de référence Kubernetes CIS (Center for Internet Security)

La configuration du système d’exploitation de sécurité appliquée à l’image hôte de conteneur Linux Azure pour AKS est basée sur la base de référence de sécurité Azure Linux, qui s’aligne sur le benchmark CIS. En tant que service sécurisé, Azure Kubernetes Service (AKS) est conforme aux normes SOC, ISO, PCI DSS et HIPAA. Pour plus d’informations sur la sécurité de l’hôte de conteneur Linux Azure, consultez Concepts de sécurité pour les clusters dans AKS. Pour plus d’informations sur le point de référence CIS, consultez Points de référence CIS (Center for Internet Security). Pour plus d’informations sur les bases de référence de sécurité Azure pour Linux, consultez Base de référence de sécurité Linux.

Azure Linux 2.0

Ce système d’exploitation hôte de conteneur Linux Azure est basé sur l’image Azure Linux 2.0 avec des configurations de sécurité intégrées appliquées.

Dans le cadre du système d’exploitation optimisé pour la sécurité :

  • AKS et Azure Linux fournissent un système d’exploitation hôte optimisé pour la sécurité par défaut sans aucune option permettant de sélectionner un autre système d’exploitation.
  • Le système d’exploitation hôte optimisé pour la sécurité est conçu et géré spécifiquement pour AKS. Il n’est pas pris en charge en dehors de la plateforme AKS.
  • Certains pilotes de module de noyau inutiles ont été désactivés dans le système d’exploitation pour réduire la surface d’attaque.

Recommandations

Le tableau ci-dessous comporte quatre sections :

  • ID CIS : L’ID de règle associé à chacune des règles de base.
  • Description de la suggestion : Une description de la recommandation émise par le benchmark CIS.
  • Niveau: L1 ou niveau 1, recommande des exigences de sécurité de base essentielles qui peuvent être configurées sur n’importe quel système et qui doivent entraîner peu ou pas d’interruption de service ni de réduction de fonctionnalités.
  • Statut :
    • Réussite – La recommandation a été appliquée.
    • Échec: La recommandation n’a pas été appliquée.
    • N/A – La recommandation concerne les exigences d’autorisation du fichier manifeste qui ne sont pas pertinentes pour AKS.
    • Dépend de l’environnement: La recommandation est appliquée dans l’environnement spécifique de l’utilisateur et n’est pas contrôlée par AKS.
    • Contrôle équivalent: La recommandation a été implémentée de manière équivalente et différente.
  • Raison :
    • Impact potentiel de l’opération: la suggestion n’a pas été appliquée, car elle aurait un effet négatif sur le service.
    • Couverte ailleurs : la recommandation est couverte par un autre contrôle dans le calcul cloud Azure.

Voici les résultats des recommandations CIS Azure Linux 2.0 Benchmark v1.0 basées sur les règles CIS :

Identifiants CIS Description de la recommandation Statut Motif
1.1.4 Désactiver le montage automatique Réussite
1.1.1.1 Vérifier que le montage des systèmes de fichiers cramfs est désactivé Réussite
1.1.2.1 Vérifier que /tmp est une partition distincte Réussite
1.1.2.2 Vérifier que l’option nodev est définie sur la partition /tmp Réussite
1.1.2.3 Vérifier que l’option nosuid est définie sur la partition /tmp Réussite
1.1.8.1 Vérifier que l’option nodev est définie sur la partition /dev/shm Réussite
1.1.8.2 Vérifier que l’option nosuid est définie sur la partition /dev/shm Réussite
1.2.1 Vérifier que DNF gpgcheck est activé globalement Réussite
1.2.2 Vérifier que TDNF gpgcheck est activé globalement Réussite
1.5.1 Vérifier que le stockage de sauvegarde du cœur est désactivé Réussite
1.5.2 Vérifier que les backtraces de sauvegarde du cœur sont désactivés Réussite
1.5.3 Vérifier que la distribution aléatoire de l’espace d’adressage (ASLR, Address Space Layout Randomization) est activée Réussite
1.7.1 Vérifier que la bannière d’avertissement de connexion locale est correctement configurée Réussite
1.7.2 Vérifier que la bannière d’avertissement de connexion à distance est correctement configurée Réussite
1.7.3 Vérifier que les autorisations sont configurées sur /etc/motd Réussite
1.7.4 Vérifier que des autorisations sont configurées sur /etc/issue Réussite
1.7.5 Vérifier que des autorisations sont configurées sur /etc/issue.net Réussite
2.1.1 Vérifier que la synchronisation de l’heure est utilisée Réussite
2.1.2 Vérifier que chrony est configuré Réussite
2.2.1 Vérifier que xinetd n’est pas installé Réussite
2.2.2 Vérifier que xorg-x11-server-common n’est pas installé Réussite
2.2.3 Vérifier que avahi n’est pas installé Réussite
2.2.4 Vérifier qu’un serveur d’impression n’est pas installé Réussite
2.2.5 Vérifier qu’un serveur DHCP n’est pas installé Réussite
2.2.6 Vérifier qu’un serveur DNS n’est pas installé Réussite
2.2.7 Vérifier que le client FTP n’est pas installé Réussite
2.2.8 Vérifier qu’un serveur FTP n’est pas installé Réussite
2.2.9 Vérifier qu’un serveur TFTP n’est pas installé Réussite
2.2.10 Vérifier qu’un serveur web n’est pas installé Réussite
2.2.11 Vérifier qu’un serveur IMAP et POP3 n’est pas installé Réussite
2.2.12 Vérifier que Samba n’est pas installé Réussite
2.2.13 Vérifier que le serveur proxy HTTP n’est pas installé Réussite
2.2.14 Vérifier que net-snmp n’est pas installé ou que le service snmpd n’est pas activé Réussite
2.2.15 Vérifier que le serveur NIS n’est pas installé Réussite
2.2.16 Vérifier que telnet-server n’est pas installé Réussite
2.2.17 Vérifier que l’agent de transfert de courrier est configuré pour le mode local uniquement Réussite
2.2.18 Vérifier que nfs-utils n’est pas installé ou que le service nfs-server est masqué Réussite
2.2.19 Vérifiez que rsync-daemon n’est pas installé ou que le service rsyncd est masqué Réussite
2.3.1 Vérifier que le client NIS n’est pas installé Réussite
2.3.2 Vérifier que le client rsh n’est pas installé Réussite
2.3.3 Vérifier que le client de communication n’est pas installé Réussite
2.3.4 Vérifier que le client telnet n’est pas installé Réussite
2.3.5 Vérifier que le client LDAP n’est pas installé Réussite
2.3.6 Vérifier que le client TFTP n’est pas installé Réussite
3.1.1 Vérifier que IPv6 est activé Réussite
3.2.1 Vérifier que l’envoi de redirection de paquets est désactivé Réussite
3.3.1 Vérifier que les paquets acheminés par la source ne sont pas acceptés Réussite
3.3.2 Vérifier que les redirections ICMP ne sont pas acceptées Réussite
3.3.3 Vérifier que les redirections ICMP sécurisées ne sont pas acceptées Réussite
3.3.4 Vérifier que les paquets suspects sont consignés dans un journal Réussite
3.3.5 Vérifier que les demandes ICMP de diffusion sont ignorées Réussite
3.3.6 Vérifier que les réponses ICMP erronées sont ignorées Réussite
3.3.7 Vérifier que le filtrage par chemin inverse est activé Réussite
3.3.8 Vérifier que les cookies SYN TCP sont activés Réussite
3.3.9 Vérifier que les annonces de routeur IPv6 ne sont pas acceptées Réussite
3.4.3.1.1 Vérifier que le package iptables est installé Réussite
3.4.3.1.2 Vérifier que nftables n’est pas installé avec iptables Réussite
3.4.3.1.3 Vérifier que le pare-feu n’est pas installé ou n’est pas masqué avec iptables Réussite
4,2 Vérification que logrotate est configuré Réussite
4.2.2 Vérifier qu’un accès approprié a été configuré pour tous les fichiers journaux Réussite
4.2.1.1 Vérifier que rsyslog est installé Réussite
4.2.1.2 Vérifier que le service rsyslog est activé Réussite
4.2.1.3 Vérifier que les autorisations de fichier par défaut rsyslog sont configurées Réussite
4.2.1.4 Vérifier que la journalisation est configurée Réussite
4.2.1.5 Vérifier que rsyslog n’est pas configuré pour recevoir des journaux d’un client distant Réussite
5.1.1 Vérifier que le démon cron est activé Réussite
5.1.2 Vérifier que des autorisations sont configurées sur /etc/crontab Réussite
5.1.3 Vérifier que les autorisations sont configurées sur /etc/cron.hourly Réussite
5.1.4 Vérifier que les autorisations sont configurées sur /etc/cron.daily Réussite
5.1.5 Vérifier que les autorisations sont configurées sur /etc/cron.weekly Réussite
5.1.6 Vérifier que les autorisations sont configurées sur /etc/cron.monthly Réussite
5.1.7 Vérifier que les autorisations sont configurées sur /etc/cron.d Réussite
5.1.8 Vérifier que cron est restreint aux utilisateurs autorisés Réussite
5.1.9 Vérifier que at est restreint aux utilisateurs autorisés Réussite
5.2.1 Vérifier que les autorisations sont configurées sur /etc/ssh/sshd_config Réussite
5.2.2 Vérifier que les autorisations sont configurées sur les fichiers de clé d’hôte privé SSH Réussite
5.2.3 Vérifier que les autorisations sont configurées sur les fichiers de clé d’hôte public SSH Réussite
5.2.4 Assurez-vous que l’accès SSH est limité. Réussite
5.2.5 Vérifier que SSH LogLevel est approprié Réussite
5.2.6 Vérifier que SSH PAM est activé Réussite
5.2.7 Vérifier que la connexion racine SSH est désactivée Réussite
5.2.8 Vérifier que SSH HostbasedAuthentication est désactivé Réussite
5.2.9 Vérifier que SSH PermitEmptyPasswords est désactivé Réussite
5.2.10 Vérifier que SSH PermitUserEnvironment est désactivé Réussite
5.2.11 Vérifier que SSH IgnoreRhosts est activé Réussite
5.2.12 Vérifier que seuls des chiffrements forts sont utilisés Réussite
5.2.13 Vérifier que seuls des algorithmes MAC forts sont utilisés Réussite
5.2.14 Vérifier que seuls des algorithmes d’échange de clés forts sont utilisés Réussite
5.2.15 Vérifier que la bannière d’avertissement SSH est configurée Réussite
5.2.16 Vérifier que SSH MaxAuthTries est défini sur une valeur inférieure ou égale à 4 Réussite
5.2.17 Vérifier que SSH MaxStartups est configuré Réussite
5.2.18 Vérifier que SSH LoginGraceTime est défini sur une minute ou moins Réussite
5.2.19 Vérifier que SSH MaxAuthTries est défini sur une valeur inférieure ou égale à 10 Réussite
5.2.20 Vérifier que l’intervalle du délai d’inactivité SSH est configuré Réussite
5.3.1 Vérifier que sudo est installé Réussite
5.3.2 Vérifier que la réauthentification pour l’escalade des privilèges n’est pas désactivée globalement Réussite
5.3.3 Vérifier que le délai d’expiration de l’authentification sudo est correctement configuré Réussite
5.4.1 Vérifier que les critères de création de mot de passe sont configurés Réussite
5.4.2 Vérifier que le verrouillage est configuré lors d’échecs de tentatives de mot de passe Réussite
5.4.3 Vérifier que l’algorithme de hachage de mot de passe est SHA-512. Réussite
5.4.4 Vérifier que la réutilisation des mots de passe est limitée Réussite
5.5.2 Vérifier que les comptes système sont sécurisés Réussite
5.5.3 Vérifier que le groupe par défaut pour le compte racine est GID 0. Réussite
5.5.4 Vérifier que le masque umask d’utilisateur par défaut est 027 ou plus restrictif Réussite
5.5.1.1 Vérifier que l’expiration du mot de passe est de 365 jours maximum Réussite
5.5.1.2 Vérifier que le nombre minimal de jours entre les changements de mot de passe est configuré Réussite
5.5.1.3 Vérifier que le délai d’avertissement d’expiration du mot de passe est de 7 jours minimum Réussite
5.5.1.4 Vérifier que le verrouillage de mot de passe inactif est de 30 jours ou moins Réussite
5.5.1.5 Vérifier que la date du dernier changement de mot de passe de tous les utilisateurs se trouve dans le passé. Réussite
6.1.1 Vérifier que les autorisations sont configurées sur /etc/passwd Réussite
6.1.2 Vérifier que les autorisations sont configurées sur /etc/passwd- Réussite
6.1.3 Vérifier que les autorisations sont configurées sur /etc/group Réussite
6.1.4 Vérifier que les autorisations sont configurées sur /etc/group- Réussite
6.1.5 Vérifier que les autorisations sont configurées sur /etc/shadow Réussite
6.1.6 Vérifier que les autorisations sont configurées sur /etc/shadow- Réussite
6.1.7 Vérifier que les autorisations sont configurées sur /etc/gshadow Réussite
6.1.8 Vérifier que les autorisations sont configurées sur /etc/gshadow- Réussite
6.1.9 Vérifier qu’il n’existe aucun fichier ni répertoire non groupé Réussite
6.1.10 Vérifier que les fichiers et répertoires accessibles en écriture dans le monde sont sécurisés Réussite
6.2.1 Vérifier que les champs de mot de passe ne sont pas vides Réussite
6.2.2 Vérifier que tous les groupes dans /etc/passwd existent dans /etc/group. Réussite
6.2.3 Vérifier qu’il n’existe pas de doublons d’UID. Réussite
6.2.4 Vérifier qu’il n’existe pas de doublons de GID. Réussite
6.2.5 Vérifier qu’il n’existe aucun nom d’utilisateur en double. Réussite
6.2.6 Vérifier qu’il n’existe aucun nom de groupe en double Réussite
6.2.7 Garantir l’intégrité du PATH racine Réussite
6.2.8 Vérifier que la racine est le seul compte UID 0. Réussite
6.2.9 Vérifier que les répertoires de base de tous les utilisateurs existent. Réussite
6.2.10 Vérifier que les utilisateurs sont propriétaires de leurs répertoires de base Réussite
6.2.11 Vérifier que les autorisations des répertoires de base des utilisateurs sont de 750 ou sont plus restrictives Réussite
6.2.12 Vérifier que les fichiers dot des utilisateurs ne sont pas accessibles en écriture à un groupe ou à tout le monde Réussite
6.2.13 Vérifier que les fichiers .netrc des utilisateurs ne sont pas accessibles au groupe ou à tout le monde Réussite
6.2.14 Vérifier qu’aucun utilisateur n’a de fichiers .forward. Réussite
6.2.15 Vérifier qu’aucun utilisateur n’a de fichiers .netrc. Réussite
6.2.16 Vérifier qu’aucun utilisateur n’a de fichiers .rhosts. Réussite

Étapes suivantes

Pour plus d’informations sur la sécurité de l’hôte de conteneur Azure Linux, consultez les articles suivants :