Page suivante - Page précédente - Table des matières

3. Installer IP Masquerade

Si votre réseau privé contient quelqu'information vitale, vous devez soigneusement réflechir en terme de SECURITE avant d'utiliser IP Masquerade. Par defaut, IP MASQ devient une passerelle pour vous permettre d'acceder à Internet mais il peut aussi permettre à quelqu'un de s'introduire à partir d'Internet sur votre réseau interne.

Une fois que vous avez IP MASQ qui fonctionne, il est VIVEMENT recommandé d'utiliser un jeu de règles du sécurité largement supérieur, que nous appellerons STRONG (STRONG IPFWADM/IPCHAINS firewall ruleset en anglais) dans la suite. Vous pouvez vous reportez aux sections Strong-IPFWADM-Rulesets et Strong-IPCHAINS-Rulesets plus loin dans le texte pour plus de détails.

3.1 Compiler un noyau avec les fonctionnalités d'IP Masquerade

Si votre distribution Linux possède déjà toutes les fonctions nécessaires tels que :
  • IPFWADM/IPCHAINS
  • IP forwarding
  • IP masquerading
  • IP Firewalling
  • etc.
et que tous les modules relatif à MASQ y soient compilés (la plupart des noyaux modulaires vont avoir ce dont vous avez besoin), vous N'aurez PAS besoin de recompiler un noyau. Si vous ne savez pas si votre distribution Linux est pret pour MASQ, reportez vous à la section MASQ-supported-Distributions . Si vous ne faites pas confiance à cette liste, ou que votre distribution n'y est pas listée, essayez les tests suivants :

  • logguez vous sur votre machine linux et lancez la commande suivante : "ls /proc/sys/net/ipv4".
  • Regardez si les fichiers tels que "ip_forward", "ip_masq_debug", "ip_masq_udp_dloose"(optionnel), et "ip_always_defrag"(optionnel) existent.
Si oui, c'est que votre noyau est fin pret !

Si vous ne trouvez aucun des fichiers précités ou si votre distribution ne permet pas l'IP Masquerading par défaut, SUPPOSEZ QU'IL NE PERMET PAS l'utilisation de MASQ par defaut ! Dans ce cas, vous allez devoir compiler un noyau... mais ne vous inquietez pas, ce n'est pas difficile.

Que la compatibilité soit native ou pas sur votre distribution, la lecture de cette section est VIVEMENT recommandée parce qu'elle contient d'autres informations utiles.

Noyaux Linux 2.2.x

Reportez vous à la section 2.2.x-Requirements pour les logiciels nécessaires, les patches, etc.

  • D'abord, vous aurez besoin des sources du noyau 2.2.x (de préférence la dernière version 2.2.16 ou mieux)

    NB #1: Les noyaux Linux 2.2.x inférieurs à 2.2.16 ont un trou de securité (TCP root exploit) et les versions inférieurs à 2.2.11 ont un bug de fragmentation dans IPCHAINS. Pour cette raison, les personnes qui utilisent des jeux de règles IPCHAINS très restrictives sont attaquables. Mettez à jour votre noyau vers une version corrigée.

    NB #2: Pendant les mises à jour des noyaux 2.2.x, les options de compilations n'ont cessé de changer. Ici nous allons vous montrer les réglages pour la version 2.2.15. Si vous utilisez une version antérieure du noyau, les dialogues peuvent paraître différents. Nous vous recommandons de faire la mise à jour vers la dernière version du noyau en raison des nouvelles fonctionnalités et de la stabilité accrue qu'elle procure.

  • Ne soyez pas effrayé si c'est la première fois que vous compilez un noyau. En fait c'est plutôt facile et plusieurs URLs que vous trouverez dans la section 2.2.x-Requirements traitent de ça.
  • Decompressez les sources du noyau dans le répertoire /usr/src/ en utilisant la commande tar xvzf linux-2.2.x.tar.gz -C /usr/src ou "x" représente la version de votre noyau 2.2. Une fois ceci terminé, vérifiez que le dossier ou le lien symbolique vers /usr/src/linux/ existe bien.
  • Appliquez tous les patches, optionnels ou non, au source de votre noyau. Pour le 2.2.1, IP Masq n'a pas pas besoin de patch pour fonctionner correctement. Des fonctionnalités telles que PPTP ou le forwarding de X-Window sont optionnels. Vous pouvez vous reporter à la section 2.2.x-Requirements pour les URLs et à l' IP Masquerade Resources pour les informations les plus récentes et les liens vers les patches.
  • Voici les options de compilations MINIMALES dont vous allez avoir besoin lors de la compilation de votre noyau. Vous aurez aussi besion de configurer votre noyau pour utiliser vos interfaces reseaux. Reportez vous au Linux Kernel HOWTO et le fichier README qui se trouve dans le dossier des sources du noyau pour de plus amples informations sur la compilation du noyau.

    Répondez par YES ou NO aux questions suivantes. Toutes les options ne seront pas disponibles si votre noyau n'est pas patché convenablement comme décrit ci-dessous dans ce HOWTO :

 * Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]
 - YES: Bienque non requis par IP MASQ, cette option permet au noyau de creer les
 modules MASQ et d'activer l'option 'port forwarding'
 -- Les options ne correspondant a MASQ sont omis --
 * Enable loadable module support (CONFIG_MODULES) [Y/n/?]
 - YES:  Permet de charger les modules noyau d'IP MASQ
 -- Les options ne correspondant a MASQ sont omis --
 * Networking support (CONFIG_NET) [Y/n/?]
 - YES: Active les capacites reseau
 -- Les options ne correspondant a MASQ sont omis --
 * Sysctl support (CONFIG_SYSCTL) [Y/n/?]
 - YES: vous donne le pouvoir d'activer/desactiver des options tels que le forwarding,
 les IP dynamiques, le LooseUDP, etc.
 -- Les options ne correspondant a MASQ sont omis --
 * Packet socket (CONFIG_PACKET) [Y/m/n/?]
 - YES: Bienque ca soit OPTIONNEL, il est recommande d'activer cette fontionnalite
 qui permet d'utiliser TCPDUMP pour
 debugguer les eventuels problems d'IP MASQ
 * Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
 - YES: Bienque ca soit OPTIONNEL, cette fonctionnalite permet de creer des logs
 des problemes du firewall avance tel que le routage des messages etc.
 * Routing messages (CONFIG_RTNETLINK) [Y/n/?]
 - NO:  Cette option n'a rien a voir avec les logs du packet firewall
 -- Les options ne correspondant a MASQ sont omis --
 * Network firewalls (CONFIG_FIREWALL) [Y/n/?]
 - YES: Permet de configurer le noyau avec l'utilitaire de firewall IPCHAINS
 * Socket Filtering (CONFIG_FILTER) [Y/n/?]
 - OPTIONAL:  Bienque cette option n'ai rien a voir avec IPMASQ, si vous
 comptez installer un serveur DHCP sur votre reseau interne, vous AUREZ besoin
 de cette option.
 * Unix domain sockets (CONFIG_UNIX) [Y/m/n/?]
 - YES: Active les mecanismes de sockets TCP/IP d'UNIX.
 * TCP/IP networking (CONFIG_INET) [Y/n/?]
 - YES: Active les protocoles TCP/IP
 -- Les options ne correspondant a MASQ sont omis --
 * IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
 - YES: Permet de configurer les options avances de MASQ que nous verrons plus loins
 * IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [N/y/?]
 - NO: Pas necessaire pour MASQ mais les utilisateurs qui ont besoin de fonctions avancees telles
 que le source address-based TCP/IP ou le routage par TOS doivent activer cette option.
 * IP: equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH) [N/y/?]
 - NO: Pas necessaire pour les fonctions usuelles de MASQ
 * IP: use TOS value as routing key (CONFIG_IP_ROUTE_TOS) [N/y/?]
 - NO:  Pas necessaire pour les fonctions usuelles de MASQ
 * IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [Y/n/?]
 - YES: Necessaire si vous voulez utiliser les codes de routage pour eliminer les paquets
 IP spoofes (vivement recommande) et si vous voulez les mettres dans les logs.
 * IP: large routing tables (CONFIG_IP_ROUTE_LARGE_TABLES) [N/y/?]
 - NO:  Pas necessaire pour les fonctions usuelles de MASQ
 * IP: kernel level autoconfiguration (CONFIG_IP_PNP) [N/y/?] ?
 - NO:  Pas necessaire pour les fonctions usuelles de MASQ
 * IP: firewalling (CONFIG_IP_FIREWALL) [Y/n/?]
 - YES: Active les capacites de firewalling.
 * IP: firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK) [Y/n/?]
 - OPTIONAL: Bienqu'OPTIONNELLE, cette fonction permet a IPCHAINS de copier quelques paquets
 vers l'utilitaire UserSpace pour des verifications supplementaires.
 * IP: transparent proxy support (CONFIG_IP_TRANSPARENT_PROXY) [N/y/?]
 - NO:  Pas necessaire pour les fonctions usuelles de MASQ
 * IP: masquerading (CONFIG_IP_MASQUERADE) [Y/n/?]
 - YES: Permet a IP Masquerade de readresser certains paquets TCP/IP specifiques de l'interieur
 vers l'exterieur
 * IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
 - YES: Permet de masquerader les paquets ICMP de ping (dans tous les cas, les codes d'erreur
 d'ICMP sont MASQues). Cette fonction est importante pour regler les problemes de connexion.
 * IP: masquerading special modules support (CONFIG_IP_MASQUERADE_MOD) [Y/n/?]
 - YES: Bienqu'OPTIONNELLE, cette option permet d'activer plus loin le port forwarding de
 TCP/IP qui permet aux ordinateurs exterieurs de ce connecter vers des machines MASQuees
 specifiques (donc internes).
 * IP: ipautofw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [N/y/m/?]
 - NO: IPautofw est une methode heritee du port forwardinf. C'est essentiellement du vieux
 code qui est reconnu pour avoir des problemes. NON recommande.
 * IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/m/n/?]
 - YES: Active IPPORTFV qui permet a des ordinateurs externe se trouvant sur Internet de
 communiquer avec un ordinateur MASQue interne specifique. Cette fonctionnalite est typiquement
 utilisee pour acceder a des serveurs SMTP, TELNET et WWW. Le port forwarding pour le FTP aura
 besoin d'un patch supplementaire dont nous avons donne la description dans la FAQ de ce HOWTO.
 Des informations supplementaires sont disponibles dans la section Forwards de ce HOWTO.
 * IP: ip fwmark masq-forwarding support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_MFW) [Y/m/n/?]
 - OPTIONAL: C'est une nouvelle methode pour faire du PORTFW. Avec elle, IPCHAINS peut marquer
 les paquets sur lesquels il faut faire du travail supplementaire. Avec l'utilitaire UserSpace,
 qui ressemble a IPMASQADM ou IPPORTFW, IPCHAINS pourra alors automatiquement readresser les paquets.
 Pour le moment, cette partie du code est moins testee que PORTFW mais reste neanmoins tres
 prometteur. Nous vous recommandons d'utiliser pour le l'instant IPMASQADM et IPPORTFW. Si vous
 avez des reflexions sur MFW, envoyez les moi par email SVP.
 * IP: optimize as router not host (CONFIG_IP_ROUTER) [Y/n/?]
 - YES: Optimise le noyau pour le reseau bienque nous ne sachions pas si les gains de performance
 sont significatives ou pas.
 * IP: tunneling (CONFIG_NET_IPIP) [N/y/m/?]
 - NO: OPTIONNEL pour le tunneling IPIP a traver IP Masq. Si vous avez besoin de fonctionnalites
 VPN/tunneling, il est recommande d'utiliser soit les tunnels GRE soit les tunnels IPSEC
 * IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/m/?]
 - NO: OPTIONNEL. Permet l'activation de tunnels GRE et PPTP a travers IP MASQ.
 -- Les options ne correspondant a MASQ sont omis --
 * IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES) [Y/n/?]
 - YES: VIVEMENT recommande pour la securite TCP/IP de base.
 -- Les options ne correspondant a MASQ sont omis --
 * IP: Allow large windows (not recommended if <16Mb of memory) * (CONFIG_SKB_LARGE) [Y/n/?]
 - YES: Ceci est recommande pour optimiser les fenetres TCP de Linux
 -- Les options ne correspondant a MASQ sont omis --
 * Network device support (CONFIG_NETDEVICES) [Y/n/?]
 - YES: active la sous couche materielle du reseau sous Linux
 -- Les options ne correspondant a MASQ sont omis --
 * Dummy net driver support (CONFIG_DUMMY) [M/n/y/?]
 - YES:  Bienqu'OPTIONNELLE, cette option peut aider pendant le debuggage
 == N'oubliez pas d'activer les drivers de votre carte reseau !! ==
 -- Les options ne correspondant a MASQ sont omis --
 == N'oubliez pas d'actiner la comptabiliter PPP/SLIP si vous voulez un modem RPC ou PPPoE/DSL !! ==
 -- Les options ne correspondant a MASQ sont omis --
 * /proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
 - YES: Necessaire pour activer le system de forwarding sous Linux

NB: Nous n'avons activé ici que les options nécessaires pour l'IP Masquerade. Vous devez sélectionner en plus les options spécifiques à votre installation.

  • Apres la compilation du noyau, vous devrez compiler et installer les modules IP MASQ grâce aux commandes :
     make modules; make modules_install
    
  • Vous devrez ensuite ajouter quelques lignes à votre fichier /etc/rc.d/rc.local pour charger automatiquement les modules IP Masquerades et activer IP MASQ après chaque redémarrage :

     .
     .
     .
     #rc.firewall script - Lance IPMASQ et le firewall
     /etc/rc.d/rc.firewall
     .
     .
     .
    

Noyaux Linux 2.0.x

Reportez vous à la section 2.0.x-Requirements pour les logiciels nécessaires, les patches, etc.

  • D'abord, vous aurez besoin des sources du noyau 2.0.x (de préférence la dernière version 2.0.38 ou mieux)
  • Ne soyez pas effrayé si c'est la première fois que vous compilez un noyau. En fait c'est plutôt facile et plusieurs URLs que vous trouverez dans la section 2.2.x-Requirements traitent de ca.
  • Décompressez les sources du noyau dans le repertoire /usr/src/ en utilisant la commande tar xvzf linux-2.2.x.tar.gz -C /usr/src ou "x" représente la version de votre noyau 2.2. Une fois ceci terminé, vérifiez que le dossier ou le lien symbolique vers /usr/src/linux/ existe.
  • Appliquez tous les patches, optionnels ou non, au source de votre noyau. Des fonctionnalites telles que PPTP ou le forwarding de X-Window sont optionnels. Vous pouvez vous reporter à la section 2.0.x-Requirements pour les URLs et à l' IP Masquerade Resources pour les informations les plus récentes et les liens vers les patches.
  • Voici les options de compilations MINIMALES dont vous allez avoir besoin lors de la compilation de votre noyau. Vous aurez aussi besion de configurer votre noyau pour utiliser vos interfaces reseaux. Reportez vous au Linux Kernel HOWTO et le fichier README qui se trouve dans le dossier des sources du noyau pour de plus amples informations sur la compilation du noyau.

    Repondez par YES ou NO aux questions suivantes. Toutes les options ne seront pas disponibles si votre noyau n'est pas patché convenablement comme décrit ci-dessus dans ce HOWTO :

 * Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]
 - YES: cette option permet selectionner les fonctionnalites IP Masquerade
 * Enable loadable module support (CONFIG_MODULES) [Y/n/?]
 - YES: Permet de charger les modules noyau d'IP MASQ
 * Networking support (CONFIG_NET) [Y/n/?]
 - YES: Active les capacites reseau
 * Network firewalls (CONFIG_FIREWALL) [Y/n/?]
 - YES: Active l'utilitaire de firewall IPFWADM
 * TCP/IP networking (CONFIG_INET)
 - YES: Active les protocoles TCP/IP
 * IP: forwarding/gatewaying (CONFIG_IP_FORWARD)
 - YES: Permet le forwarding et le routage des paquets - Controle par IPFWADM
 * IP: syn cookies (CONFIG_SYN_COOKIES) [Y/n/?]
 - YES: VIVEMENT recommande pour la securite TCP/IP de base.
 * IP: firewalling (CONFIG_IP_FIREWALL) [Y/n/?]
 - YES: Active les capacites de firewalling.
 * IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) [Y/n/?]
 - YES: (OPTIONNEL mais VIVEMENT recommande): Permet de rapporter les chocs contre le firewall
 * IP: masquerading (CONFIG_IP_MASQUERADE [Y/n/?]
 - YES: Permet a IP Masquerade de readresser certains paquets TCP/IP specifiques de l'interieur
 vers l'exterieur
 * IP: ipautofw masquerade support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [Y/n/?]
 - NO:  IPautofw est une methode heritee du port forwardinf. C'est essentiellement du
 vieux code qui est reconnu pour avoir des problemes. NON recommande.
 * IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/n/?]
 - YES: Cette option est DISPONIBLE UNIQUEMENT GRACE A UN PATCH pour les noyaux 2.0.x
 Cette option permet a des ordinateurs externe se trouvant sur Internet de communiquer
 avec un ordinateur MASQue interne specifique. Cette fonctionnalite est typiquement
 utilisee pour acceder a des serveurs SMTP, TELNET et WWW. Le port forwarding pour le
 FTP aura besoin d'un patch supplementaire dont nous avons donne la description dans
 la FAQ de ce HOWTO. Des informations supplementaires sont disponibles dans la section
 Forwards de ce HOWTO.
 * IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
 - YES: Permet de masquerader les paquets ICMP. Bienqu'optionnelles, de nombreux programmes
 ne vont PAS fonctionnement correctement sans cette option.
 * IP: loose UDP port managing (EXPERIMENTAL) (CONFIG_IP_MASQ_LOOSE_UDP) [Y/n/?]
 - YES: Cette option est DISPONIBLE UNIQUEMENT GRACE A UN PATCH pour les noyaux 2.0.x
 Avec cette option, des ordinateurs internes (ie MASQues) pourrons jouer au
 jeux compatibles NAT sur Internet. Des details supplementaires sont donnes
 dans la section FAQ de ce HOWTO.
 * IP: always defragment (CONFIG_IP_ALWAYS_DEFRAG) [Y/n/?]
 - YES: Cette option optimise les connexions IP MASQ - VIVEMENT recommande
 * IP: optimize as router not host (CONFIG_IP_ROUTER) [Y/n/?]
 - YES: Optimise le noyau pour le reseau
 * IP: Drop source routed frames (CONFIG_IP_NOSR) [Y/n/?]
 - YES: HIGHLY recommended for basic network security
 * Dummy net driver support (CONFIG_DUMMY) [M/n/y/?]
 - YES: VIVEMENT recommande pour la securite TCP/IP de base.
 * /proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
 - YES: Necessaire pour activer les capacites de forwarding de Linux

NB: Nous n'avons activé ici que les options nécessaire pour IP Masquerade. Vous devez sélectionner en plus les options spécifiques à votre installation.

  • Après la compilation du noyau, vous devrez compiler et installer les modules IP MASQ grâce aux commandes :
    make modules; make modules_install
    
  • Vous devrez ensuite ajouter quelques lignes à votre fichier /etc/rc.d/rc.local pour charger automatiquement les modules IP Masquerades et activer IP MASQ après chaque redémarrage :

     .
     .
     .
     #rc.firewall script - Lance IPMASQ et le firewall
     /etc/rc.d/rc.firewall
     .
     .
     .
    

Noyaux Linux 2.3.x / 2.4.x

Les noyaux 2.3.x et 2.4.x ne sont PAS traités dans ce HOWTO pour le moment. Reportez vous à la section 2.3.x/2.4.x-Requirements pour les URLs etc. jusqu'à ce que ces noyaux soient traités dans un nouveau HOWTO.

3.2 Affecter des adresses IP privées au LAN interne

Puisque toutes les machines INTERNES MASQées ne devraient pas avoir d'adresses IP officielles, il doit exister une façon spécifique et reconnue d'affecter des adresses à ces machines sans entrer en conflit avec l'adresse IP de quelqu'un d'autre.

Tiré de la FAQ IP Masquerade originelle :

RFC 1918 est un document officiel traitant des adresses IP qui doivent être utilisées pour des réseaux non-connectés ou "privés". Il y a 3 blocs de nombres mis de côtés exprès dans ce but.

Section 3: L'espace des Adresses Privees
L'Internet Assigned Numbers Authority (IANA) a reserve les trois blocs d'adresses IP suivants
pour les reseaux prives :
 10.0.0.0        -   10.255.255.255
 172.16.0.0      -   172.31.255.255
 192.168.0.0     -   192.168.255.255
Le premier bloc sera designe comme le "24-bit block", le second comme "20-bit block", et le
dernier comme "16-bit block". Remarquez que le premier bloc n'est rien d'autres qu'un simple reseau
de Classe A, alors que le second est un espace de 16 reseaux contigus de classe B, et le troisieme
est un blocs de 255 reseaux contigus de Classe C.
Je préfère utiliser le réseau 192.168.0.0 avec un masque de sous-réseau de classe C : 255.255.255.0 et ce HOWTO refléte cette préférence. Mais, chacun des réseaux privés ci-dessus est valide. Assurez vous simplement d'utiliser le bon masque de sous-réseau.

Donc, si vous utiliser le réseau de Classe C, vous devrez numéroter vos machines TCP/IP ainsi : 192.168.0.1, 192.168.0.2, 192.168.0.3, ..., 192.168.0.x

192.168.0.1 est habituellement la passerelle interne ou la machine MASQ Linux. Notez aussi ques les adresses 192.168.0.0 et 192.168.0.255 sont les adresses du réseau et de broadcast respectivement (et sont donc RESERVES). Evitez d'utiliser ces adresses sur vos machines sinon votre réseau risque de ne pas fonctionner correctement.

3.3 Politiques de configuration de l'IP FORWARDING

A partir d'ici, vous devrez avoir votre noyau et les autres packages nécessaires d'installés. Toutes les adresses IP du réseau, la passerelle, et le DNS devront aussi être configurés dans votre serveur Linux MASQ. Si vous ne savez pas configurer vos cartes réseau, reportez vous SVP aux HOWTOs listés dans les sections 2.0.x-Requirements ou 2.2.x-Requirements .

Maintenant, la seule chose qui reste à faire, c'est de configurer l'IP firewalling pour permettre le FORWARD et le MASQUERADE des paquets appropriés vers les machines appropriées :

** Ceci peut être accomplis de différentes façons. Les suggestions et les examples suivants ont fonctionné chez moi, mais vous aurez peut-être des besoins ou des idées différents.

** Cette section fournit seulement le MINIMUM de règles de firewall pour faire fonctionner l'IP Masquerade. Une fois que vous aurez testé IP MASQ (comme décrit plus loin dans ce HOWTO), reportez vous aux sections Strong-IPFWADM-Rulesets et Strong-IPCHAINS-Rulesets pour des jeux de règles de firewalling plus sûres. Vous pouvez aussi lire en plus les manuels de IPFWADM (2.0.x) et/ou IPCHAINS(2.2.x) pour de plus amples détails.

Noyaux Linux 2.2.x

NB : IPFWADM n'est plus un utilitaire de firewall qui permette de manipuler les règles d'IP Masquerade pour les noyaux 2.1.x et 2.2.x. Ces nouveaux noyaux utilisent maintenant l'utilitaire IPCHAINS. Pour de plus amples détails sur les raisons de ce changement, vous pouvez vous reporter à la section FAQ .

Créez le fichier /etc/rc.d/rc.firewall avec les règles naives suivantes :

#!/bin/sh
#
# rc.firewall - test IP Masquerade naif pour les noyaux 2.1.x et 2.2.x
#               avec IPCHAINS
#
# Charge les modules necessaires a IP MASQ
#
#   NB: Charger uniquement les modules IP MASQ dont vous avez besoin. Tous les modules
#   IP MASQ actuels sont montres ci-dessous mais sont commentes pour les empecher
#   de se charger.
# Necessaire pour le chargement initial des modules
#
/sbin/depmod -a
# Permet le masquerading correct des transfert de fichier par FTP avec la methode PORT
/sbin/modprobe ip_masq_ftp
# Permet le masquerading de RealAudio par UDP. Sans ce module,
#       RealAudio FONCTIONNERA mais en mode TCP. Ce qui peu causer une baisse
#       dans la qualite du son
#
#/sbin/modprobe ip_masq_raudio
# Permet le masquerading des transferts de fichier par DCC pour les IRC
#/sbin/modprobe ip_masq_irc
# Permet le masquerading de Quake et QuakeWorld par defaut. Ce module est
#   necessaire pour les utilisateurs multiples derriere un server Linux MASQ. Si vous voulez jouer
#   a Quake I, II, et III, utilisez le second exemple.
#
#   NB:  si vous rencontrez des ERREURs lors de chargement du module QUAKE, c'est que vous utilisez
#   un ancien noyau buggue. Mettez a jour votre noyau pour supprimer l'erreur.
#
#Quake I / QuakeWorld (ports 26000 et 27000)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake 26000,27000,27910,27960
# Permet le masquerading du logiciel CuSeeme pour la video conference
#
#/sbin/modprobe ip_masq_cuseeme
# Permet le masquerading du logiciel VDO-live pour la video conference
#
#/sbin/modprobe ip_masq_vdolive
#CRITIQUE:  Active l'IP forwarding puisqu'il est desactive par defaut
#
#           Utilisateurs Redhat: vous pourrez essayer en changeant les options dans
#                          /etc/sysconfig/network de:
#
#                       FORWARD_IPV4=false
#                             a
#                       FORWARD_IPV4=true
#
echo "1"> /proc/sys/net/ipv4/ip_forward
#CRITIQUE:  Active automatiquement l'IP defragmenting puisqu'il est desactive par defaut
#           dans les noyaux 2.2.x. Ceci etait une option de compilation mais ca a change
#           depuis le noyau 2.2.12
#
echo "1"> /proc/sys/net/ipv4/ip_always_defrag
# Utilisateurs d'IP Dynamiques:
#
#   Si vous recevez votre adresse IP de maniere dynamique a partir d'un server SLIP, PPP,
#   ou DHCP, activez option suivante qui active le hacking (au bon sens du terme NDT) des
#   adresses IP dynamique dans IP MASQ, rendant ainsi les choses plus faciles pour les
#   programmes du type Diald.
#
#echo "1"> /proc/sys/net/ipv4/ip_dynaddr
# Active le patch LooseUDP dont certains jeux reseaux ont besoin
#
#  Si vous etes en train d'essayer de faire fonctionner un jeu sur Internet au travers votre
#  serveur MASQ, et vous l'avez configure le mieux que vous pouviez mais que ca fonctionne
#  toujours pas, essayez d'activer cette option (en supprimant le # en debut de ligne).
#  Cette option est desactivee par defaut pour eviter une probable vulnerabilite au port
#  scanning UDP en interne.
#
#echo "1"> /proc/sys/net/ipv4/ip_masq_udp_dloose
# MASQ timeouts
#
#  timeout de 2 heures pour les sessions TCP
#  timeout de  10 sec pour le traffic apres que le paquet TCP/IP "FIN" est recu
#  timeout de 160 sec pour le traffic UDP (Important pour les utilisateur d'ICQ MASQues)
#
/sbin/ipchains -M -S 7200 10 160
# DHCP:  Pour les personnes qui recoivent leur adresse IP externe par DHCP ou
#        BOOTP tels que les utilisateurs d'ADSL ou Cable, il est necessaire de lancer cette
#        commande avec celle du 'deny'. "nom_interface_cliente_bootp"
#        doit etre remplace par le nom de l'interface qui va recevoir l'adresse externe par
#        le serveur DHCP/BOOTP. C'est souvent quelquechose du style "eth0",
#        "eth1", etc.
#
#        Cet exemple est commante (desactive) ici :
#
#/sbin/ipchains -A input -j ACCEPT -i nom_interface_cliente_bootp -s 0/0 67 -d 0/0 68 -p udp
# Active l'IP forwarding et Masquerading simpliste
#
#  NB:    L'exemple suivant est donne pour le LAN interne 192.168.0.x avec un masque
#         de sous reseau de 255.255.255.0 soit un masque de sous reseau "24 bits"
#         connecte a Internet par l'interface eth0.
#
#         ** Changez les adreesse reseau et masque de sous reseau, et l'interface de
#         ** votre connexion a Internet de telle sorte qu'ils correspondent aux reglages de votre LAN
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ

Une fois que vous aurez terminé de rédiger les règles de /etc/rc.d/rc.firewall, rendez ce dernier exécutable en tapant chmod 700 /etc/rc.d/rc.firewall

Maintenant que vos règles de firewall sont prêts, vous devez faire en sorte qu'ils soient actifs après chaque redémarrage. Vous pouvez soit décider de le lancer à la main à chaque fois (une vraie galère) ou bien de le rajouter dans vos scripts de boot. Nous vous montrons comment faire pour chacune des deux methodes ci-dessous :

  • Pour les distribs RedHat ou derivées de la RedHat:
  • Il y a deux manières de faire charger des trucs dans RedHat : /etc/rc.d/rc.local ou le mettre le script d'init dans /etc/rc.d/init.d/. La première méthode est la plus simple. Tout ce que vous avez à faire c'est de rajouter cette ligne :

    • echo "Chargement des regles de rc.firewall..." /etc/rc.d/rc.firewall

    à la fin de votre /etc/rc.d/rc.local et c'est tout. Le problème de cette approche est que si vous tournez avec le jeu de règles STRONG du firewall, le firewall n'est pas actif avant les dernières phases du démarrage. La meilleure approche est d'avoir le firewall chargé juste après que le réseau est lancé. A partir de ce point, ce HOWTO ne traite que de l'approche /etc/rc.d/rc.local. Si vous voulez le système STRONG, je vous recommande de vous reportez à la section 10 de TrinityOS dont vous trouverez le lien à la fin de ce HOWTO.

  • Slackware :
  • Il y a deux manière de faire charger des trucs dans la Slackware: /etc/rc.d/rc.local ou modifier le fichier /etc/rc.d/rc.inet2. La première methode est la plus simple. Tout ce que vous avez à faire c'est de rajouter cette ligne :

    • echo "Chargement des regles de rc.firewall..."

      /etc/rc.d/rc.firewall

    à la fin de votre /etc/rc.d/rc.local et c'est tout. Le problème de cette aproche est que si vous tournez avec les jeux de règles STRONG du firewall, le firewall n'est pas actif avant les dernières phases du demarrage. La meilleure approche est d'avoir le firewall chargé juste après que le réseau est lancé. A partir de ce point, ce HOWTO ne traite que de l'approche /etc/rc.d/rc.local. Si vous voulez le système STRONG, je vous recommande de vous reporter à la section 10 de TrinityOS dont vous trouverez le lien à la fin de ce HOWTO.

Remarques sur la manière dont les utilisateurs doivent s'y prendre s'il veulent modifier les règles de firewall que nous avons vues ci-dessus :

Vous pouvez aussi activer l'IP Masquerading sur une base de cas par cas suivant la machine au lieu de la methode ci-dessus qui active le reseau TCP/IP entier. Par exemple, disons que je veux que seuls les machines 192.168.0.2 et 192.168.0.8 puissent accéder à Internet et AUCUN autre ordinateur interne. Je changerais les règles dans la section "Active l'IP forwarding et Masquerading simpliste" (voir ci-dessus) dans les règles qui se trouvent dans le fichier /etc/rc.d/rc.firewall.

#!/bin/sh
#
# Active l'IP forwarding et Masquerading simpliste
#
#  NB:    L'exemple suivant est donne pour l'activation de l'IP Masquerading pour les
#         machines 192.168.0.2 et 192.1680.0.8 avec un masque
#         de sous reseau de 255.255.255.0 soit un masque de sous reseau "24 bits"
#         connecte a Internet par l'interface eth0.
#
#         ** Changez les adreesse reseau et masque de sous reseau, et l'interface de
#         ** votre connexion a Internet de telle sorte qu'ils correspondent aux reglages de votre LAN
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i eth0 -s 192.168.0.2/32 -j MASQ
/sbin/ipchains -A forward -i eth0 -s 192.168.0.8/32 -j MASQ

Erreurs courantes :

Une erreur qui paraît courante pour les nouveaux utilisateurs d'IP Masq est de faire de la commande suivante :

/sbin/ipchains -P forward masquerade

la premiere commande.

Ne faites PAS du MASQUERADING votre politique par defaut. Sinon une personne qui peut manipuler ses tables de routage sera capable de s'infiltrer directement à travers votre passerelle, en l'utilisant pour masquerader sa propre identité !

Encore une fois, vous pouvez ajouter ces lignes dans votre fichier /etc/rc.d/rc.firewall, ou bien dans l'un de vos autres fichiers rc de votre convenance, ou bien le lancer manuellement à chaque fois que vous avez besoin de l'IP Masquerade.

Reportez vous SVP aux sections Strong-IPFWADM-Rulesets et Strong-IPCHAINS-Rulesets pour un guide detaillé d'IPCHAINS et un exemple de règles STRONG pour IPCHAINS. Pour des détails supplémentaires sur l'utilisation d'IPCHAINS, vous pouvez vous reporter au site principal d'IPCHAINS http://netfilter.filewatcher.org/ipchains/ ou au site Linux IP CHAINS HOWTO Backup.

Noyau Linux 2.0.x

Créez le fichier /etc/rc.d/rc.firewall avec les règles naives suivantes :

# rc.firewall - Initial SIMPLE IP Masquerade setup for 2.0.x kernels using
#               IPFWADM
# rc.firewall - test IP Masquerade naif pour les noyaux 2.0.x
#               avec IPFWADM
#
# Charge les modules necessaires a IP MASQ
#
#   NB: Charger uniquement les modules IP MASQ dont vous avez besoin. Tous les modules IP MASQ
#       actuels sont montres ci-dessous mais sont commentes pour les empecher de se charger.
#
# Necessaire pour le chargement initial des modules
#
/sbin/depmod -a
# Permet le masquerading correct des transfert de fichier par FTP avec la methode PORT
/sbin/modprobe ip_masq_ftp
# Permet le masquerading de RealAudio par UDP. Sans ce module,
#       RealAudio FONCTIONNERA mais en mode TCP. Ce qui peu causer une baisse
#       dans la qualite du son
#
#/sbin/modprobe ip_masq_raudio
# Permet le masquerading des transferts de fichier par DCC pour les IRC
#/sbin/modprobe ip_masq_irc
# Permet le masquerading de Quake et QuakeWorld par defaut. Ce module est
#   necessaire pour les utilisateurs multiples derriere un server Linux MASQ. Si vous voulez jouer
#   a Quake I, II, et III, utilisez le second exemple.
#
#   NB:  si vous rencontrez des ERREURs lors de chargement du module QUAKE, c'est que vous utilisez
#   un ancien noyau buggue. Mettez a jour votre noyau pour supprimer l'erreur.
#
#Quake I / QuakeWorld (ports 26000 et 27000)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake 26000,27000,27910,27960
# Permet le masquerading du logiciel CuSeeme pour la video conference
#
#/sbin/modprobe ip_masq_cuseeme
# Permet le masquerading du logiciel VDO-live pour la video conference
#
#/sbin/modprobe ip_masq_vdolive
#CRITIQUE:  Active l'IP forwarding puisqu'il est desactive par defaut
#
#           Utilisateurs Redhat: vous pourrez essayer en changeant les options dans
#                          /etc/sysconfig/network de:
#
#                       FORWARD_IPV4=false
#                             a
#                       FORWARD_IPV4=true
#
echo "1"> /proc/sys/net/ipv4/ip_forward
#CRITIQUE:  Active automatiquement l'IP defragmenting puisqu'il est desactive par defaut
#           dans les noyaux 2.2.x. Ceci etait une option de compilation mais ca a change
#           depuis le noyau 2.2.12
#
echo "1"> /proc/sys/net/ipv4/ip_always_defrag
# Utilisateurs d'IP Dynamiques:
#
#   Si vous recevez votre adresse IP de maniere dynamique a partir d'un server SLIP, PPP,
#   ou DHCP, activez option suivante qui active le hacking (au bon sens du terme NDT) des
#   adresses IP dynamique dans IP MASQ, rendant ainsi les choses plus faciles pour les
#   programmes du type Diald.
#
#echo "1"> /proc/sys/net/ipv4/ip_dynaddr
# MASQ timeouts
#
#   2 hrs timeout for TCP session timeouts
#  10 sec timeout for traffic after the TCP/IP "FIN" packet is received
#  160 sec timeout for UDP traffic (Important for MASQ'ed ICQ users)
#
/sbin/ipchains -M -S 7200 10 160
# DHCP:  For people who receive their external IP address from either DHCP or
#        BOOTP such as ADSL or Cablemodem users, it is necessary to use the
#        following before the deny command.  The "bootp_client_net_if_name"
#        should be replaced the name of the link that the DHCP/BOOTP server
#        will put an address on to?  This will be something like "eth0",
#        "eth1", etc.
#
#        This example is currently commented out.
#
#
#/sbin/ipchains -A input -j ACCEPT -i bootp_clients_net_if_name -s 0/0 67 -d 0/0 68 -p udp
# Active l'IP forwarding et Masquerading simpliste
#
#  NB:    L'exemple suivant est donne pour le LAN interne 192.168.0.x avec un masque
#         de sous reseau de 255.255.255.0 soit un masque de sous reseau "24 bits"
#         connecte a Internet par l'interface eth0.
#
#         ** Changez les adreesse reseau et masque de sous reseau, et l'interface de
#         ** votre connexion a Internet de telle sorte qu'ils correspondent aux reglages de votre LAN
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.0/24 -D 0.0.0.0/0

Une fois que vous aurez terminé de rédiger les règles de /etc/rc.d/rc.firewall, rendez le exécutable en tapant chmod 700 /etc/rc.d/rc.firewall

Maintenant que vos règles de firewall sont prêts, vous devez faire en sorte qu'ils soient actifs après chaque redémarrage. Vous pouvez soit décider de le lancer à la main à chaque fois (une vraie galère) ou bien de le rajouter dans vos scripts de boot. Nous vous montrons comment faire pour chacune des deux methodes ci-dessous :

  • Pour les distribs RedHat ou derivées de la RedHat:
  • Il y a deux manières de faire charger des trucs dans RedHat : /etc/rc.d/rc.local ou le mettre le script d'init dans /etc/rc.d/init.d/. La première methode est la plus simple. Tout ce que vous avez à faire c'est de rajouter cette ligne :

    • echo "Chargement des regles de rc.firewall..." /etc/rc.d/rc.firewall

    à la fin de votre /etc/rc.d/rc.local et c'est tout. Le problème de cette approche est que si vous tournez avec les règles de STRONG firewall, le firewall n'est pas actif avant les dernières phases du démarrage. La meilleure approche est d'avoir le firewall chargé juste après que le reseau est lancé. A partir de ce point, ce HOWTO ne traite que de l'approche /etc/rc.d/rc.local. Si vous voulez le système STRONG, je vous recommande de vous reporter à la section 10 de TrinityOS dont vous trouverez le lien à la fin de ce HOWTO.

  • Slackware :
  • Il y a deux manières de faire charger des trucs dans la Slackware: /etc/rc.d/rc.local ou modifier le fichier /etc/rc.d/rc.inet2. La première methode est la plus simple. Tout ce que vous avez à faire c'est de rajouter cette ligne :

    • echo "Chargement des regles de rc.firewall..."

      /etc/rc.d/rc.firewall

    à la fin de votre /etc/rc.d/rc.local et c'est tout. Le problème de cette aproche est que si vous tournez avec les règles de STRONG firewall, le firewall n'est pas actif avant les dernières phases du démarrage. La meilleure approche est d'avoir le firewall chargé juste apres que le reseau est lancé. A partir de ce point, ce HOWTO ne traite que de l'approche /etc/rc.d/rc.local. Si vous voulez le système STRONG, je vous recommande de vous reporter à la section 10 de TrinityOS dont vous trouverez le lien à la fin de ce HOWTO.

Remarques sur la manière dont les utilisateurs doivent s'y prendre s'il veulent modifier les règles de firewall que nous avons vues ci-dessus :

Vous pouvez aussi activer l'IP Masquerading sur une base de cas par cas suivant la machine au lieu de la methode ci-dessus qui active le reseau TCP/IP entier. Par exemple, disons que je veux que seuls les machines 192.168.0.2 et 192.168.0.8 puisssent accéder à Internet et AUCUN autre ordinateur interne. Je changerais les règles dans la section "Active l'IP forwarding et Masquerading simpliste" (voir ci-dessus) dans les règles qui se trouvent dans le fichier /etc/rc.d/rc.firewall.

#!/bin/sh
#
# Active l'IP forwarding et Masquerading simpliste
#
#  NB:    L'exemple suivant est donne pour l'activation de l'IP Masquerading pour les
#         machines 192.168.0.2 et 192.1680.0.8 avec un masque
#         de sous reseau de 255.255.255.0 soit un masque de sous reseau "24 bits"
#         connecte a Internet par l'interface eth0.
#
#         ** Changez les adresse reseau et masque de sous reseau, et l'interface de
#         ** votre connexion a Internet de telle sorte qu'ils correspondent aux reglages de votre LAN
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.2/32 -D 0.0.0.0/0
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.8/32 -D 0.0.0.0/0

Erreurs courrantes :

Une erreur qui parait courante pour les nouveaux utilisateurs d'IP Masq est de faire de la commande suivante :

ipfwadm -F -p masquerade
la premiere commande.

Ne faites PAS du MASQUERADING votre politique par défaut. Sinon une personne qui peut manipuler ses tables de routage sera capable de s'infiltrer directement à travers votre passerelle, en l'utilisant pour masquerader sa propre identité !

Encore une fois, vous pouvez ajouter ces lignes dans votre fichier /etc/rc.d/rc.firewall, ou bien dans l'un de vos autres fichiers rc de votre convenance, ou bien le lancer manuellement à chaque fois que vous avez besoin de l'IP Masquerade.

Vous pouvez vous reporter aux sections Strong-IPCHAINS-Rulesets et Strong-IPFWADM-Rulesets pour un guide detaillé et des examples de règles STRONG pour IPCHAINS et IPFWADM.


Page suivante - Page précédente - Table des matières