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 :
/usr/sbin/rpc.yppasswdd — Également appelé le service yppasswdd, ce démon permet aux utilisateurs de changer leur mots de passe NIS.
/usr/sbin/rpc.ypxfrd — Également appelé le service ypxfrd, ce démon est responsable des transferts de cartes NIS (ou mappes) sur le réseau.
/usr/sbin/yppush — Cette application propage les bases de données changées aux multiples serveurs NIS.
/usr/sbin/ypserv — Représente le démon du serveur NIS.
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.
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.
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 |
![]() | Note |
---|---|
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.
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 |
![]() | Avertissement |
---|---|
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.
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 |
![]() | Astuce |
---|---|
Reportez-vous au Chapitre 7 pour obtenir de plus amples informations sur l'implémentation de pare-feu à l'aide des commandes IPTables. |
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.
Précédent | Sommaire | Suivant |
Sécurisation de portmap | Niveau supérieur | Sécurisation de NFS |