Configurer son IaaS Linux dans le CLOUD

Introduction

Dans cet article, nous allons explorer comment configurer de manière optimale un IaaS Linux sur le cloud, en utilisant Azure et GCP comme exemples.

Nous allons nous concentrer sur la configuration correcte du SSH, la configuration adéquate du swap, et d’autres aspects importants à optimiser lors de la configuration d’un IaaS Linux. Nous nous appuierons sur les bonnes pratiques recommandées par la CNCF, GCP et Azure1234.

Configurer SSH

La configuration correcte de SSH est essentielle pour assurer la sécurité de votre serveur. D’après la documentation de la CNCF : “L’utilisation de clés SSH robustes est une mesure de sécurité essentielle”5. Les directives de sécurité de Azure recommandent également l’utilisation de clés SSH pour une authentification forte3.

Pour Ubuntu :

ssh-keygen -t ed25519 -C "contact@ravindra-job.fr"

Pour Red Hat :

ssh-keygen -t ed25519 -C "contact@ravindra-job.fr"

Utilisez l’authentification par clé SSH

Les mots de passe peuvent être facilement compromis par une attaque de force brute. À la place, utilisez une paire de clés SSH pour l’authentification.

ssh-keygen -t rsa -b 4096 -C "contact@ravindra-job.fr"

Désactivez le login root

Empêcher l’accès direct en tant qu’utilisateur root augmente la sécurité en ajoutant une autre couche d’autorisation.

echo "PermitRootLogin no" >> /etc/ssh/sshd_config

Changez le port SSH par défaut

Le port 22 est la cible de nombreuses attaques automatisées. En changeant le port SSH par défaut, vous pouvez réduire le nombre de tentatives d’attaque non sollicitées.

echo "Port 2222" >> /etc/ssh/sshd_config

Utilisez un pare-feu :

Limitez l’accès à votre serveur SSH en mettant en place des règles de pare-feu. Seules les adresses IP nécessaires devraient pouvoir se connecter.

Mettez régulièrement à jour votre serveur SSH :

Les mises à jour régulières garantissent que vous disposez des dernières corrections de sécurité.

sudo apt-get update
sudo apt-get upgrade

Mettez en place des délais d’expiration :

Configurer votre serveur pour qu’il déconnecte les sessions inactives après un certain temps peut aider à minimiser les risques.

echo "ClientAliveInterval 300" >> /etc/ssh/sshd_config
echo "ClientAliveCountMax 0" >> /etc/ssh/sshd_config

Limitez le taux de connexion :

Limitez le nombre de tentatives de connexion SSH en une minute pour minimiser les attaques par force brute.

echo "MaxStartups 10:30:60" >> /etc/ssh/sshd_config

Utilisez l’authentification à deux facteurs (2FA) :

Ajoutez une couche de sécurité supplémentaire en exigeant un deuxième facteur d’authentification.

Contrôlez les privilèges :

Utilisez le principe du moindre privilège (PoLP) pour limiter l’accès aux ressources de votre système.

Journalisation et surveillance :

Assurez-vous de surveiller et de journaliser les activités SSH pour détecter toute activité suspecte. Exemple d’outil: LOKI :)

Chiffrement fort :

Utilisez des algorithmes de chiffrement modernes et forts, tels que ceux basés sur RSA ou ECDSA.

Utilisez SSH Certificates :

Contrairement aux clés SSH, les certificats SSH peuvent expirer, ce qui peut aider à éviter l’utilisation persistante de clés volées.

N’oubliez pas de redémarrer le service SSH après avoir apporté des modifications à la

sudo service ssh restart

Plus d’information en détail sur mon article dédidié au SSH ici

LinuxTeck - Installer et sécuriser le serveur SSH dans Linux Vultr - Meilleures pratiques pour SSH sur un serveur cloud de production Teleport - 5 meilleures pratiques SSH

Configuration du pare-feu

La gestion des listes de contrôle d’accès (ACL) est un aspect essentiel de la sécurité du réseau. Dans de nombreux cas, les utilisateurs laissent les groupes de sécurité réseau (NSG) d’Azure ou les règles de pare-feu de GCP gérer les ACL, ce qui peut être une bonne pratique lorsque l’on est sûr de qui peut les modifier et comment. Cependant, il est crucial de comprendre que cela donne à ces entités un contrôle considérable sur la sécurité de votre serveur.

Selon un article de Microsoft[^9^], la gestion des ACL au niveau de la VM peut fournir un contrôle plus granulaire et permettre une meilleure visibilité des règles de trafic.

De même, un guide de Google Cloud Platform recommande de gérer les ACL au niveau de la VM pour des raisons similaires[^10^].

Pour configurer des règles de pare-feu au niveau des VMs CLOUD, vous pouvez utiliser les commandes suivantes :

# Install UFW
sudo apt install ufw

# Allow SSH connections
sudo ufw allow ssh

# Enable firewall
sudo ufw enable

Azure :

Create Network Security Group rule

az network nsg create --resource-group myResourceGroup --name myNetworkSecurityGroup
az network nsg rule create --resource-group myResourceGroup --nsg-name myNetworkSecurityGroup --name AllowSSH --protocol tcp --direction inbound --priority 1000 --source-address-prefix '*' --source-port-range '*' --destination-address-prefix '*' --destination-port-range 22 --access allow

Exemple de configuration de pare-feu avec Terraform pour Azure :

resource "azurerm_network_security_group" "example" {
  name                = "example-nsg"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  security_rule {
    name                       = "SSH"
    priority                   = 1001
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "22"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
  }
}

GCP

Exemple pour GCP :

resource "google_compute_firewall" "default" {
  name    = "ssh-allow"
  network = "default"

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }
}

Dans ces exemples, Terraform est utilisé pour créer une règle de pare-feu qui autorise les connexions SSH (port 22) sur le réseau par défaut.

Il est important de noter que ces règles de pare-feu devraient être complétées par les règles de pare-feu au niveau du réseau pour une protection complète. De plus, il est essentiel de bien communiquer et de s’assurer que tous les membres de l’équipe sont au courant si la sécurité des ACL est appliquée à ces deux niveaux, car cette information est souvent oubliée lors des DEBUG.

CNCF - Utilisation de groupes de sécurité réseau

Configurer Swap

Le swap est une zone du disque utilisée lorsque la mémoire physique du système est pleine. D’après la documentation de GCP : “Pour optimiser les performances, utilisez au moins 2 Go de swap”6. Microsoft Azure recommande également une configuration adéquate du swap pour un fonctionnement optimal du système4.

Pour Ubuntu :

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Pour Red Hat :

sudo dd if=/dev/zero of=/swapfile count=2048 bs=1MiB
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Mise à jour du système

Assurez-vous que votre système est toujours à jour avec les dernières mises à jour de sécurité et de performance. D’après la documentation d’Azure : “Garder le système à jour est crucial pour assurer sa sécurité”7. Le GCP recommande également de maintenir le système à jour pour garantir la sécurité et les performances6.

Pour Ubuntu :

sudo apt-get update
sudo apt-get upgrade

Pour Red Hat :

sudo yum update

Conclusion

Lors de la configuration d’un IaaS Linux sur le cloud, il est important de suivre les meilleures pratiques pour assurer la sécurité et l’efficacité de votre serveur. En configurant correctement SSH, en mettant en place une bonne gestion de swap, en gardant le système à jour et en assurant une bonne configuration du pare-feu, vous pouvez maximiser la sécurité et les performances de votre système.

Pour toute question ou commentaire, n’hésitez pas à laisser un commentaire ci-dessous ou à me contacter directement.

Références


  1. CNCF - Sécurité des Clés SSH ↩︎

  2. GCP - Optimisation des Performances Swap ↩︎

  3. Azure - Directives de Sécurité ↩︎ ↩︎

  4. Documentation Azure - Configuration Swap ↩︎ ↩︎

  5. Documentation CNCF - Configuration du Pare-feu ↩︎

  6. Documentation GCP - Mise à jour du Système ↩︎ ↩︎

  7. Documentation Azure - Mise à jour du Système ↩︎