La configuration de votre VPS (Virtual Private Server) est la première étape pour sécuriser vos services. Le but est de rendre le serveur à la fois fonctionnel et protégé contre les attaques.
Connexion SSH
SSH (Secure Shell) est un protocole réseau permettant de se connecter à un serveur de manière sécurisée. Voici comment configurer SSH pour une connexion sécurisée :
Génération de clé SSH : Créez une paire de clés privée et publique.
Transfert de la clé publique : Copiez la clé publique sur le serveur pour l'authentification.
Paramétrage des permissions : Assurez-vous que les permissions des fichiers sont correctes pour éviter les accès non autorisés.
Par défaut, l'utilisateur root a un accès complet au système, mais il est préférable de désactiver l'accès direct pour cet utilisateur afin de réduire les risques de compromission.
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
sudo systemctl restart ssh
Utilisation des Clés SSH pour l'Authentification
L'authentification par clé SSH offre une sécurité accrue par rapport aux mots de passe, car elle repose sur une paire de clés publique et privée.
UFW (Uncomplicated Firewall) est un outil simple pour gérer le pare-feu sur les systèmes Linux. Il permet de contrôler les connexions entrantes et sortantes en fonction des règles définies.
Configurer UFW pour les Services Essentiels
Vous devez autoriser certains ports pour que les services comme SSH, HTTP, HTTPS, et les emails puissent fonctionner correctement.
Fail2ban est un outil qui scanne les fichiers journaux et bannit les adresses IP qui montrent des signes de comportements malveillants, tels que des tentatives de connexion répétées.
Configuration de Base dans jail.local
Le fichier jail.local permet de personnaliser la configuration de Fail2ban pour différents services comme SSH et Nginx.
Maintenir votre serveur à jour est crucial pour prévenir les vulnérabilités de sécurité. Les mises à jour régulières garantissent que votre serveur est protégé contre les menaces connues.
Automatisation des Mises à Jour
Pour simplifier la gestion des mises à jour de sécurité, vous pouvez configurer votre serveur pour les installer automatiquement.
SFTP (SSH File Transfer Protocol) est un protocole sécurisé pour transférer des fichiers, utilisant SSH pour crypter les communications. Voici comment l'utiliser en toute sécurité.
Configuration de FileZilla pour SFTP
FileZilla est un client FTP populaire qui supporte SFTP. Il vous permet de transférer des fichiers vers votre serveur en toute sécurité.
Téléchargez et installez FileZilla.
Ouvrez FileZilla et configurez un nouveau site en utilisant l'adresse IP du serveur, le port 22 (SFTP) et les identifiants utilisateur.
Assurez-vous que le serveur SSH est configuré pour autoriser SFTP avec OpenSSH Server.
Transférez des fichiers de manière sécurisée.
Sécurisation avec chroot
Pour renforcer la sécurité de votre serveur, il est recommandé de restreindre l'accès des utilisateurs SFTP à leur propre répertoire. Cela est réalisé à l'aide de la commande chroot, qui "enferme" l'utilisateur dans un répertoire spécifique, empêchant toute navigation en dehors de celui-ci. Cette approche est particulièrement utile pour les utilisateurs qui n'ont pas besoin d'accéder à l'ensemble du système de fichiers.
Par exemple :
Restrictions : Grâce au chroot, l'utilisateur ne peut pas naviguer hors du répertoire /home/sftp/casciot, garantissant ainsi qu'il n'a accès qu'aux fichiers qui lui sont destinés.
Accès SSH : L'utilisateur n'a aucun accès SSH normal ni droits d'administration, ce qui ajoute une couche supplémentaire de sécurité.
Création de Comptes Utilisateurs Sécurisés
Pour renforcer la sécurité, il est important de créer des comptes utilisateurs avec des permissions restreintes. Cela limite l'accès aux fonctions critiques du système.
Création d'un Utilisateur avec Accès Limité
Vous pouvez créer des utilisateurs avec des rôles spécifiques en ajustant leurs permissions et en les ajoutant à des groupes dédiés.
Un nom de domaine permet de rendre votre serveur accessible via une adresse conviviale, plutôt qu'une simple adresse IP. Voici comment obtenir et configurer un nom de domaine.
Choisir un Nom de Domaine
Un nom de domaine doit être unique et facilement mémorisable. Vous pouvez l'obtenir via un registraire de domaine.
Créez un compte chez un registraire comme OVH, Gandi, ou Namecheap.
Recherchez un nom de domaine disponible en fonction de vos besoins.
Achetez le domaine et configurez-le dans votre compte.
Configurer les Enregistrements DNS
Une fois le nom de domaine obtenu, vous devez configurer les enregistrements DNS pour qu'il pointe vers votre serveur.
Enregistrement A : Associe votre domaine ou sous-domaine à l'adresse IP de votre serveur.
CNAME : Utilisé pour rediriger un sous-domaine vers un autre, utile pour les configurations multi-services.
SPF, DKIM, DMARC : Ces enregistrements protègent vos emails contre le spam et l'usurpation.
TXT : Utilisé pour les vérifications de domaine ou pour des configurations spécifiques.
Ces enregistrements garantissent l'accessibilité et la sécurité de chaque service via son sous-domaine dédié.
Configuration et Sécurité de Nginx
Nginx est un serveur web performant utilisé pour héberger plusieurs services web. La configuration correcte de Nginx est essentielle pour garantir la sécurité et la disponibilité des services.
Configurer les Fichiers de Nginx
Les fichiers de configuration de Nginx sont situés dans /etc/nginx/sites-available/. Ces fichiers doivent être activés via des liens symboliques dans /etc/nginx/sites-enabled/.
Pour éviter la divulgation d'informations sensibles, il est crucial de désactiver l'affichage de la version de Nginx sur les pages d'erreur.
server_tokens off;
Utilisation de Certificats SSL pour Sécuriser les Communications
Les certificats SSL/TLS sont essentiels pour sécuriser les communications HTTPS entre le serveur et les clients. Let's Encrypt offre des certificats gratuits pour ce faire.
Obtention et Renouvellement Automatique des Certificats SSL
Avec Let's Encrypt, vous pouvez facilement obtenir et renouveler des certificats SSL pour votre domaine.
Les Virtual Hosts permettent d'héberger plusieurs services sur un même serveur. Chaque service est accessible via un sous-domaine dédié, assurant une organisation claire.
Description de Nextcloud
Nextcloud est une solution de cloud computing open-source qui permet de synchroniser et partager des fichiers en toute sécurité.
Configuration de Nextcloud
Le fichier de configuration principal de Nextcloud est situé à /var/www/nextcloud/config/config.php. Vous pouvez vérifier l'état de Nextcloud avec la commande suivante :
sudo -u www-data php /var/www/nextcloud/occ status
Description de Kanboard
Kanboard est un outil de gestion de projets basé sur la méthode Kanban. Il est utilisé pour organiser les tâches et les flux de travail au sein d'une équipe.
Configuration de Kanboard
La configuration de Kanboard se fait via les fichiers situés dans /etc/kanboard/. Il est important de restreindre l'accès à ces fichiers aux utilisateurs autorisés.
Description de Gitea
Gitea est une plateforme de gestion de code source open-source basée sur Git. Elle est idéale pour héberger des projets de développement.
Configuration de Gitea
Le fichier de configuration principal de Gitea se trouve à /etc/gitea/app.ini.
Services de Messagerie Sécurisés
Pour gérer vos emails de manière sécurisée, vous devez configurer correctement les services de messagerie tels que Postfix et Dovecot. Ils gèrent respectivement l'envoi et la réception des emails.
Sécurisation des Emails avec Postfix et Dovecot
Postfix et Dovecot doivent être configurés pour assurer la sécurité des communications par email. Voici les fichiers de configuration clés.
Validation du Domaine pour une Meilleure Délivrabilité
Pour améliorer la délivrabilité des emails et éviter qu'ils ne soient marqués comme indésirables, il est recommandé de valider le domaine sur Google Postmaster. Cela aide à recevoir les emails dans les boîtes de réception de services comme Google et Hotmail.
Outils de Test pour les Emails
Vous pouvez tester la configuration de votre serveur de messagerie en utilisant les outils suivants :
Rainloop est une interface webmail légère qui permet aux utilisateurs de gérer leurs emails directement depuis un navigateur.
Configuration de Rainloop
La configuration de Rainloop se fait principalement via son interface web. Il est crucial de s'assurer que les configurations de sécurité SSL sont en place pour protéger les communications.
Services de Monitoring : Grafana et Prometheus
La surveillance des performances du serveur et des services est cruciale pour maintenir un environnement stable et performant. Grafana et Prometheus sont utilisés ensemble pour collecter, visualiser et alerter sur l'état du système.
Collecte des Métriques avec Prometheus
Prometheus est un outil puissant qui collecte des métriques depuis différents services de votre serveur. Ces données sont ensuite utilisées pour surveiller la santé et les performances du système.
Configuration de Base de Prometheus
Le fichier de configuration de Prometheus est situé dans /etc/prometheus/prometheus.yml.
Node Exporter est un outil qui collecte des métriques système sur le serveur, telles que l'utilisation du CPU, la mémoire, l'espace disque, etc. Ces données sont ensuite exposées à Prometheus.
Grafana est utilisé pour visualiser les métriques collectées par Prometheus. Il permet de créer des tableaux de bord interactifs pour surveiller l'état du serveur.
Configuration de Grafana
Le fichier de configuration principal de Grafana est situé à /etc/grafana/grafana.ini. Voici comment configurer une source de données pour Prometheus :
[datasource]
name = Prometheus
type = prometheus
url = http://localhost:9090