5.3. Sécurisation de NIS

NIS est un acronyme pour 'Network Information Service'. Il représente un service RPC appelé ypserv qui est utilisé de concert avec portmap et d'autres services connexes pour distribuer des mappes de noms d'utilisateur, mots de passe et toute autre information confidentielle à tout ordinateur se disant être dans son domaine.

Un serveur NIS se compose de plusieurs applications. Parmi ces dernières figurent :

En fonction des standards actuels, NIS est plutôt vulnérable au point de vue sécurité. Il ne dispose d'aucun mécanisme d'authentification des hôtes et transmet toutes ses informations sur le réseau de manière non-cryptée, y compris les hachages de mots de passe. Dans de telles circonstances, il est important d'être très prudent lors de la mise en oeuvre d'un réseau utilisant NIS. Le fait que la configuration de NIS par défaut est non-sécurisée par nature, complique encore plus la situation.

Il est donc recommandé à toute personne envisageant d'implémenter un serveur NIS, de sécuriser auparavant le service portmap, selon les informations fournies dans la Section 5.2, puis de prêter attention aux éléments mentionnés ci-après.

5.3.1. Planifier prudemment le réseau

Puisque NIS transmet des informations confidentielles sur le réseau de manière non-cryptée, il est important d'exécuter le service non seulement derrière un pare-feu, mais également sur un réseau segmenté et sécurisé. Lors de toute transmission d'informations NIS sur un réseau non-sécurisé, elles risquent d'être interceptées. À cet égard, une conception prudente du réseau peut aider à lutter contre des brèches de sécurité importantes.

5.3.2. Utilisation d'un nom de domaine NIS et d'un nom d'hôte de type mot de passe

Tout ordinateur au sein d'un domaine NIS peut utiliser des commandes pour extraire des informations du serveur et ce, sans authentification, dès lors que l'utilisateur connaît le nom d'hôte DNS du serveur NIS et le nom de domaine NIS.

Par exemple, si une personne connecte un ordinateur portable au réseau ou fait intrusion dans le réseau depuis l'extérieur (et réussit à usurper une adresse IP interne), la commande suivante permettra de révéler la carte /etc/passwd :

ypcat -d <NIS_domain> -h <DNS_hostname> passwd

Si un agresseur est le super-utilisateur, il peut obtenir le fichier /etc/shadow en tapant la commande suivante :

ypcat -d <NIS_domain> -h <DNS_hostname> shadow

NoteNote
 

Si Kerberos est utilisé, le fichier /etc/shadow n'est pas stocké dans une carte NIS.

Pour rendre plus difficile l'accès d'un agresseur aux cartes NIS, créez une chaîne au hasard pour le nom d'hôte DNS, comme par exemple o7hfawtgmhwg.domain.com. De même, créez au hasard un nom de domaine NIS différent. Ce faisant, il sera beaucoup plus difficile pour un agresseur d'avoir accès au serveur NIS.

5.3.3. Modification du fichier /var/yp/securenets

NIS attendra des requêtes de tous les réseaux si le fichier /var/yp/securenets est vierge ou n'existe pas (comme c'est le cas après une installation par défaut). L'une des premières choses à faire consiste à spécifier une paire masque réseau/réseau dans le fichier afin que seul ypserv réponde aux requêtes provenant du réseau approprié.

Ci-dessous figure un exemple d'entrée provenant d'un fichier /var/yp/securenets :

255.255.255.0     192.168.0.0

AvertissementAvertissement
 

Ne lancez jamais un serveur NIS pour la première fois sans créer préalablement le fichier /var/yp/securenets.

Cette technique ne protège certes pas contre une attaque par usurpation d'IP, mais elle permet au moins d'imposer des limites quant aux réseaux dont le serveur NIS peut satisfaire les requêtes.

5.3.4. Attribution de ports statiques et utilisation de règles IPTables

Tous les serveurs en relation avec NIS peuvent se voir assigner des ports spécifiques sauf rpc.yppasswdd — le démon permettant aux utilisateurs de changer leurs mots de passe de connexion. L'attribution de ports aux deux autres démons du serveur NIS, à savoir rpc.ypxfrd et ypserv, permet de créer des règles de pare-feu pour protéger davantage les démons du serveur NIS contre des agresseurs.

Pour ce faire, ajoutez les lignes suivantes au fichier /etc/sysconfig/network :

YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"

Les règles IPTables suivantes peuvent être créées afin de spécifier le réseau que le serveur devra surveiller pour recevoir des requêtes provenant de ces ports :

iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 834 -j DROP
iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 835 -j DROP

TuyauAstuce
 

Reportez-vous au Chapitre 7 pour obtenir de plus amples informations sur l'implémentation de pare-feu à l'aide des commandes IPTables.

5.3.5. Utilisation de l'authentification Kerberos

Un des principaux inconvénients associés à l'utilisation de NIS pour l'authentification réside dans le fait que lors de toute connexion à une machine par un utilisateur, un hachage de mot de passe provenant de la carte /etc/shadow est transmis sur le réseau. Ainsi, si un agresseur s'octroie l'accès à un domaine NIS et renifle le trafic réseau, les hachages de noms d'utilisateur et mots de passe peuvent être recueillis en toute discrétion. Après un certain temps, un programme de craquage de mots de passe peut deviner des mots de passe non-hermétiques et un agresseur peut alors accéder à un compte valide sur le réseau.

Puisque Kerberos utilise un type de cryptographie basé sur des clés secrètes, aucun hachage de mots de passe n'est jamais transmis sur le réseau, rendant ainsi le système beaucoup plus sécurisé. Pour obtenir de plus amples informations sur Kerberos, reportez-vous au chapitre intitulé Kerberos du Guide de référence de Red Hat Enterprise Linux.