Mise au point d'un système de passerelle sécurisé

Gazette Linux n°54 — Juin 2000

Chris Stoddard

Adélard Bimazubute

Adaptation française 

Frédéric Marchal

Correction du DocBook 

Article paru dans le n°54 de la Gazette Linux de juin 2000.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Introduction
Ce dont vous aurez besoin
Installer et configurer Linux
Notes finales
Pour finir

Introduction

Dans le numéro 51 de Linux Gazette, l'article intitulé Private Networks and RoadRunner using IP Masquerading explique comment configurer une passerelle basée sur Linux dans un esprit de grande sécurité. Les auteurs suggèrent de commencer par une installation propre de Linux, ce qui se trouve être une excellente idée dans la mesure où toute sécurité part d'une installation sécurisée et c'est ce à quoi cet article est consacré. Cela fait, ça sera une installation très légère, pesant à peu près 130 MB en plus du swap, il n'y aura pas X WINDOWS, toutefois j'aime installer Midnight Commander pour la gestion des fichiers.

Ici je vais poser deux hypothèses : premièrement, vous savez comment installer Linux et êtes familiarisés à son utilisation. Deuxièmement, je me dis que vous avez à configurer un ordinateur passerelle connecté en permanence à Internet, fut-ce par câble modem, DSL, ou autre chose, et qu'il ne servira à rien d'autre du genre serveur ftp, telnet ou web.

Ce dont vous aurez besoin

Ma machine est une vieille Dell Optiplex 466/MXe, une 486 DX2 66 avec 16i MB de RAM, un disque dur de 512 MB, une carte son et un lecteur de CDROM 4X IDE. J'ai acquis ce dernier à 50 $ et l'ai upgradé en une 486DX4 100, 40 MB de RAM, j'ai enlevé la carte son et ajouté 2 cartes réseau, une carte SCSI et j'ai installé un disque dur de 320 MB SCSI, tout ça en pièces détachées. Le système minimal dont vous aurez besoin est un 486 (tous teints) avec 16 MB de RAM, un disque dur de 200 MB, deux cartes réseau, un CDROM ou une possibilité d'installer en réseau. Vous aurez aussi besoin d'une copie de RedHat Linux 6.x. Même si toute autre distribution conviendrait, je ne parlerai que de RedHat. Le système n'aura besoin d'un moniteur que durant l'installation, après quoi il pourra marcher sans écran et être administré à distance en utilisant Openssh.

Avant de commencer, aller à ftp://ftp.redhat.com, téléchargez et copiez sur des disquettes ce qui suit :

  • e2fsprogs- 1.17-1.i386.rpm

  • initscripts-4.63-1.i386.rpm

  • lynx-2.8.2-3.i386.rpm

  • pam-0.68-8.i386.rpm

Si vous utilisez RedHat 6.2, les fichiers précédents ne sont pas nécessaires. Allez à ftp://thermo.stat.ncsu.edu/pub/openssh-usa et encore une fois téléchargez et copiez ceci :

  • openshh-1.2.3-1us.i386.rpm

  • openssh-clients-1.2.3-1us.i386.rpm

  • openssh-server-1.2.3-1us.i386.rpm

  • openssl-0.9.5a-1us.i386.rpm

Installer et configurer Linux

Je ne couvrirai que les parties nécessitant une configuration autre que celles par défaut.

  1. Choisissez une installation personnalisée. Quand Disk Druid apparaît, créez les partitions suivantes.

    Partition     Minimum size     % of total        Mine
    /                    40 MB            10%       75 MB
    /boot                 5 MB            5 MB       5 MB
    /home               100 MB            25%      200 MB
    /tmp                 40 MB            10%       75 MB
    /usr                220 MB            45%      320 MB ¹  
    /var                 40 MB            10%       75 MB
    swap                 64 MB         2X RAM       80 MB ²
    

    Note

    1. Par souci de simplicité j'ai utilisé tout le disque SCSI.

    2. En réalité vous pouvez définir une taille de la partition swap égale à la taille de votre RAM ou même plus petite. Je suggère une plus grande, au cas ou vous voudriez gérer un site web ou ftp plus tard.

    Ce tableau montre sommairement comment diviser votre disque dur, le minimum étant juste que si celui-ci dispose de plus de 512 MB, utilisez alors les pourcentages sans tenir compte des tailles des partitions swap et /boot. Si votre disque a moins de 512 MB, créez alors juste une partition swap et une partition root. En faisant cela, un individu qui y fait intrusion ne sera pas capable de surcharger votre disque dur avec de gros fichiers dans les répertoires /tmp ou /home. Ca vous permet aussi de faire des choses intéressantes dans /etc/fstab, comme activer nosuid et nodev sur /tmp et /home. Certaines personnes se demanderont pourquoi je destine une si grande partie de l'espace du disque à la partition /home, quand en théorie ce système n'aura pas beaucoup d'utilisateurs de chair et d'os, sinon aucun. La réponse est que c'est un espace destiné au transfert de fichiers vers et à partir de lieux distants, comme le partage de fichiers MP3 ou des fichiers du travail.

  2. En sélectionnant les composants à installer, choisissez uniquement « Networked Workstation », « Network Management Workstation », les utilitaires et « sélectionner les paquetages individuels ». Si vous utilisez RedHat 6.2 et n'avez pas téléchargé les RPM mis à jour, sélectionnez Lynx afin qu'il soit installé.

    Désélectionnez les paquetages suivants : git, finger, ftp, fwhois, ncftp, rsh, rsync, talk, telnet, ghostscript, ghostscript-fonts, mpage, rhs-printfilters, arpwatch, bind-utils, knfsd-clients, procinfo, rdate, screen, ucd-snmp-utils, chkfontpath, yp-tools, Xfree86-xfs, lpr, pidentd, portmap, routed, rusers, rwho, tftp, ucd-snmp, ypbind, Xfree86-libs, libpng, Xfree86-75dpi-fonts, urw-fonts.

  3. Après le redémarrage du système, loggez-vous en root et tapez les lignes de commande suivantes, pour supprimer les paquetages que le programme d'installation ne vous a pas laissé désélectionner.

    rpm -e --nodeps pump mt-st eject bc mailcap apmd kernel-pcmcia-cs getty_ps setconsole setserial raidtools rmt sendmail
    

    Vous pouvez aussi envisager de supprimer Linuxconf, kudzu, kbdconfig, authconfig, timeconfig, mouseconfig, ntsysv et setuptool, selon votre niveau de compétence. Tous ces paquetages ci-haut cités constituent des risques pour la sécurité, comme rsh, ou sont inutiles comme Xfree86 fonts.

  4. Copiez tous les RPM téléchargés à partir du site de RedHat sur une paire de disquettes, mettez ces dernières sur le système nouvellement installé et montez-les avec mount -t msdos /dev /fd0 /mnt/floppy, ensuite installez les fichiers en tapant rpm -Uvh /mnt/floppy/*.rpm.

  5. Copiez tous les fichiers Openssh sur une disquette et encore une fois, mettez cette dernière sur le système nouvellement installé et montez-la en tapant mount -t msdos /dev/fd0/mnt/floppy et tapez rpm -ivh/mnt/floppy/open*. Allez dans le répertoire /etc/ssh et ouvrez sshd.config, cherchez « PermitRootLogin yes » et changez le yes en no. Cela portera le système à refuser l'accès à quiconque essaierait de se logger en root à partir d'un système distant. Si vous avez besoin de vous logger en root à partir d'une machine distante, loggez-vous en utilisateur ordinaire puis servez-vous de la commande su pour vous transformer en root.

Notes finales

Je ne vais pas rentrer dans les détails de la configuration d'un bon coupe- feu, « Private Networks and RoadRunner using IP Masquerading » fait un excellent boulot à ce propos, toutefois j'ai deux suggestions à faire.

Je crois qu'à des fins de sécurité les services DNS ne devraient pas être placés sur le système coupe-feu, chaque client pouvant être configuré individuellement pour utiliser le DNS de votre fournisseur d'accès Internet, ou une autre machine sur le réseau pouvant être configurée pour agir comme serveur DNS. De surcroît, j'estime que les services démarrés par inetd ne devraient pas être lancés sur une machine coupe-feu non plus, le seul port qui devrait être ouvert est le port 22, le port ssh. Je l'érigerai en règle et j'effacerai le fichier inetd.conf pour le remplacer par un autre, vide, en me servant de touch /etc/inetd.conf.

Si vous avez plus de deux ou trois utilisateurs sur le système, vous pourrez envisager d'utiliser Squid, qui est un programme proxy/cache web. Cela accélère les choses en gardant les copies des sites web les plus visités sur la machine locale. Il peut aussi être utilisé pour bloquer des sites web, ce qui peut être utile dans le cas où il se trouve des enfants en bas âge à la maison. Si vous décidez d'employer Squid, je recommande un disque d'au moins 1 GB, 32 MB de RAM et un processeur 486DX2/66. Squid peut être installé à partir du CD de RedHat. Une autre alternative est que vous pouvez installer Junkbuster, qui est aussi un programme proxy ; il ne cache pas de sites web et ne nécessitera donc pas de disque dur plus spacieux, plus de RAM ou un processeur plus rapide, ce qu'il fait ce sont les blocages d'affiches publicitaires, ce qui selon les sites que vous visiterez accélérera les choses et empêchera ces compagnies de recueillir des informations à votre propos.

Junkbuster peut être téléchargé à partir de http://www.waldherr.org/junkbuster.

Pour une construction facile d'un coupe-feu, vous devrez télécharger Seawall ou pmfirewall ; ce sont des programmes coupe-feu basés sur ipchains et conçus pour leur simplicité, je les ai tous les deux essayés, ils marchent comme promis et vous épargneront la peine d'apprendre ipchains. Seawall est plus dur à installer mais a plus d'options de configuration, pmfirewall est plus facile à configurer mais dispose de moins d'options.

Pour finir

Maintenant retournez à « Private Networks and RoadRunner using IP Masquerading » et finissez de configurer la passerelle. Je vous prie de vous rappeler que ceci n'est pas la fin du mot en matière de sécurité Linux, ça ne fait que vous donner un solide point de départ. Pour un tutorial de maître sur la sécurité Linux, téléchargez et lisez http://pages.infinit.net/lotus1/opendocs/book.htm. Ce document, massif, contient 475 pages mais seuls les deux premiers chapitres valent la peine d'être lus.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.