Aller au contenu principal

Configuration des Serveurs Linux

Dans une section précédente, nous avions vu comment installer un système d'exploitation Linux sur un serveur. Cependant, ce n'était que la première étape. Une fois l'OS en place, la véritable magie opère lors de la phase de configuration post-installation, où vous peaufinez le système pour répondre à vos besoins spécifiques. Ce processus est crucial pour assurer la sécurité, l'efficacité et la fiabilité de votre serveur.

Objectif de ce chapitre

Dans ce chapitre, nous allons plonger dans les aspects essentiels de la configuration post-installation d'un serveur Linux. Que vous configuriez un serveur web, une base de données, ou simplement un système pour des tâches générales, il y a un ensemble de pratiques et d'étapes à suivre pour transformer votre installation fraîche en une machine puissante et sécurisée.

De la mise en place de partitions de disque judicieusement planifiées à l'ajustement fin des services et des paramètres de sécurité, chaque étape est importante. Nous couvrirons les pratiques de base pour sécuriser votre serveur, et les astuces pour maintenir votre système à jour et fonctionnel.

Élévation des Privilèges sur les Systèmes Linux

Une élévation des privilèges est, en informatique, un mécanisme permettant à un utilisateur d'obtenir des privilèges supérieurs à ceux qu'il a normalement. Par sécurité, on n'utilise pas le compte root pour effectuer des taches d'administration. Généralement, on définit un utilisateur à qui on va ajouter des privilèges pour effectuer des tâches qu'il n'a pas le droit de faire en temps normal.

L'élévation de privilèges permet donc aux utilisateurs d'exécuter des commandes avec des droits étendus, généralement ceux de l'utilisateur root ou d'autres comptes privilégiés. Cette section aborde les méthodes courantes d'élévation de privilèges et les considérations de sécurité associées.

Utilisation de sudo

sudo est l'outil le plus couramment utilisé pour l'élévation des privilèges sur les systèmes Linux. Il permet aux utilisateurs autorisés d'exécuter des commandes avec les privilèges d'un autre utilisateur, typiquement root.

Exécuter une Commande en tant que Root :

sudo commande

Configuration de sudo

La configuration des privilèges sudo sur les systèmes Linux se fait via en général via le fichier /etc/sudoers. Ce fichier permet de définir qui peut exécuter quelles commandes et avec quels privilèges. Voici un aperçu du format et de la structure typique de ce fichier :

# /etc/sudoers
#
# Ce fichier doit être édité avec la commande `visudo`
# pour éviter les erreurs de syntaxe.

# Host alias specification
Host_Alias MONSERVEUR = monserveur.domaine.com

# User alias specification
User_Alias ADMINS = user1, user2

# Cmnd alias specification
Cmnd_Alias MAINTENANCE = /usr/sbin/shutdown, /usr/sbin/restart

# Defaults specification
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root ALL=(ALL:ALL) ALL
user1 ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# Allow a specific user to run a command without a password
user2 ALL=NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade

# Runas alias specification
Runas_Alias WEB = www-data

# User privilege specification using aliases
ADMINS MONSERVEUR=(WEB) MAINTENANCE

Explications des Sections :

  • Host Alias : Permet de définir des alias pour des groupes d'hôtes.
  • User Alias : Permet de créer des alias pour des groupes d'utilisateurs.
  • Cmnd Alias : Définit des alias pour des groupes de commandes.
  • Defaults : Spécifie des paramètres par défaut pour sudo.
  • User Privilege Specification : Définit les privilèges pour les utilisateurs individuels ou les groupes.
  • Members of Group : Donne des privilèges aux membres de groupes spécifiques.
  • NOPASSWD : Permet à des utilisateurs spécifiques d'exécuter certaines commandes sans mot de passe.
  • Runas Alias : Permet de définir des alias pour les utilisateurs sous lesquels les commandes peuvent être exécutées.

Exécuter une Shell en tant que Root

Pour ouvrir une session shell en tant que root, utilisez la commande suivante :

sudo -i

ou

sudo su

Cela vous donne un environnement de shell avec les privilèges de root, utile pour effectuer une série de tâches d'administration.

Bonnes Pratiques sur l'élévation de privilèges

L'élévation des privilèges doit être gérée avec prudence pour éviter des failles de sécurité :

  • Politique de Mot de Passe Forte : Assurez-vous que tous les utilisateurs ayant accès à sudo ont des mots de passe forts.
  • Principe du Moindre Privilège : Limitez l'utilisation de sudo aux utilisateurs qui en ont réellement besoin pour leurs tâches.
  • Audit et Surveillance : Surveillez les journaux /var/log/auth.log ou /var/log/secure pour toute activité suspecte liée à l'utilisation de sudo.
  • Toujours utiliser visudo pour éditer /etc/sudoers pour prévenir les erreurs de syntaxe.
  • Limiter l'utilisation de NOPASSWD pour des raisons de sécurité.
  • Tester les nouvelles règles avec soin avant de les appliquer.

Gestion des Utilisateurs et des groupes

Gestion des Groupes

Les groupes permettent de gérer des ensembles d'utilisateurs partageant les mêmes droits d'accès.

Création d'un Groupe

Pour créer un groupe, on utilise la commande addgroup :

sudo addgroup nouveau_groupe

Crée un nouveau groupe nouveau_groupe.

Ajouter d'un Utilisateur à un Groupe

Pour définir le groupe principal d'un utilisateur existant on utilise la commande usermod avec l'option -g :

sudo usermod -g nouveau_groupe utilisateur

Pour définir les groupes scondaires d'un utilisateur existant on utilise la commande usermod avec l'option -aG :

sudo usermod -aG groupe1,groupe2 utilisateur

Supprimer un Groupe

sudo delgroup groupe

Supprime le groupe.

Gestion des comptes utilisateur

Lors de l'installation, vous avez probablement créé un compte administrateur, souvent appelé root sous Linux et défini son mot de passe solide. En effet, le compte root possède des privilèges étendus sur le système. Vous n'utiliserez ce compte que pour effectuer des tâches d'administration système. Donc il faut plutôt créer un autre compte utilisateur à qui on donnera des droits limités via sudo

Les comptes utilisateurs sous Linux sont gérés principalement via les fichiers /etc/passwd (informations sur les utilisateurs) et /etc/shadow (mots de passe chiffrés des utilisateurs).

Création d'un Nouvel Utilisateur

LA commande adduser permet de créer un nouveau compte :

sudo adduser nouveau_utilisateur

Cette commande crée un nouvel utilisateur nouveau_utilisateur et un groupe portant le même nom. Elle crée également un répertoire personnel pour l'utilisateur et copie les fichiers de configuration par défaut.

Suppression d'un Utilisateur

sudo deluser utilisateur

Cette commande supprime l'utilisateur, mais laisse son répertoire personnel intact.

Attribution et gestion des droits d'accès

  • Principes des droits d'accès sous Linux.
  • Techniques d'attribution et de gestion des droits.

Configuration du Réseau

Pour que votre serveur Linux soit accessible depuis d'autres ordinateurs de votre infrastructure, vous devez configurer les paramètres réseau. Cela inclut l'attribution d'une adresse IP statique ou via un serveur DHCP, en fonction de vos besoins. Vous devrez également définir les paramètres DNS pour que votre serveur puisse résoudre les noms de domaine en adresses IP.

Définition du hostname

Le nom de la machine, ou hostname, identifie votre serveur au sein d'un réseau. Il est important de définir un hostname unique.

Affichage du hostname actuel :

hostname

Pour changer le hostname, utilisez la commande hostnamectl :

hostnamectl set-hostname votre-nouveau-hostname

Remplacez "votre-nouveau-hostname" par le nom que vous souhaitez attribuer à votre serveur.

Configuration de l'Adresse IP

L'attribution d'une adresse IP peut se faire de manière statique ou dynamique, via un serveur DHCP.

Voici comment configurer une adresse IP statique :

  1. Identifier l'Interface Réseau : Utilisez la commande ip link pour retrouver toutes les interfaces réseau :

    ip link
  2. Configurer une Adresse IP Statique : Éditez le fichier de configuration de l'interface réseau.

    • Sous Debian/Ubuntu, cela se fait généralement dans /etc/network/interfaces.
    • Sous CentOS/RHEL, cela se fait dans /etc/sysconfig/network-scripts/ifcfg-<nom_de_l_interface>.
    nano /etc/network/interfaces  # Pour Debian/Ubuntu
    nano /etc/sysconfig/network-scripts/ifcfg-<nom_de_l_interface> # Pour CentOS/RHEL

    Par exemple pour une distribution Ubuntu :

    # Fichier /etc/network/interfaces

    # L'interface loopback (loopback interface)
    auto lo
    iface lo inet loopback

    # L'interface réseau principale
    auto eth0
    iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

    Explication de chaque ligne :

    • auto lo et iface lo inet loopback : Configuration pour l'interface loopback, nécessaire pour le fonctionnement interne du système.
    • auto eth0 : Active l'interface eth0 au démarrage. Remplacez eth0 par le nom de votre interface réseau.
    • iface eth0 inet static : Définit que l'interface eth0 utilise une configuration IP statique.
    • address 192.168.1.100 : Définit l'adresse IP statique du serveur. Remplacez-la par l'adresse IP que vous souhaitez assigner à votre serveur.
    • netmask 255.255.255.0 : Spécifie le masque de sous-réseau.
    • gateway 192.168.1.1 : Définit l'adresse IP de la passerelle par défaut (souvent l'adresse du routeur dans les réseaux locaux).
    • dns-nameservers 8.8.8.8 8.8.4.4 : Indique les serveurs DNS utilisés pour la résolution de noms. Ici, les serveurs DNS de Google sont utilisés.
  3. Redémarrer le Service Réseau : Pour appliquer les modifications, redémarrez le service réseau :

    systemctl restart networking  # Pour Debian/Ubuntu
    systemctl restart network # Pour CentOS/RHEL
  4. Vérifier la Configuration IP : Vérifiez que la nouvelle configuration IP est correctement appliquée :

    ip addr show <nom_de_l_interface>

Configuration de la Résolution de Noms

La résolution de noms est la conversion des noms de domaine en adresses IP. Elle peut être statique via l'ajout des informations des informations dans le fichier /etc/hosts ou via des serveurs DNS. La configuration des serveurs DNS se fait en général via le fichier etc/resolv.conf.

  1. Le Fichier /etc/hosts: Ajoutez des entrées pour les noms d'hôte locaux et leurs adresses IP associées

    nano /etc/hosts

    Ajoutez des lignes suivant le format <adresse_ip> <nom_d hote complet> <alias>.

    127.0.0.1       localhost
    127.0.1.1 monserveur.local monserveur
    192.168.1.10 serveurweb.local serveurweb
    192.168.1.11 serveurdb.local serveurdb
  2. Configurer le Serveur DNS: Le fichier /etc/resolv.conf est utilisé pour configurer les serveurs DNS.

    nano /etc/resolv.conf
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    search local

    Ajoutez des lignes comme nameserver adresse_ip_dns pour chaque serveur DNS.

attention

La configuration de la résolution de nom peut être parfois faites par un service portant le nom systemd-resolved.

Mise à jour des packages

Après l'installation initiale d'un serveur Linux, l'une des premières et des plus importantes tâches à effectuer est la mise à jour des packages. Cette étape est cruciale pour plusieurs raisons. Tout d'abord, elle assure que tous les logiciels installés sont à jour avec les dernières versions, ce qui inclut des correctifs de sécurité essentiels et des améliorations de performance. Les systèmes d'exploitation, lors de leur installation, ne disposent pas toujours des dernières versions des packages, donc une mise à jour immédiate aide à protéger le serveur contre des vulnérabilités connues qui ont été corrigées dans des versions ultérieures. De plus, cette mise à jour garantit la compatibilité des packages, en s'assurant que toutes les dépendances entre les logiciels sont correctement gérées et à jour. En bref, la mise à jour des packages après l'installation est une étape fondamentale pour sécuriser et stabiliser votre serveur, jetant les bases d'un système fiable et efficace.

Les différents gestionnaires de package Linux

Les systèmes d'exploitation Linux utilisent divers outils de gestion de packages pour simplifier le processus d'installation, de mise à jour et de suppression de logiciels. Ces outils automatisent la gestion des dépendances et assurent la cohérence du système. Voici les outils de gestion de packages les plus couramment utilisés dans les principales distributions Linux :

APT (Advanced Packaging Tool)

  • Distribution : Utilisé principalement sur les distributions basées sur Debian comme Ubuntu.
  • Fonctionnalités : APT permet de gérer les packages en téléchargeant et en installant automatiquement les dépendances nécessaires. Il offre des commandes pour mettre à jour la liste des packages disponibles, installer ou supprimer des logiciels et mettre à jour l'ensemble du système.
  • Commande de mise à jour : apt update suivi de apt dist-upgrade.

YUM (Yellowdog Updater, Modified)

  • Distribution : Utilisé sur les distributions basées sur Red Hat, comme CentOS (jusqu'à la version 7) et Fedora (jusqu'à la version 22).
  • Fonctionnalités : YUM gère les packages RPM (Red Hat Package Manager) et résout les dépendances automatiquement. Il permet de rechercher des informations sur les packages, de les installer, de les mettre à jour et de les supprimer.
  • Commande de mise à jour : yum update.

DNF (Dandified YUM)

  • Distribution : Le successeur de YUM, utilisé sur Fedora (depuis la version 22) et CentOS/RHEL (à partir de la version 8).
  • Fonctionnalités : DNF offre les mêmes fonctionnalités que YUM mais avec des améliorations en termes de performance et de résolution de dépendances. Il utilise une bibliothèque de résolution de dépendances appelée libsolv.
  • Commande de mise à jour : dnf update.

Zypper

  • Distribution : Utilisé sur openSUSE et SUSE Linux Enterprise.
  • Fonctionnalités : Zypper gère les packages RPM et offre des fonctionnalités avancées comme la gestion de plusieurs dépôts, la recherche de packages, l'installation, la mise à jour et la suppression.
  • Commande de mise à jour : zypper refresh suivi de zypper dist-upgrade.

APK (Alpine Package Keeper)

  • Distribution : Utilisé principalement sur Alpine Linux, une distribution légère et orientée sécurité.
  • Fonctionnalités : APK est conçu pour être simple et efficace, adapté aux environnements où les ressources sont limitées, comme les conteneurs Docker. Il gère l'installation, la mise à jour, la suppression et la gestion des packages dans Alpine Linux.
  • Commande de mise à jour : apk update suivi de apk upgrade.

Configuration et gestion des services

Cette section se trouve dans cette documentation complète.

Sécurisation des serveurs Linux

La sécurité est une préoccupation fondamentale lors de l'administration d'un serveur Linux. Une installation correcte et une configuration initiale sécurisée sont essentielles, mais la sécurisation continue du serveur est tout aussi cruciale. Dans ce chapitre, nous aborderons plusieurs aspects de la sécurisation du serveur Linux pour protéger vos données et vos services contre les menaces en ligne.

Configuration du pare-feu

L'une des premières étapes pour sécuriser votre serveur consiste à configurer un pare-feu. Linux offre plusieurs solutions pour cela, notamment firewalld et ufw (Uncomplicated Firewall). Vous pouvez utiliser ces outils pour contrôler le trafic réseau entrant et sortant.

  • firewalld : firewalld est un gestionnaire de pare-feu pour les systèmes d'exploitation Linux qui fournit une gestion des règles de pare-feu à l'aide de zones et de services. Il est utilisé pour contrôler le trafic entrant et sortant selon des règles de filtrage définies par l'utilisateur.

  • ufw : ufw est en fait une interface utilisateur simplifiée pour iptables qui peut faciliter la configuration du pare-feu. Vous pouvez l'installer et l'utiliser pour créer des règles de pare-feu plus conviviales.

Assurez-vous de configurer le pare-feu de manière à autoriser uniquement le trafic légitime vers les services que vous avez installés, comme un serveur web ou une base de données.

Activation de SELinux ou AppArmor

SELinux (Security-Enhanced Linux) et AppArmor sont des systèmes de contrôle qui renforcent la sécurité en limitant les privilèges des processus. Ils permettent de définir des règles strictes pour les actions des applications et peuvent aider à prévenir les failles de sécurité.

Vous pouvez activer SELinux ou AppArmor sur votre serveur Linux en suivant les instructions spécifiques à votre distribution. Assurez-vous de comprendre le fonctionnement de ces systèmes et de les configurer correctement pour vos besoins.

Sécurisation du serveur SSH

SSH (Secure Shell) est un protocole couramment utilisé pour l'accès à distance aux serveurs Linux. Je vous propose de vous rendre dans cette documentation.

Autres mesures de sécurité

D'autres mesures de sécurité importantes incluent la mise en place de journaux de sécurité, la surveillance du système, le renforcement des règles d'authentification...

La sécurisation d'un serveur Linux est un processus continu. Assurez-vous de rester informé des dernières vulnérabilités et des meilleures pratiques de sécurité et mettez régulièrement à jour votre serveur pour maintenir une posture de sécurité robuste.

Plus d'informations dans la section Sécuriser l'infrastructure et en particulier la section durcissement des configurations.