Présentation des Services

Configuration et Sécurité du VPS

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.
ssh-keygen -t rsa -b 4096
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Désactivation des Accès Root Directs

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.

ssh-keygen -t rsa -b 4096
ssh-copy-id utilisateur@votre_serveur
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart ssh

Introduction à UFW

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.

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 25/tcp   # SMTP
sudo ufw allow 143/tcp  # IMAP
sudo ufw allow 993/tcp  # IMAP SSL
sudo ufw allow 110/tcp  # POP3
sudo ufw allow 995/tcp  # POP3 SSL
sudo ufw allow 587/tcp  # SMTP SSL
sudo ufw allow 465/tcp  # SMTPS
sudo ufw allow 22/tcp   # SFTP
sudo ufw enable
sudo ufw status verbose

Protection contre les Attaques Brute-Force

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.

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
action = iptables[name=NoAuthFailures, port=http, protocol=tcp]
logpath = /var/log/nginx/error.log
maxretry = 3

Importance des Mises à Jour

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.

sudo apt update
sudo apt upgrade
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

Transfert de Fichiers Sécurisé

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é.

  1. Téléchargez et installez FileZilla.
  2. Ouvrez FileZilla et configurez un nouveau site en utilisant l'adresse IP du serveur, le port 22 (SFTP) et les identifiants utilisateur.
  3. Assurez-vous que le serveur SSH est configuré pour autoriser SFTP avec OpenSSH Server.
  4. 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.

sudo useradd -m -s /bin/bash utilisateur_restraint
sudo passwd utilisateur_restraint
sudo usermod -aG groupe_specifique utilisateur_restraint

Obtention du Nom de Domaine et Configuration DNS

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.

  1. Créez un compte chez un registraire comme OVH, Gandi, ou Namecheap.
  2. Recherchez un nom de domaine disponible en fonction de vos besoins.
  3. 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/.

sudo ln -s /etc/nginx/sites-available/vhost_name /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Désactiver l'Affichage de la Version

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.

sudo certbot --nginx -d votre-domaine.com
sudo certbot renew --quiet

Configuration des Virtual Hosts

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.

# Postfix - main.cf
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
# Dovecot - dovecot.conf
ssl = required
ssl_cert = 

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 :

Description de Rainloop

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.

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Collecte des Métriques Système avec Node Exporter

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.

Installation et Configuration de Node Exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.0.1.linux-amd64.tar.gz
sudo mv node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin
sudo useradd -rs /bin/false node_exporter
sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target

Visualisation des Métriques avec Grafana

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