5.10. Sécurité réseau et contrôle d'accès

Laissez-moi commencer ce paragraphe en vous avertissant que la sécurisation de votre machine et du réseau contre les attaques pernicieuses est un art complexe. Je ne me considère pas du tout comme un expert dans ce domaine et bien que les mécanismes que je vais décrire puissent vous aider, si vous êtes préoccupés par la sécurité, alors je vous recommande d'effectuer vous-même des recherches sur le sujet. Il existe un grand nombre d'excellentes références sur l'Internet qui traitent du sujet, y compris le Security-HOWTO

Une importante règle pratique est : `N'utilisez pas de serveurs dont vous n'avez pas besoin'. Un grand nombre de distributions sont livrées avec tout un tas de services déjà configurés et démarrant automatiquement. Pour assurer quand même un minimum de sécurité vous devriez aller dans votre fichier /etc/inetd.conf et retirez (placez un `#' au début de la ligne) toute entrée que vous ne comptez pas utiliser. De bons candidats sont : shell, login, exec, uucp, ftp, et les services informatifs tels que finger, netstat and systat.

Il y a plein de sortes de sécurité et de mécanismes de contrôle d'accès ; je vais décrire les plus élémentaires.

5.10.1. /etc/ftpusers

Le fichier /etc/ftpusers est un mécanisme simple qui vous permet d'interdire l'accès de votre machine à certains utilisateurs de ftp. Il est lu par le programme démon (ftpd) lorsqu'une connexion ftp est reçue. Le fichier est une simple liste d'utilisateurs qui ne peuvent pas se connecter. Il ressemble à :

# /etc/ftpusers - utilisateurs ne pouvant pas se connecter par ftp
root
uucp
bin
mail

5.10.2. /etc/securetty

Le fichier /etc/securetty vous permet de spécifier sur quels fichiers de périphériques ttyroot a le droit de se connecter. Le fichier /etc/securetty est lu par le programme de connexion (habituellement /bin/login). Son format est une liste de fichiers de périphériques tty autorisés (sur tous les autres root ne peut se connecter) :

# /etc/securetty - consoles où root peut se connecter
tty1
tty2
tty3
tty4

5.10.3. Le mécanisme de contrôle d'accès des hôtes tcpd.

Le programme tcpd que vous avez vu dans le fichier /etc/inetd.conf fournit les mécanismes de contrôle d'accès et de connexion aux services qu'il a pour but de protéger.

Lorsqu'il est invoqué par le programme inetd, il lit deux fichiers contenant les règles d'accès et il autorise ou interdit l'accès au serveur qu'il protège.

Il cherche dans ces deux fichiers jusqu'à ce qu'il trouve une correspondance. S'il n'en trouve pas il suppose que l'accès est autorisé. Il recherche dans l'ordre suivant : /etc/hosts.allow, /etc/hosts.deny. Je décrirai chacun d'eux plus tard. Pour une description complète référez-vous aux pages de manuel appropriées (hosts_access(5) est un bon point de départ).

5.10.3.1. /etc/hosts.allow

Le fichier /etc/hosts.allow est un fichier de configuration du programme /usr/sbin/tcpd. Il contient les hôtes dont l'accès est autorisé (allowed) et qui peuvent donc utiliser un service de votre machine.

Le format du fichier est très simple :

# /etc/hosts.allow
#
# <liste des services>: <liste des hôtes> [: commande]

liste des services

c'est une liste de serveurs, séparés par des virgules, auxquels les règles d'accès s'appliquent. Exemples de serveur : ftpd, telnetd, et fingerd.

liste des hôtes

c'est une liste de noms d'hôtes, séparés par des virgules (vous pouvez utiliser également des adresses IP). Vous pouvez en plus spécifier des noms d'hôtes ou des adresses IP avec des jokers pour obtenir des groupes d'hôtes. Des exemples : gw.vk2ktj.ampr.orgi pour un hôte spécifique, .uts.edu.au pour tous les hôtes se terminant par cette chaîne , 44. pour toutes les adresses IP commençant par ces chiffres. Il y a quelques expressions pour simplifier la configuration, parmi lesquelles : ALL pour tous les hôtes, LOCAL pour tout hôte dont le nom ne contient pas de `.' c'est à dire appartenant au même domaine que votre machine, et PARANOID pour tout hôte dont le nom ne correspond pas avec son adresse (tricherie dans le nom). Il y a enfin une expression qui peut être utile. Il s'agit de EXCEPT qui vous permet de fournir une liste avec des exceptions. Nous verrons un exemple plus tard.

commande

c'est un paramètre optionnel. Ce paramètre est le nom complet d'une commande (avec son répertoire) qui sera exécutée chaque fois qu'il y aura correspondance. Ce peut être par exemple une commande qui essaiera d'identifier qui se connecte, ou de générer un message par courrier ou tout message d'alerte pour l'administrateur système avertissant que quelqu'un est en train de se connecter. On peut y inclure des extensions, par exemple : %h donnera le nom de l'hôte qui se connecte ou bien son adresse s'il n'a pas de nom , %d le programme démon appelé.

Un exemple :

# /etc/hosts.allow
#
# Permet à tout le monde d'utiliser le courrier
in.smtpd: ALL
# telnet et ftp pour les hôtes de mon domaine et my.host.at.home.
telnetd, ftpd: LOCAL, myhost.athome.org.au
# finger pour tout le monde, mais garde une trace de l'identité.
fingerd: ALL: (finger @%h | mail -s "finger from %h" root)

5.10.3.2. /etc/hosts.deny

Le fichier /etc/hosts.deny est un fichier de configuration du programme /usr/sbin/tcpd. Ce fichier contient les hôtes qui n'ont pas l'autorisation d'accéder à l'un des services de votre machine.

Un exemple simple ressemblerait à ceci :

# /etc/hosts.deny
#
# Interdit l'acces aux hotes ayant des noms suspects
ALL: PARANOID
#
# Interdit l'acces a tous les hotes
ALL: ALL

L'entrée PARANOID est en fait redondante car l'autre entrée interdit tous les cas. L'une ou l'autre entrée devrait convenir, en fonction de vos besoins particuliers.

Mettre ALL: ALL par défaut dans le fichier /etc/hosts.deny puis autoriser certains services, en liaison avec les hôtes que vous avez choisis, dans le fichier /etc/hosts.allow, est la configuration la plus sûre.

5.10.4. /etc/hosts.equiv

Le fichier hosts.equiv est utilisé pour concéder à certains hôtes des droits d'accès leur permettant d'avoir un compte sur votre machine sans fournir de mot de passe. Cela est utile dans un environnement sécurisé où vous contrôlez toutes les machines, sinon ce peut être très risqué. Votre machine est aussi sûre que le moins sûr de vos hôtes de confiance. Pour augmenter la sécurité, n'utilisez pas cette possiblité et encouragez vos utilisateurs à ne pas utiliser le fichier .rhosts.

5.10.5. Configurer votre démon ftp correctement

Un grand nombre de sites sont intéressés à avoir un serveur ftp anonyme pour permettre aux autres de transférer et de récupérer des fichiers sans avoir besoin d'une identification spéciale. Si vous décidez d'offrir ce service soyez certains de configurer votre démon ftp de manière adéquate pour les accès anonymes. La plupart des pages de manuel dédiées à ftpd(8) décrivent tous les détails pour y arriver. Vous devez toujours vous assurer que vous avez bien suivi les instructions. Un règle importante est de ne pas utiliser une copie de votre fichier /etc/passwd dans le répertoire /etc du compte anonyme. Soyez sûrs d'avoir éliminé tous les détails des comptes exceptés ceux qui sont nécessaires, autrement vous serez vulnérables vis à vis de ceux qui maîtrisent les techniques de mise en pièces des mots de passe.

5.10.6. Pare-feu (Firewall) sur le réseau

Ne pas permettre aux datagrammes d'atteindre votre machine ou les serveurs est un excellent moyen de sécurisation. Ceci est abordé en profondeur dans le Firewall-HOWTO et (de manière plus concise) plus loin dans ce document.

5.10.7. Autres suggestions

Voici d'autres suggestions, potentiellement religieuses, à prendre en considération :

sendmail

en dépit de sa popularité, le démon sendmail apparaît avec une effrayante régularité dans les mises en garde concernant la sécurité. Faites comme vous voulez, mais j'ai choisi de ne pas l'utiliser.

NFS et autres services Sun RPC

soyez circonspects avec eux. Il y a toutes sortes d'exploits possibles avec ces services. Il est difficile de trouver une option pour les services tels que NFS, mais si vous les configurez, soyez prudents envers ceux à qui vous accordez des droits.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:32