Chapitre 5. Contrôle de l'accès aux services

Il est extrêmement important de maintenir la sécurité de votre système Red Hat Linux. Une des manières de garantir la sécurité de votre système est de gérer méticuleusement l'accès aux services. Votre système doit peut-être fournir un accès ouvert à des services particuliers (httpd par exemple, si vous utilisez un serveur Web). Cependant, si vous ne devez pas absolument fournir un service, vous devriez le désactiver. Vous diminuerez ainsi votre exposition à d'éventuels bogues.

Plusieurs méthodes de gestion d'accès aux services du système vous sont proposées. Vous devrez choisir celle que vous voulez utiliser, d'après le service, la configuration de votre système et votre degré de connaissance de Linux.

La façon la plus simple de refuser l'accès à un service est de tout simplement le débrancher. Les services gérés par xinetd (dont nous parlerons plus loin) et les services contenus sous /etc/rc.d peuvent être configurés pour démarrer ou s'arrêter en utilisant soit l'utilitaire ntsysv, soit chkconfig. Vous trouverez peut-être ces outils plus faciles à utiliser que les autres méthodes — éditer manuellement les nombreux liens symboliques situés dans les répertoires sous /etc/rc.d, ou éditer les fichiers de configuration xinetd dans /etc/xinetd.d .

L'utilitaire ntsysv fournit une interface simple pour activer et désactiver les services. Vous pouvez utiliser ntsysv pour brancher ou débrancher un service géré par xinetd. Vous pouvez également utiliser ntsysv pour lancer ou arrêter un service dans la hiérarchie /etc/rc.d . Dans ce cas, la commande ntsysv (sans option) configure votre niveau d'exécution actuel. Si vous voulez configurer un niveau d'exécution différent, utilisez quelque chose comme ntsysv --levels 016 (dans cet exemple, vous installeriez des services pour les niveaux d'exécution 0, 1 et 6.)

L'interface ntsysv fonctionne comme le programme d'installation en mode texte. Utilisez les flèches vers le haut et le bas pour faire défiler la liste. La barre d'espacement sélectionne/désélectionne les services et sert également à appuyer sur les boutons Ok et Cancel. Pour passer de la liste des services aux boutons appuyez sur Ok et Cancel, ou utilisez la touche Tab. Un * signifie que le service est activé. Appuyez sur la touche F1 pour afficher une brève description de chaque service.

La commande chkconfig peut également être utilisée pour activer et désactiver les services. Si vous utilisez la commande chkconfig --list, une liste des services du système apparaîtra. Cette liste indique si les services sont activés (on) ou non (off) dans les niveaux d'exécution 0-6 (à la fin de la liste, vous verrez une section pour les services gérés par xinetd, dont nous parlerons plus loin).

Si vous utilisez chkconfig --list pour rechercher un service géré par xinetd, vous verrez si le service xinetd est activé (on) ou non (off). La commande suivante montre par exemple que finger est activé en tant que service xinetd :

$ chkconfig --list finger
finger          on

L'exemple ci-dessus montre que xinetd est en fonction et que finger est activé.

Si vous utilisez chkconfig --list pour rechercher un service dans /etc/rc.d, vous verrez les paramètres du service dans chaque niveau d'exécution, comme dans l'exemple suivant :

$ /sbin/chkconfig --list anacron
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off

chkconfig peut également être utilisé pour établir qu'un service doit démarrer (ou non) dans un niveau d'exécution spécifique. Si nous voulions par exemple désactiver nscd dans les niveaux d'exécution 3, 4, et 5, nous utiliserions la commande suivante :

chkconfig --level 345 nscd off

Consultez les pages chkconfig du manuel pour obtenir de plus amples informations sur son utilisation.

AvertissementActivation des modifications
 

Les modifications ne prennent pas effet immédiatement après l'utilisation de ntsysv ou chkconfig. Vous devez arrêter ou démarrer le service individuel à l'aide de la commande service daemon stop. Dans l'exemple précédent, remplacez daemon par le nom du service que vous voulez arrêter, par exemple httpd. Remplacez stop par start ou restart pour démarrer ou redémarrer le service. Si vous voulez démarrer ou arrêter un service géré par xinetd, utilisez la commande service xinetd restart.

Pour contrôler l'accès aux services d'Internet, vous pouvez utiliser xinetd, un remplaçant plus sûr de inetd. Le démon xinetd économise les sources de système, fournit un contrôle d'accès et de connexion et peut être utilisé pour lancer des serveurs spéciaux. xinetd peut être utilisé pour fournir l'accès à certains hôtes seulement, pour refuser l'accès à d'autres, pour ne fournir l'accès à un service qu'à un certain moment, pour limiter le nombre de connexions et/ou la charge des connexions, etc.

xinetd fonctionne constamment et surveille tous les ports pour les services qu'il gère. Lorsqu'une requête de connexion est reçcue à destination de l'un d'eux, xinetd démarre le serveur approprié à ce service.

Le fichier de configuration de xinetd est /etc/xinetd.conf, mais si vous examinez ce fichier vous verrez qu'il ne contient que quelques valeurs par défauts et une instruction pour contenir le répertoire /etc/xinetd.d. Pour activer ou désactiver le service xinetd, éditez son fichier de configuration dans le répertoire /etc/xinetd.d. Si l'attribut disable est placé sur yes, le service est désactivé. Si l'attribut disable est placé sur no, le service est activé. Si vous éditez l'un des fichiers de configuration xinetd ou changez son statut d'activation à l'aide de ntsysv ou chkconfig, vous devez redémarrer xinetd à l'aide de la commande service xinetd restart pour que le changement prenne effet.

De nombreux administrateurs de système UNIX ont l'habitude d'utiliser TCP wrappers pour gérer l'accès à certains services de réseau. Tous les services de réseau gérés par xinetd (ainsi que tous les programmes équipés de support intégré pour libwrap) peuvent utiliser TCP wrappers pour gérer les accès. xinetd peut utiliser les fichiers /etc/hosts.allow et /etc/hosts.deny pour configurer l'accès aux services de système. Si vous voulez utiliser TCP wrappers, consultez les pages de manuel hosts_access (5) pour obtenir des informations plus détaillées.

Vous pouvez également gérer l'accès aux services du système en utilisant ipchains pour configurer un pare-feu IP. Si vous êtes un nouvel utilisateur de Linux, ipchains n'est pas forcément la meilleure solution pour vous. L'installation de ipchains peut être compliquée et les administrateurs de système UNIX/Linux expérimentés auront moins de difficultés.

ipchains présente cependant une grande qualité : la flexibilité. Si vous avez par exemple besoin d'une solution personnalisée d'accès à certain services pour certains utilisateurs, ipchains est l'outil qu'il vous faut. Consultez Linux IPCHAINS-HOWTO à l'adresse http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html pour obtenir plus d'informations sur ipchains. Linux IPCHAINS-HOWTO est également disponible sur le CD de documentation.

Si vous cherchez un utilitaire qui instaure des règles générales d'accès pour votre ordinateur local et/ou si vous êtes néophyte, vous devriez essayer l'utilitaire gnome-lokkit. gnome-lokkit est une interface graphique qui vous posera des questions sur la manière dont vous voulez utiliser votre ordinateur. D'après vos réponses, gnome-lokkit configurera un pare-feu sur mesure.

Autres ressources

Pour obtenir plus d'informations concernant xinetd, consultez les ressources suivantes.

Documentation insallée

  • man xinetd — La page de manuel xinetd.

  • man xinetd.conf — Page de manuel pour le fichier de configuration xinetd.conf.

Sites Web utiles

  • http://www.xinetd.org — Page Web xinetd. Elle contient une liste plus détaillée des fonctionnalités et des exemples de fichiers de configuration.