Sécurisation d’annuaires
Sécurisation de l’annuaire de noms DNS
Dans la mesure où nombre d’applications, comme nous l’avons vu précédemment, ont recours à la résolution de noms pour reconnaître les serveurs sous-jacents, on peut alors s’interroger sur le degré de sécurité souhaité en ce qui concerne ce service bien particulier, faisant transiter des informations critiques au travers d’Internet (adresses IP et noms FQDN). La fonctionnalité BIND (Berkeley Internet Name Daemon aussi appelée Berkeley Internet Name Domain) est le serveur de résolution de noms DNS le plus utilisé sur Internet, spécialement sur des serveurs Unix/Linux. C’est donc devenu le standard de facto de la résolution DNS et il appartient donc aux applications couramment utilisées.
RAPPEL : la première version de BIND a été conçue par quatre étudiants diplômés de l’université de Berkeley en Californie, sur la base du système d’exploitation BSD 4.3. En 1988, c’est Paul VIXIE qui reprend la maintenance du projet. Actuellement, BIND est développé par l’Internet System Consortium (ISC).
1. Généralités sur le serveur de noms
Un serveur de noms (abrégé en DNS pour Domain Name Server) est un annuaire à structure arborescente inversée. La racine est généralement représentée en haut et déploie ses branches vers le bas. Son rôle est de faciliter l’accès aux systèmes disposant d’adresses IP et leur permettre, grâce à un mécanisme d’association, de récupérer le nom des serveurs. La racine est alors représentée par un ".", on trouve, en dessous, les domaines de haut niveau (aussi appelés top-level domains) : .fr, .com, .org, .eu... Le parcours s’effectue donc à l’envers depuis la racine, vers le bas (la machine ou le serveur référencé) :
De façon intégrée, le serveur de noms possède une configuration particulière pour les routeurs de courrier électronique (notée généralement MX), autorisant une résolution inverse de celle effectuée par les hôtes...
Mise en œuvre d’un annuaire OpenLDAP
Autre annuaire à correctement sécuriser : l’annuaire LDAP. En effet, parmi les services d’infrastructure utilisés dans les entreprises, il en est un permettant de collecter les informations des utilisateurs. Il s’agit de LDAP. Ce n’est rien d’autre qu’une base de données permettant de partager des informations au sein d’un même réseau. Ce genre de base peut contenir toute sorte de données telles que des coordonnées téléphoniques, des informations fonctionnelles ou encore des données système. Le sigle LDAP signifie Lightweight Directory Access Protocol et s’apparente à un protocole d’accès aux informations contenues dans l’annuaire. Ce système s’appuie sur un système de consultation d’annuaire, au départ appelé X.500, mis au point, par la firme Xerox. Il utilise les mêmes concepts que le serveur de noms DNS vu précédemment, mais en étendant le spectre des informations administrées :
-
adresse IP
-
nom de machine
-
coordonnées administratives
-
compte utilisateur
-
mot de passe
-
données de routage
-
système de partitions
Toutefois, ce type d’annuaire est optimisé essentiellement pour les lectures et les recherches avancées. Ainsi, les opérations de modification ou d’ajouts peuvent être assez coûteuses en termes de performances sur les médias standards de type disque. Les données y sont stockées selon un modèle distribué et il est possible d’effectuer des réplications.
1. Architecture d’un annuaire LDAP
La structure des données gérées est alors appelée schéma. Elle est extensible en fonction des besoins de l’organisation y faisant appel et le modèle appliqué est fondé sur des standards assurant l’interopérabilité entre les différentes implémentations des différents supports OS. Dans le cadre de la sécurisation sous Debian, on s’intéresse surtout à l’implémentation de la version open source appelée OpenLDAP, apportant avec elle de nombreuses garanties de sécurité au travers des systèmes de chiffrement...
Alternative de l’annuaire LDAP : NIS
Toute cette mécanique fonctionne parfaitement. Mais, une telle complexité n’est pas nécessairement souhaitable dans certaines petites entreprises. Il existe une alternative plus légère que l’annuaire LDAP pour gérer les comptes : NIS (Network Information Server).
RAPPEL : les annuaires NIS étaient à l’origine un moyen simple et rapide de centraliser l’administration des comptes et des machines. Ils permettaient de stocker et distribuer les informations administratives du réseau afin de présenter un ensemble cohérent de données concernant les comptes utilisateurs, les groupes et les machines.
On utilise généralement un serveur NIS conjointement avec des serveurs NFS présentant des volumes à différents utilisateurs centralisés. Dans ce genre de configuration, les comptes utilisateurs sont tous regroupés sous forme de fichiers (ou map) et ceux-ci sont propagés lors des modifications effectuées au niveau du serveur NIS.
1. Service NIS
Lorsque l’on installe le package nis sur un serveur, l’administrateur doit renseigner le nom du domaine local, c’est-à-dire le nom du domaine qu’il souhaite donner à son annuaire central NIS. Après quoi, il faut renseigner la variable NISSERVER dans le fichier /etc/default/nis de façon à indiquer au service qu’il s’agit d’un nœud maître :
Par défaut, le client NIS est installé sur le serveur. C’est pourquoi la variable NISCLIENT est déjà renseignée.
Ensuite, il faut également modifier le fichier /etc/yp.conf afin de renseigner l’adresse IP du serveur local :
ATTENTION : il convient plutôt d’utiliser l’adresse IP. Ainsi, en cas de défaillance du serveur de noms, la résolution pourra tout de même être réalisée.
Nous pouvons alors redémarrer le daemon du service NIS et nous assurer que les services RPC (Remote Procedure Call) sont bien utilisés :
# /etc/init.d/nis restart
# rpcinfo -p
Il est alors possible de créer les "bases de données" distribuées par le service NIS, qui sont stockées par défaut dans le répertoire /var/yp. Pour ce faire...
Service d’adressage dynamique DHCP
1. Fonctionnalités du service DHCP
Lorsque l’on initialise un réseau local d’entreprise, on a généralement la fastidieuse tâche de compléter, pour chaque machine, les informations réseau :
-
nom
-
adresse IP
-
masque
-
passerelle
Bien que le DHCP ne soit pas considéré totalement comme un annuaire, il en contient pourtant les éléments principaux : les baux de négociation et les fonctionnalités de réservation d’adresse. Si l’on ne dispose pas d’un serveur DHCP (Dynamic Host Configuration Protocol), il faut faire cela manuellement. Mais heureusement, un tel serveur permet d’effectuer les associations adresses (physique ou logique) avec les noms des différentes machines du réseau. Le serveur DHCP utilise le port UDP/67 et le client le port UDP/68 pour communiquer entre eux. Il existe plusieurs paquets susceptibles d’être interprétés au sein du protocole DHCP. Ils peuvent être émis indépendamment par le client ou le serveur selon les cas :
-
DHCPDISCOVER : localisation des serveurs DHCP disponibles.
-
DHCPOFFER : offre de réponse du serveur au paquet DHCPDISCOVER.
-
DHCPREQUEST : demande spécifique du client (prolongation du bail).
-
DHCPACK : proposition d’adresse IP de la part du serveur vers le client.
-
DHCPDECLINE : refus du client d’utiliser une adresse déjà distribuée.
-
DHCPRELEASE : libération du client de son adresse IP.
-
DHCPINFORM : demande du client de paramètres locaux, celui-ci ayant déjà son adresse.
Il faut, pour cela, installer le package isc-dhcp-server et configurer ensuite le fichier /etc/dhcp/dhcpd.conf.
Il faut penser à effectuer une copie de sauvegarde du fichier de configuration initial. Cela peut aider à repartir sur une situation pérenne en cas de configuration désastreuse.
# apt-get install isc-dhcp-server
Après l’installation, le service ne démarrera pas, car il faut le configurer pour que les occurrences du domaine et le paramétrage des sous-réseaux soient cohérents. Nous devons donc configurer le fichier dhcpd.conf en indiquant le nom du domaine et les adresses des serveurs de noms :
option domain-name "mydmn.org";
option domain-name-servers 192.168.1.251...
Solution évoluée : SAMBA 4
1. Introduction
Aujourd’hui, il existe une alternative plus évoluée encore que ce que l’on vient de voir, en termes d’annuaire intégré. Il s’agit de la solution SAMBA 4. À ce jour, Samba AD (autre nom de SAMBA 4) est livrée avec un certain nombre d’éléments favorisant l’intégration et la centralisation des annuaires au sein même d’un annuaire unique Active Directory d’entreprise :
-
un annuaire LDAP Active Directory
-
un serveur d’authentification Kerberos
-
un serveur de noms DNS, dynamique et sécurisé
-
le support de SAMBA 3
-
un serveur de procédures distantes RPC
La suite SAMBA 4, dont la version actuelle est la 4.6, n’est pas à proprement parler un successeur plus avancé de SAMBA 3. Son développement a suivi une autre branche du projet. On peut d’ailleurs parler d’un nouveau projet au sens strict.
Ce nouveau packaging permet la prise en charge des politiques de GPO ainsi que le support de configuration grâce au service RSAT, depuis n’importe quel client Windows. Comme nous l’avons souligné grâce à la compatibilité de SAMBA 3, nous pouvons facilement administrer le domaine ainsi déclaré, en ligne de commandes, via l’utilitaire samba-tool. Cette version SAMBA 4 s’apparente donc à un contrôleur de domaine.
2. Installation de la solution
La plupart des manipulations seront effectuées sous le compte root du super-utilisateur. Il faut configurer l’interface réseau avec une adresse IP statique. Dans l’exemple qui suit, on la positionnera à la valeur 192.168.1.250 et le serveur portera le nom de debian9. Nous commençons donc par éditer le fichier /etc/network/interfaces pour y placer les lignes ci-dessous :
address 192.168.1.250
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
Vous pouvez également placer la déclaration du domaine de recherche ainsi que les adresses IP des serveurs de noms :
dns-nameservers 192.168.1.251 192.168.1.252
dns-search mydmn.org
Nous pouvons compléter cette configuration en éditant le fichier /etc/hostname pour y placer la ligne suivante (il est possible d’ailleurs...