Recherche de site Web

Comment sécuriser un serveur Ubuntu pour la production


Lors de la configuration d'un serveur Ubuntu pour la production, il est crucial de sécuriser le système afin de garantir sa stabilité, sa sécurité et son accessibilité. Bien que Ubuntu dispose de nombreuses fonctionnalités de sécurité intégrées, il est important de prendre des mesures supplémentaires pour protéger votre système contre les accès non autorisés et les attaques.

Dans ce guide, nous couvrirons trois outils essentiels pour améliorer la sécurité de votre serveur Ubuntu : UFW (Uncomplicated Firewall), Fail2ban et AppArmor. Ces outils aideront à sécuriser votre serveur en contrôlant l'accès au réseau, en empêchant les tentatives de connexion par force brute et en protégeant les applications.

1. Sécuriser l'accès au réseau avec UFW (Pare-feu simplifié)

Ubuntu est livré avec un outil de configuration de pare-feu convivial appelé UFW (Uncomplicated Firewall), qui offre une interface simple pour gérer les règles de pare-feu basées sur iptables.

Installer et activer UFW

Dans la plupart des installations Ubuntu, UFW est préinstallé, mais s'il n'est pas installé et activé, vous pouvez l'installer et l'activer en utilisant les commandes suivantes.

sudo apt update && sudo apt install ufw -y
sudo ufw enable

Refuser les services indésirables

Pour bloquer tout le trafic entrant par défaut et n'autoriser que certains ports spécifiques, configurez UFW pour refuser tout le trafic entrant, sauf pour les services que vous autorisez explicitement :

sudo ufw default deny incoming
sudo ufw default allow outgoing

Autoriser les services essentiels

Pour permettre les services essentiels tels que SSH (pour la gestion à distance), HTTP et HTTPS (pour l'accès au serveur web), vous pouvez utiliser les commandes suivantes :

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Limitation du débit (Prévenir les attaques par force brute)

Pour protéger davantage votre serveur contre les attaques par force brute, vous pouvez utiliser la fonction de limitation de débit d'UFW, qui limite le nombre de tentatives de connexion SSH qu'un client peut effectuer dans une période de temps donnée.

sudo ufw limit ssh

Cette commande permet les connexions SSH, mais limite le nombre de tentatives à 6 par minute, bloquant toute adresse IP qui dépasse cette limite.

2. Bloquer les attaques par force brute avec Fail2ban

Fail2ban est un outil essentiel pour protéger votre serveur contre les attaques par force brute en surveillant les fichiers journaux pour les tentatives de connexion échouées répétées et en bloquant les adresses IP fautives.

Fail2ban peut être installé depuis les dépôts Ubuntu par défaut :

sudo apt install fail2ban

Le fichier de configuration par défaut pour Fail2ban se trouve dans /etc/fail2ban/jail.conf. Cependant, il est recommandé de ne pas modifier ce fichier directement. Au lieu de cela, créez une copie de la configuration pour personnaliser vos paramètres :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Maintenant, ouvrez le fichier jail.local pour le modifier :

sudo nano /etc/fail2ban/jail.local

Assurez-vous que la section [sshd] est activée (décommentez les lignes) pour protéger votre service SSH et modifiez les options suivantes :

  • enabled : Définissez ceci sur true pour activer la protection SSH.
  • port : Spécifie le port sur lequel SSH fonctionne (par défaut 22).
  • maxretry : Définissez le nombre maximal de tentatives de connexion échouées avant de bannir une adresse IP.
  • bantime : Définir la durée de l'interdiction (en secondes).
  • findtime : Définissez la période pendant laquelle les tentatives échouées sont comptées.

Par exemple :

[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 3600  # Ban IP for 1 hour
findtime = 600  # Count attempts within 10 minutes

Une fois que vous avez enregistré vos modifications, redémarrez Fail2ban pour appliquer les nouvelles configurations.

sudo systemctl restart fail2ban

Pour vérifier l'état de Fail2ban et voir les prisons actives :

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Fail2ban protège maintenant activement votre serveur contre les tentatives de connexion SSH par force brute.

3. Utilisation d'AppArmor pour la sécurité des applications

AppArmor est un système de Contrôle d'Accès Obligatoire (MAC) qui fournit une couche de sécurité supplémentaire en appliquant des politiques pour des applications individuelles.

Dans la plupart des installations Ubuntu, AppArmor est préinstallé et activé. S'il n'est pas activé, vous pouvez le démarrer et l'activer pour qu'il s'exécute au démarrage :

sudo systemctl enable apparmor
sudo systemctl start apparmor

Créer des profils AppArmor personnalisés

Les profils AppArmor définissent quels ressources système une application peut accéder ; par défaut, les profils AppArmor sont appliqués à de nombreuses applications dans Ubuntu, et vous pouvez trouver les profils dans le répertoire /etc/apparmor.d/.

Vous pouvez voir quels profils sont actuellement chargés en exécutant :

sudo apparmor_status

Si vous avez une application personnalisée qui nécessite un profil spécifique, vous pouvez en créer un nouveau ou modifier un existant.

sudo aa-genprof /path/to/application

Une fois le profil créé, vous pouvez appliquer le profil :

sudo aa-enforce /path/to/profile

Mode Application ou Réclamation

AppArmor fonctionne en deux modes : enforce et complain.

  • En mode renforcer, le profil est strictement appliqué, et toute violation entraînera le blocage de l'application.
  • En mode plaintes, les violations sont enregistrées mais non appliquées, ce qui en fait un mode utile pour tester les profils.

Pour changer le mode d'un profil :

sudo aa-enforce /path/to/profile  # Enforce mode
sudo aa-complain /path/to/profile  # Complain mode

Audit avec AppArmor

AppArmor génère des journaux qui fournissent un aperçu de ses actions d'application ; ces journaux peuvent être trouvés dans `/var/log/syslog`, et des outils comme `journalctl` peuvent être utilisés pour les consulter.

sudo journalctl -xe | grep apparmor

4. Pratiques exemplaires supplémentaires en matière de sécurité

Au-delà de l'utilisation de UFW, Fail2ban et AppArmor, il existe d'autres étapes importantes que vous pouvez suivre pour renforcer davantage votre serveur :

Mettez régulièrement à jour votre Ubuntu

Assurez-vous que votre système et tous les paquets installés sont à jour afin de vous protéger contre les vulnérabilités :

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

Activez les mises à jour de sécurité automatiques pour protéger votre serveur :

sudo apt install unattended-upgrades

Désactiver les services inutilisés

Tout service ou application dont vous n'avez pas besoin doit être désactivé pour réduire la surface d'attaque. Cependant, avant de désactiver des services, il est important d'identifier ceux qui s'exécutent sur votre serveur en utilisant la commande systemctl :

sudo systemctl list-units --type=service

Une fois que vous avez identifié les services inutiles, vous pouvez les désactiver pour empêcher le service de démarrer automatiquement au démarrage, réduisant ainsi la surface d'attaque.

sudo systemctl disable service-name

Utiliser l'authentification par clé SSH

Pour une sécurité SSH améliorée, utilisez des paires de clés SSH pour l'authentification et désactivez la connexion par mot de passe.

ssh-keygen -t rsa -b 4096
ssh-copy-id user@your-server-ip

Ensuite, modifiez le fichier de configuration SSH pour désactiver les connexions par mot de passe :

sudo nano /etc/ssh/sshd_config

Définissez PasswordAuthentication no, puis redémarrez SSH :

sudo systemctl restart ssh

Maintenant, seule l'authentification par clé SSH sera autorisée, augmentant la sécurité de votre serveur.

Conclusion

Sécuriser votre serveur de production Ubuntu est une étape cruciale pour protéger votre environnement contre diverses attaques. En configurant UFW pour la gestion du pare-feu, en utilisant Fail2ban pour atténuer les attaques par force brute, et en exploitant AppArmor pour contrôler le comportement des applications, vous pouvez réduire considérablement le risque d'accès non autorisé et d'attaques.

Surveillez toujours vos journaux, appliquez rapidement les correctifs de sécurité et examinez régulièrement vos configurations de sécurité pour rester en avance sur les menaces potentielles. Renforcer votre système dès aujourd'hui garantira sa stabilité, sa sécurité et sa fiabilité à long terme.