Configuration des Serveurs Linux
Création :
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 important 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 tâches
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, traditionnellement 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 :
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 :
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 :
ou
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 desudo
. - 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
:
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
:
Pour définir les groupes scondaires d’un utilisateur existant on utilise la
commande usermod
avec l’option -aG
:
Supprimer un 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 :
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
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 :
Pour changer le hostname, utilisez la commande hostnamectl :
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 :
-
Identifier l’Interface Réseau : Utilisez la commande
ip link
pour retrouver toutes les interfaces réseau : -
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>
.
Par exemple pour une distribution Ubuntu :
Explication de chaque ligne :
auto lo
etiface 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.
- Sous Debian/Ubuntu, cela se fait généralement dans
-
Redémarrer le Service Réseau : Pour appliquer les modifications, redémarrez le service réseau :
-
Vérifier la Configuration IP : Vérifiez que la nouvelle configuration IP est correctement appliquée :
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
.
-
Le Fichier
/etc/hosts
: Ajoutez des entrées pour les noms d’hôte locaux et leurs adresses IP associéesAjoutez des lignes suivant le format
<adresse_ip> <nom_d hote complet> <alias>
. -
Configurer le Serveur DNS: Le fichier
/etc/resolv.conf
est utilisé pour configurer les serveurs DNS.Ajoutez des lignes comme
nameserver adresse_ip_dns
pour chaque serveur DNS.
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 essentielle 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 deapt 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 dezypper 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 deapk 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 importante. 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.