Contrôle de l'accès aux services

Il est essentiel de préserver la sécurité de votre système Red Hat Linux. Une manière de gérer la sécurité de votre système consiste à gérer soigneusement l'accès aux services du système. Il se peut que votre système doive offrir un accès ouvert à des services particuliers (par exemple, httpd si vous utilisez un serveur Web). Toutefois, si vous ne devez pas fournir de service, désactivez-le — ceci minimisera votre exposition à des bogues éventuels.

Plusieurs méthodes permettent de gérer l'accès à des services système. Vous devrez choisir celle que vous voulez utiliser, en fonction du service, de la configuration de votre système et de votre niveau d'expertise dans Linux.

La manière la plus simple de refuser l'accès à un service est simplement de le désactiver. Tant les services gérés par xinetd (dont nous parlerons plus loin dans cette section) que les services de la hiérarchie /etc/rc.d peuvent être configurés pour démarrer ou s'arrêter à l'aide de l'utilitaire ntsysv ou de chkconfig. Vous trouverez peut-être que ces outils sont plus faciles à utiliser que leurs alternatives — édition manuelle de nombreux liens symboliques situés dans les répertoires sous /etc/rc.d, ou édition des fichiers de configuration xinetd dans /etc/xinetd.d.

ntsysv fournit une interface simple permettant d'activer ou de désactiver des services. Vous pouvez utiliser ntsysv pour activer ou désactiver un service géré par xinetd. Vous pouvez également utiliser ntsysv pour démarrer ou arrêter un service dans la hiérarchie /etc/rc.d ; dans ce cas, la commande ntsysv sans options configure votre niveau d'exécution actuel. Si vous voulez configurer un autre niveau d'exécution, utilisez quelque chose comme ntsysv --levels 016 (dans cet exemple, vous configureriez les 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 touches de direction Haut et Bas pour naviguer dans la liste. La barre d'espacement permet de sélectionner et désélectionner des services ; elle permet également d'"appuyer" sur les boutons Ok et Cancel. Pour passer de la liste de services aux boutons Ok et Cancel, utilisez la touche Tab. Un astérisque * signifie qu'un service est activé. La touche F1 permet d'afficher une brève description de chaque service.

chkconfig permet également d'activer et de désactiver des services. La commande chkconfig --list affiche la liste des services système et leur état Démarré (on) ou Arrêté (off) dans les niveaux d'exécution 0-6 (à la fin de la liste figure une section relative aux services gérés par xinetd, décrits plus loin dans cette section).

Vous pouvez également utiliser chkconfig pour voir si un service spécifique est actif. Par exemple, la commande suivante vérifie l'activité du démon finger :

$ chkconfig --list finger
finger          on

Comme illustré plus haut, la commande finger est activée dans le niveau d'exécution courant.

Si vous utilisez chkconfig --list pour interroger un service dans /etc/rc.d, le système affiche les paramètres du service pour chaque niveau d'exécution, comme suit :

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

Plus important encore, chkconfig permet de définir un service à démarrer (ou non) dans un niveau d'exécution spécifique. Par exemple, si nous voulions désactiver nscd dans les niveaux d'exécution 3, 4 et 5, nous utiliserions une commande telle que :

chkconfig --level 345 nscd off

Reportez-vous à la page man chkconfig pour plus d'informations sur la manière de l'utiliser.

Une autre manière de contrôler l'accès à des services Internet consiste à utiliser xinetd, un programme de remplacement sécurisé de inetd. xinetd conserve les ressources système, assure le contrôle d'accès et la journalisation et permet de démarrer des serveurs spéciaux. xinetd permet de donner accès uniquement à des hôtes donnés, de refuser l'accès à des hôtes donnés, de ne donner accès à un service qu'à certains moments, de limiter le taux de connexions entrantes et/ou la charge créée par les connexions, etc.

xinetd fonctionne en permanence et contrôle tous les ports pour les services qu'il gère. Lorsqu'une demande de connexion arrive pour l'un des services qu'il gère, xinetd démarre le serveur approprié pour ce service.

Le fichier de configuration pour xinetd est /etc/xinetd.conf, mais vous remarquerez, en inspectant le fichier, qu'il ne contient que quelques valeurs par défaut et une instruction pour inclure le répertoire /etc/xinetd.d. Les fichiers figurant dans le répertoire /etc/xinetd.d contiennent les options de configuration pour chaque service géré par xinetd, de sorte que vous devez éditer ces fichiers pour configurer xinetd.

Reportez-vous aux pages man de xinetd (8) et xinetd.conf (8) pour obtenir des instructions spécifiques sur la manière de configurer les fichiers dans /etc/xinetd.d. La page Web xinetd, accessible à l'adresse http://www.xinetd.org/, constitue une autre excellente source d'informations.

De nombreux administrateurs système UNIX sont habitués à utiliser TCP wrappers pour gérer l'accès à certains services réseau. Tous les services réseau gérés par xinetd (de même que tout programme intégrant un support pour libwrap) peuvent utiliser TCP wrappers pour gérer l'accès. xinetd peut utiliser les fichiers /etc/hosts.allow et /etc/hosts.deny pour configurer l'accès aux services système. Si vous voulez utiliser TCP wrappers, reportez-vous aux pages man de hosts_access (5) pour plus de détails.

Une autre manière de gérer l'accès aux services système consiste à utiliser ipchains pour configurer un pare-feu IP. Si vous utilisez Linux pour la première fois, vous devez comprendre que ipchains peut ne pas être la meilleure solution pour vous. La configuration de ipchains peut s'avérer compliquée et sera mieux maîtrisée par un administrateur système UNIX/Linux expérimenté.

En revanche, l'avantage d'ipchains réside dans sa flexibilité. Par exemple, si vous avez besoin d'une solution personnalisée donnant accès à certains services sur certains hôtes, ipchains peut s'en charger. Reportez-vous au Linux IPCHAINS-HOWTO à l'adresse http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html pour plus d'informations sur ipchains. Le Linux IPCHAINS-HOWTO est également disponible sur le CD-ROM de documentation.

En revanche, si vous recherchez un utilitaire capable de définir des règles d'accès générales pour votre ordinateur personnel et/ou si vous débutez sur Linux, essayez l'utilitaire gnome-lokkit. gnome-lokkit est un utilitaire à interface graphique qui pose des questions sur la manière dont vous voulez utiliser votre ordinateur. En fonction de vos réponses, gnome-lokkit configure un pare-feu simple à votre place.