Services système et administration
Introduction
Parmi les éléments de sécurisation abordés jusque-là, outre les mécanismes actifs, il existe également des moyens détournés d’accroitre la sûreté de fonctionnement. Ces méthodes indirectes sont très importantes, car elles participent à la mise en place d’une politique de sécurité de l’entreprise efficace. Ce chapitre exposera les méthodes pour :
-
Disposer d’une référence temporelle unique.
-
Étendre les possibilités des partitions et accroitre la redondance des données.
-
Favoriser la mutualisation et/ou la centralisation des données hébergées.
-
Mettre en place un système d’administration centralisée.
-
Limiter l’accès aux services grâce à un wrapper.
Serveur de temps
1. Présentation
En entreprise, lorsque de nombreux serveurs sont groupés dans un même domaine ou sur un même réseau, il convient de synchroniser leur horloge afin de faire en sorte que la date affichée soit la même, ne serait-ce que pour éviter de se demander lors d’analyses de journaux de logs si les horodatages sont corrects. En effet, s’il y a des incohérences dans les dates (date de création, date de modification et date de dernier accès) sur des fichiers provenant de divers serveurs, nous risquons d’en faire de mauvaises interprétations. De plus, certaines applications nécessitent de disposer d’une référence du temps unique : bases de données, sauvegardes, etc. Pour régler cela, nous avons le plus souvent recours à un serveur de temps s’appuyant sur le protocole NTP (Network Time Protocol). Celui-ci permet à un ordinateur de synchroniser son horloge sur une machine de précision plus importante. Les différents niveaux de précisions sont appelés strates. Ainsi, les horloges dites atomiques représentent la strate 0 et sont directement associées aux serveurs de strate 1, eux-mêmes liés aux serveurs de strate 2, puis 3... Le protocole NTP utilise le port UDP/123 pour émettre ses requêtes sur le réseau :
Chaque nœud de l’architecture doit être configuré de telle sorte qu’il connaisse au minimum les serveurs parents et/ou collatéraux. L’administrateur du ou des serveurs est alors en charge d’effectuer cette configuration localement. C’est l’agrégation de ces différentes configurations qui permet au protocole NTP de communiquer de façon aussi flexible, extensible et robuste.
2. Installation du serveur NTP
Dans la majorité des cas, les entreprises disposent aujourd’hui d’un serveur de temps NTP, leur fournissant une référence temporelle unique, pour l’intégralité de leurs serveurs ou de leurs équipements. La partie serveur de temps, à proprement parler, est assurée par un équipement (ou un cluster d’équipement), associé à une antenne GPS, chacun, fournissant la référence de temps pour l’ensemble...
Matrices RAID
En matière de sécurisation des données, au niveau d’un système, le meilleur moyen reste encore la redondance des disques ou des partitions physiques. Pour ce faire, nous pouvons choisir d’avoir recours aux matrices RAID (ou Redundant Array of Inexpensive Disks) qui consistent en la combinaison de plusieurs disques indépendants jumelés en une seule et unique matrice de disques. Cette dernière apparaît alors comme une unité logique de stockage unique. Cette architecture est, selon les cas, tolérante aux pannes et aux fautes, grâce à la redondance des informations qui y sont stockées.
De fait, il existe plusieurs types de RAID :
-
RAID 0 (stripe mode) : deux disques (en principe de même taille) sont regroupés et forment un seul volume. Chaque opération de lecture ou d’écriture est fractionnée et réalisée sur chacun des disques composant le RAID. Les performances sont accrues puisque les opérations de lecture/écriture sont parallélisées sur les disques, mais ce mode n’a aucune redondance. En cas de panne d’un des deux disques, les données sont perdues.
-
RAID 1 (mirror mode) : il s’agit du premier mode redondant pouvant être utilisé à partir d’un ensemble de deux disques (ou plus, pour prendre en compte d’éventuels disques de secours ou de spare). Chacune des informations est inscrite sur un disque, puis est alors répliquée sur les autres. Ainsi, lorsque N-1 disques de la matrice sont endommagés, les données, quant à elles restent intactes. Pour peu qu’il y ait un disque de secours, au moment de la panne, celui-ci est automatiquement reconstruit et est substitué au périphérique défaillant.
-
RAID 5 (striping & parity mode) : ici, on utilise une boucle de parité redistribuée. Il s’agit du mode le plus utilisé, car offrant le meilleur compromis entre l’efficacité et la sécurité. Il faut au minimum trois disques, ainsi que d’éventuels disques de secours. La parité est inscrite sur chacun des disques et, de ce fait, la taille finale est celle des N-1 disques de la machine. Le RAID 5 survit à une panne de disque. De plus, avec des disques de secours...
Partages Linux
Dans de nombreux domaines, il a toujours été plus profitable de mutualiser les informations, plutôt que de les disperser aux quatre vents, causant alors des doublons. Si l’on applique ce précepte à l’informatique, et plus particulièrement aux serveurs, il est toujours plus facile de partager des volumes entiers entre serveurs GNU/Linux, en utilisant le protocole NFS, plutôt que de dupliquer les volumes et les risques de pertes et/ou de corruption.
1. Paramétrage serveur
Network File System (ou NFS) représente le protocole historique de partage, sur des systèmes Unix/Linux. Ce mode de partage est d’autant plus intéressant, aujourd’hui, avec l’avènement des unités de stockage peu onéreuses, car il permet de distribuer, tout ou partie d’un système de fichiers, vers des clients NFS. C’est au serveur, dont le système de fichiers présente sa volumétrie vers les clients, de paramétrer la partie serveur du protocole.
Du côté serveur, les dossiers à présenter aux différents clients sont listés dans le fichier /etc/exports. Chaque ligne représente un partage distinct et est composée de deux parties :
-
Première partie : le chemin d’accès au répertoire exporté.
-
Seconde partie : les autorisations d’accès sous la forme « hôte(permissions) ».
Lorsque le nom d’hôte n’est pas défini, alors c’est l’ensemble du réseau qui est impacté par les permissions, et en cas d’absence de celles-ci, l’export sera alors effectué en lecture seule.
Il ne faut pas séparer d’un espace le binôme « hôte(permissions) » et le champ hôte peut représenter :
-
un nom de serveur unique
-
un domaine
-
un réseau (ou un sous-réseau)
-
une combinaison (avec des caractères de substitution)
Quant aux permissions, les indicateurs concernant les systèmes de fichiers ou les montages sont toujours valables, c’est-à-dire les étiquettes suivantes :
-
ro : lecture seule.
-
rw : lecture et écriture.
-
no_root_squash : root distant équivalent au root local.
-
root_squash : l’uid de root est substitué...
Outils d’administration
1. Gestion des applications AMP
Étant donné que durant ces chapitres nous avons eu l’occasion de passer en revue un certain nombre d’applications utilisant des bases de données et des sites web, il peut être intéressant d’installer un logiciel d’administration central pour site Apache/MySQL/PHP. Il existe en effet un outil phpMyAdmin développé en PHP, permettant d’administrer les bases de données MySQL. Il est souvent utilisé dans les configurations à base de services AMP, comprenez Apache/PHP/MySQL. Afin d’installer phpMyAdmin sur Debian Jessie, il suffit de l’installer de la façon suivante :
# apt-get install phpmyadmin
Durant le processus, l’installeur demande quels sont les serveurs web à configurer. Si aucun de ceux proposés n’est présent, il faudra veiller à en installer un :
Dans une architecture de production, il est conseillé de prévoir la création d’une base dédiée à l’administration de l’utilitaire phpMyAdmin. S’’il s’agit juste de découvrir l’outil, nous pouvons très bien nous servir de l’assistant de création de base ci-dessous :
Bien évidemment, pour pouvoir créer une nouvelle base de données, l’outil nécessite les droits et privilèges de l’administrateur MySQL. Il faut donc lui fournir le mot de passe d’administration root d’une instance MySQL:
De la même façon, l’assistant propose de créer un compte d’administration phpMyAdmin et de lui attribuer un nouveau mot de passe :
2. Utilisation de l’outil phpMyAdmin
Au final, il est possible de se connecter à l’application phpMyAdmin en utilisant l’URL suivante : http://<Server>/phpmyadmin/ depuis n’importe quel navigateur avec le compte root de l’administrateur MySQL :
La page d’accueil de l’outil fournit alors tous les éléments adéquats pour administrer l’instance MySQL, notamment au travers de la rubrique mysql elle-même :
Dans cette rubrique, donnant accès à l’intégralité des objets de la base mysql, nous pouvons ainsi naviguer d’objet en objet, au gré...
Les mécanismes de wrapper
1. Principe de fonctionnement
Il s’agit d’un mécanisme "d’emballage réseau", au niveau Transport du modèle TCP/IP, permettant de sécuriser les réseaux liés à la bibliothèque libwrap. On peut voir cela comme un serveur d’ACL réseau, permettant de filtrer l’accès aux daemons des services, via les adresses IP, les sous-réseaux et les noms d’hôtes. Contrairement au contrôle d’accès réalisé au niveau de ces mêmes services, le TCP wrapper autorise la configuration à chaud des daemons, sans avoir à les arrêter ni les redémarrer, ce qui est un plus lorsque nous effectuons les actions sur des serveurs de production. Cela permet de mieux contrôler les services utilisés par les pare-feu, puisque les TCP wrappers contrôlent les accès à partir du nom d’hôte et de l’adresse IP, et non plus en fonction du numéro de port. De plus, la conservation des traces et de l’historique se configure simplement au travers des mécanismes standards : syslogd ou rsyslogd. Nous pouvons ainsi regrouper les demandes d’accès d’applications, et opérer, à l’aide d’un seul et même service de vérification : le wrapper, la gestion des règles de filtrage (ou ACL selon la terminologie). Il existe deux utilitaires qui peuvent être utilisés en corrélation :
-
inetd
-
xinetd
Le formalisme de leur fichier de configuration est sensiblement le même, voici son principe :
<Daemon>: <Clients>[: spawn <Commande>]
Le daemon et le client peuvent se présenter sous forme de liste dont chaque membre est séparé du précédent par un espace. La dernière partie en option permet, le cas échéant, de faire exécuter une commande si les critères de coïncidence de la règle sont remplis. Ces mêmes règles sont généralement regroupées dans les fichiers /etc/hosts.allow et /etc/hosts.deny. Toutefois, lorsque la liste des hôtes est trop importante, il est possible d’indiquer le chemin d’accès à un fichier (ou un groupe de fichiers) devant contenir les règles constituant...
Les mécanismes de statistiques
1. Notion de comptabilité
Parmi la panoplie des outils permettant d’accroître aussi la sécurité des systèmes, il en est un qu’il vaut mieux connaître. Il s’agit ici de décrire comment activer la comptabilité des processus, sur un système Linux. Dans le cas des processus, la comptabilité consiste à enregistrer et récapituler les actions effectuées sur le système. En effet, sur les versions récentes du noyau Linux, il est possible de cataloguer les informations concernant les commandes exécutées, l’utilisateur qui en est à l’origine, le temps CPU consacré à leur exécution et encore bien plus d’informations. Cela permet alors de conserver les informations détaillées sur les ressources système utilisées, leur répartition entre utilisateurs, et évidemment, de surveiller le système lui-même.
ATTENTION : les systèmes GNU/Linux en dessous du noyau 1.3.73 ne peuvent utiliser cette fonctionnalité, mais Jessie étant en version 3.8 minimum, cela ne pose aucun problème.
2. Service accton
Le service administrant l’ensemble de ces informations s’appelle accton. Cette fonctionnalité est activée grâce à la commande ci-dessous :
# accton /var/account/pacct
Pour l’activer facilement au démarrage du système (si ce n’est pas déjà le cas), voici un exemple de petit script possible :
# Activation de la comptabilité des processus
[[ -x /sbin/accton ]] && {{
/sbin/accton /var/log/pacct
echo ”Comptabilité des processus activé” ...