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-get update, /usr/bin/apt-get 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 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
:
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 :
Identifier l'Interface Réseau : Utilisez la commande
ip link
pour retrouver toutes les interfaces réseau :ip link
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/RHELPar 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.4Explication 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 :
systemctl restart networking # Pour Debian/Ubuntu
systemctl restart network # Pour CentOS/RHELVé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
.
Le Fichier
/etc/hosts
: Ajoutez des entrées pour les noms d'hôte locaux et leurs adresses IP associéesnano /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 serveurdbConfigurer 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 localAjoutez des lignes comme
nameserver adresse_ip_dns
pour chaque serveur DNS.
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-get update
suivi deapt-get 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 (en cours d'écriture)
- Gestion des services sous Linux.
- Activation et désactivation des services.
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 iptables et ufw (Uncomplicated Firewall). Vous pouvez utiliser ces outils pour contrôler le trafic réseau entrant et sortant.
iptables : C'est l'outil de pare-feu traditionnel sous Linux. Vous pouvez créer des règles personnalisées pour autoriser ou refuser le trafic en fonction de vos besoins spécifiques. Assurez-vous de bloquer les ports non utilisés et de permettre uniquement le trafic nécessaire.
ufw : Il s'agit d'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...
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.