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

4. Autres sujets relatifs à IP Masquerade et au support logiciel

4.1 Problèmes avec IP Masquerade

Certains protocoles ne marcheront pas avec l'IP masquerading, parce que soit ils supposent des choses sur les numéros de port ou soit qu'ils encodent les données sur le port et les adresses dans leurs paquets. Ces protocoles ont besoin de proxy intégrés dans le code du masquerading pour fonctionner.

4.2 Services entrants

Le masquerading ne peut pas du tout prendre en charge les services entrants. Il y a plusieurs façons de les autoriser, mais ces méthodes sont complètement en dehors du thème du masquerading et se rapprochent plutôt de la technique des firewalls.

Si vous n'avez pas besoin d'une grande sécurité, vous pouvez simplement rediriger les ports. Il y a de nombreuses façons de faire cela - personnellement j'utilise une version modifiée du programme redir (qui, je l'espère, sera disponible sur sunsite et ses mirrors prochainement). Si vous désirez avoir des niveaux d'autorisation sur les connexions entrantes, vous pouvez alors utiliser les TCP Wrappers ou Xinetd par dessus redir (version 0.7 ou supérieure) pour autoriser seulement des adresses IP données, ou utiliser d'autre outils. La boîte à outils pour firewall TIS (TIS Firewall Toolkit) est un bon produit pour ceux qui cherchent des outils et des informations.

Une section en disant plus long sur le forwarding sera bientot ajoutée.

4.3 Programmes clients supportés et autres remarques pour la configuration

** La liste suivante n'est plus maintenue. Voyez cette page sur les applications fonctionnant au travers d'IP Masquerading et la page IP Masquerade Resource pour plus de détails. **

En général, les applications qui utilisent TCP et/ou UDP devraient fonctionner. Si vous avez une quelconque suggestion ou question à propos des applications compatibles avec IP masquerade, visitez la page sur les applications fonctionnant avec IP Masquerading par Lee Nevo.

Les clients qui fonctionnent

Clients génériques

HTTP

toutes les plateformes, naviguer sur le web ;

POP & SMTP

toutes les plateformes, clients de courrier électronique ;

Telnet

toutes les plateformes, sessions distantes ;

FTP

toutes les plateformes, avec le module ip_masq_ftp.o (tous les sites ne fonctionnent pas avec certains clients ; par exemple, certains sites ne peuvent pas être atteints en utilisant ws_ftp32 mais fonctionnent avec Netscape) ;

Archie

toutes les plateformes, client de recherche de fichiers (tous les clients ne fonctionnent pas) ;

NNTP (USENET)

toutes les plateformes, client news USENET ;

VRML

Windows (peut être toutes les plateformes), réalité virtuelle ;

traceroute

surtout les plateformes UNIX, certaines variantes ne devraient pas fonctionner ;

ping

toutes plateformes, avec le patch ICMP

quoique ce soit, basé sur IRC

toutes les plateformes, avec le module ip_masq_irc.o ;

Client Gopher

toutes les plateformes ;

Client WAIS

toutes les plateformes.

Clients Multimédia

Real Audio Player 2.0

Windows, flux audio par réseau, avec le module ip_masq_raudio

True Speech Player 1.1b

Windows, flux audio par réseau

Internet Wave Player

Windows, flux audio par réseau

Worlds Chat 0.9a

Windows, programme client-serveur de discussion 3D

Alpha Worlds

Windows, programme client-serveur de discussion 3D

Internet Phone 3.2

Windows, communications audio. Vous ne pouvez être contacté que si vous initiez la connexion, mais on ne peut pas vous appeler.

Powwow

Windows, communication audio. Vous ne pouvez être contacté que si vous initiez la connexion, mais on ne peut pas vous appeler.

CU-SeeMe

toutes les plateformes, avec le module cuseeme, voir sur IP Masquerade Resource pour les détails.

VDOLive

Windows, avec le patch vdolive

NB : Certains clients tels IPhone et Powwow peuvent fonctionner même si vous n'êtes pas la personne qui initie la connexion, en utilisant le package ipautofw (voir la section 4.6).

Autres clients

NCSA Telnet 2.3.08

DOS, une suite de logiciels contenant telnet, ftp, ping, etc...

PC-anywhere pour Windows 2.0

MS-Windows, controle d'un PC à distance avec TCP/IP, fonctionne uniquement si la machine est un client et non un hôte.

Socket Watch

utilise ntp - network time protocol

Linux net-acct package

Linux, package d'administration par réseau

Clients qui ne fonctionnent pas

Intel Internet Phone Beta 2

Connexion ok, mais la voix ne peut que sortir de votre réseau.

Intel Streaming Media Viewer Beta 1

Connexion impossible au serveur.

Netscape CoolTalk

Connexion à l'hôte distant impossible.

talk,ntalk

ne fonctionnera pas - nécessite l'écriture d'un proxy noyau.

WebPhone

Ne peut pas fonctionner (il fait des suppositions

invalides sur les adresses).

X

Non testé, mais je pense que cela ne peut pas fonctionner à moins que quelqu'un écrive un proxy X, qui est sans doute un programme externe au code de masquerading. Une façon de le faire fonctionner est d'utiliser ssh comme lien, et X comme proxy.

Plateformes/Systèmes d'exploitations testés sur des machines clientes

Normalement, tous les OS disposant d'une couche TCP/IP et permettant de specifier un firewall/gateway devraient marcher avec l'IP masquerading

4.4 Administration du firewall IP (ipfwadm)

Cette section constitue un guide plus précis sur l'utilisation d'ipfwadm.

Voici un script d'initialisation pour un système qui fait office de firewall et de masquerading. L'interface à laquelle on fait confiance est 192.168.255.1 (celle du réseau local) et l'interface PPP a été changée pour des raisons de sécurité. Toutes les interfaces sont listées individuellement pour intercepter l'IP spoofing et les routages inexacts. Tout ce qui n'est pas explicitement autorisé est interdit !

#!/bin/sh
#
# /etc/rc.d/rc.firewall, définit la configuration du firewall.
# appelé depuis rc.local.
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# pour les tests, attend un moment puis efface toutes les règles du
# firewall. Décommentez les lignes suivantes si vous voulez que le firewall
# soit désactivé automatiquement après 10 minutes.
# (sleep 600; \
# ipfwadm -I -f; \
# ipfwadm -I -p accept; \
# ipfwadm -O -f; \
# ipfwadm -O -p accept; \
# ipfwadm -F -f; \
# ipfwadm -F -p accept; \
# ) &

# Connexions entrantes, efface tout et positionne le comportement par défaut à
# deny (refus). En fait, le comportement par défaut est inadéquat puisqu'il y
# a une règle pour tout intercepter, avec refus et logging.
ipfwadm -I -f
ipfwadm -I -p deny
# interface locale, machines locales. Aller n'importe où est autorisé.
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
# interface distante, prétendant être une machine locale. C'est de l'IP
# spoofing, on refuse.
ipfwadm -I -a deny -V votre.adresse.PPP.statique -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# interface distante, n'importe qu'elle source, l'accès à notre adresse PPP
# est valide
ipfwadm -I -a accept -V votre.adresse.PPP.statique -S 0.0.0.0/0 -D votre.adresse.PPP.statique/32
# l'interface loopback est valide.
ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# une fois toutes les règles faites, toutes les autres connexions entrantes
# sont refusées et logguées.
ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

# Connexions sortantes,efface tout et positionne le comportement par défaut à
# deny (refus).En fait, le comportement par défaut est inadéquat puisqu'il y a
# une règle pour tout intercepter, avec refus et logging.
ipfwadm -O -f
ipfwadm -O -p deny
# interface locale, machines locales. N'importe quelle source allant vers le
# réseau local est valide.
ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16
# destination vers le réseau local à partir de l'interface sortante. C'est du
# routage piraté, tout refuser.
ipfwadm -O -a deny -V votre.adresse.PPP.statique -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# sortante depuis le réseau local sur l'interface sortante. C'est du
# masquerading pirate, tout refuser.
ipfwadm -O -a deny -V  votre.adresse.PPP.statique -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# sortante depuis le réseau local sur l'interface sortante. C'est du
# masquerading pirate, tout refuser.
ipfwadm -O -a deny -V votre.adresse.PPP.statique -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# l'interface loopback est valide.
ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# une fois toutes les règles faites, toutes les autres connexions sortantes
# sont refusées et logguées.
ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o


# Connexions à faire suivre (forwarding), efface tout et positionne le
# comportement par défaut à deny (refus). En fait, le comportement par défaut
# est inadéquat puisqu'il y a une règle pour tout intercepter, avec refus et
# logging.
ipfwadm -F -f
ipfwadm -F -p deny
# Masquerade depuis le réseau local sur l'interface locale vers n'importe où
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
# une fois toutes les règles faites, toutes les autres connexions à faire
# suivre sont refusées et logguées.
ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

Vous pouvez bloquer le trafic vers ou depuis un site particulier en utilisant -I, -O ou -F. Souvenez vous que les règles sont analysées de haut en bas, et -a signifie ajoute (append) à l'ensemble des règles existantes. Par exemple (non testé) :

En utilisant les règles -I. Probablement le plus rapide mais stoppe uniquement les machines locales, le firewall peut encore accéder au site "interdit". C'est peut être d'ailleurs le comportement que vous désirez.

... début des règles -I ...
# rejette et loggue l'interface locale et la machine locale allant sur
# 204.50.10.13
ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# interface locale, machines locales. Aller n'importe où est autorisé.
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
... fin des règles -I ...

En utilisant les règles -O. C'est le plus lent puisque les paquets passent d'abord à travers le masquerading, mais cette règle empèche même au firewall d'accéder au site interdit.

... début des règles -O ...
# rejette et loggue les connexions sortantes vers 204.50.10.13
ipfwadm -O -a reject -V votre.adresse.PPP.statique -S votre.adresse.PPP.statique/32 -D 204.50.10.13/32 -o
# tout le reste, sortant vers l'interface distante est valide
ipfwadm -O -a accept -V votre.adresse.PPP.statique -S votre.adresse.PPP.statique/32 -D 0.0.0.0/0
... fin des règles -O ...

En utilisant les règles -F. Probablement plus lent qu'en utilisant les règles -I, et cela stoppe uniquement les machines pour lesquelles on effetue du masquerading (c'est à dire les machines internes). Le firewall peut encore accéder au site interdit.

... début des règles -F ...
# Rejette et loggue les connexions depuis le réseau local sur l'interface PPP
# vers 204.50.10.13.
ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# Masquerade depuis le réseau local sur l'interface locale vers n'importe où
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
... fin des règles -F ...

Il n'y a pas besoin d'une règle spéciale pour autoriser 192.168.0.0/16 à se connecter sur 204.50.11.0, ce comportement est inclus dans les règles globales.

Il y a plus d'une façon d'écrire les règles précédentes. Par exemple, au lieu de -V 192.168.255.1, vous pouvez utiliser -W eth0, au lieu de -V votre.adresse.PPP.statique, vous pouvez utiliser -W ppp0. C'est une question de goût personnel.

4.5 Chaines IP Firewalling (ipchains)

Voici l'outil de manipulation de règles de firewalling créé pour les noyaux 2.2.x (il y a un patch qui permettra de l'utiliser avec le 2.0.x).

Nous mettrons à jour cette section pour donner plein d'exemples sur l'utilisation d'ipchains très bientôt.

Référez vous à Linux IP Firewalling Chains page et Linux IPCHAINS HOWTO pour plus de détails.

4.6 L'IP Masquerade et la numérotation à la demande.

  1. Si vous voulez que votre réseau se connecte automatiquement à Internet, le package diald de numérotation à la demande sera une grande aide.
  2. Pour mettre en place diald, veuillez vous référer à la page (en anglais) Setting Up Diald for Linux Page
  3. Une fois que diald et IP masq auront été installés, vous pouvez aller sur n'importe laquelle des machines clients et initier une connexion web, telnet ou ftp.
  4. diald va détecter une demande, appeler votre provider Internet et établir la connexion.
  5. Un timeout (délai d'attente dépassé) sera inévitable sur la première connexion, mais c'est le lot des modems analogiques. Le temps mis à établir la connexion va provoquer un timeout de votre programme client. Ceci peut être évité si vous utilisez une connexion ISDN. Tout ce que vous devez faire est relancer le client qui a fait le timeout.

4.7 Faire suivre les paquets avec IPautofw

IPautofw est un module générique pour faire suivre les paquets TCP et UDP pour le Masquerading de Linux. Généralement, pour utiliser un client utilisant UDP, un module spécifique doit être chargé. Ipautofw agit de manière plus générique, puisqu'il fait suivre tout type de trafic, y compris ceux pour lesquels les modules spécifiques ne feront rien suivre. Cela peut créer un trou de sécurité, si ce n'est pas administré correctement.

4.8 CU-SeeMe et le mini-HOWTO Linux IP-Masquerade

Fournis par Michael Owings.

Introduction

Cette section explique les étapes nécessaires pour faire en sorte que Cu-SeeMe (Les deux versions : Cornell ou White Pine) marche bien avec l'IP-Masquerade de Linux.

Cu-SeeMe est un paquetage de vidéoconférence disponible pour Windows et Macintosh. Une version gratuite est disponible à Cornell University. Une version commerciale largement améliorée peut etre obtenue à White Pine Software.

L'IP masquerade permet à une ou plusieurs machines d'un LAN de se cacher derriere une seule machine Linux connectée à Internet. Les stations du LAN accedent à Internet d'une maniere presque transparente meme sans adresse IP valide. La machine Linux réécrit les paquets sortant du LAN pour aller vers Internet de telle sort qu'ils semblent venir de cette meme machine. Les paquets revenants sont réécrits et reroutés vers la bonne machine sur le LAN. Cet arrangement permet à la majorité des applications Internet de marcher de façon transparente depuis les stations du LAN. Pour quelques applications (comme CU-SeeME), néanmoins, le code de routage masquerading de Linux a besoin d'un peu d'aide pour router les paquets proprement. Cette aide vient de modules spéciaux du noyau. Pour plus d'informations sur l'IP Masquerading, référez vous à The Linux IP Masquerading Website.

Le faire marcher...

Tout d'avord, vous avec besoin d'un noyau proprement configuré. Vous devriez avoir un support complet de compilé pour IP-Masquerading et IP-AutoForwarding. IP AutoForwarding est disponible depuis la version 2.0.30 du noyau - vous aurez a patcher des noyaux plus anciens. Référez vous à Linux IP Masquerade Resource pour des liens vers l'IP-AutoForwarding.

Ensuite, vous aurez besoin de la derniere version de ip_masq_cuseeme.c. La derniere version est disponible via FTP depuis ftp://ftp.swampgas.com/pub/cuseeme/ip_masq_cuseeme.c. Ce nouveau module sera inclut dans la version 2.0.31 du noyau. Vous devriez remplacer le votre par celui là. ip_masq_cuseeme.c réside normalement dans le repertoire net/ipv4 des sources de linux. Vous devriez compiler et installer ce module.

Maintenant, vous devriez mettre en place de l'ip autoforwarding pour les ports udp 7648 et 7649 comme il suit :

ipautofw -A -r udp 7648 7649 -c udp 7648 -u

Ou

ipautofw -A -r udp 7648 7649 -h www.xxx.yyy.zzz 

La premiere forme autorisera les appels de/vers la derniere station à avoir utilisé le port 7648 (le port Cu-SeeMe principal). Je préfere la premiere invocation car elle est plus flexible car il n'y a pas besoin de specifier une IP fixe. Bien sur, cela implique que la station aura eu à faire un appel sortant pour pouvoir recevoir un appel...

Notez que que les deux lignes laissent les ports 7648 et 7649 des machines clients ouvertes au monde exterieur - et bien que cela ne pose pas un trop gros trou de sécurité, vous devriez etre précautionneux.

Finalement, chargez le nouveau modules ip_masq_cuseeme comme ça :

modprobe ip_masq_cuseeme 

Vous devriez maintenant être capable de lancer CU-SeeMe depuis une machine cachée sur votre LAN et de vous connecter à un réflecteur distant, ou à un autre utilisateur de CU-SeeMe. Vous devriez aussi etre capable de recevoir des appels. Notez que les appelant de l'exterieur devront appeler l'IP de votre gateway, PAS la station cachée.

Restrictions/Mise en garde

Reflecteurs protégé par mot de passe

Ce n'est même pas la peine d'y songer. White Pine utilise l'IP source (comme cela est fait par le client) pour encrypter le mot de passe avant la transmission. Comme nous avons à réécrire l'adresse le réflecteur utilise une mauvaise IP pour pour le decrypter, ce qui donne un mot de passe invalide... Cela ne sera réparé que si White Pine change sa facon d'encryter (comme je leur ait suggéré), ou si ils decident de rendre leurs routines d'encryption publique de telle sorte que l'on puisse réparrer ip_masq_cuseeme. Alors que les chances de voir la deuxieme solution s'envolent, j'encourage tous ceux qui lisent ça à contacter White Pine et leur suggérer la premiere approche. Comme le trafic sur cette page est relativement gros, je suppose que nous pouvons générer suffisament d'email pour faire avancer ce probleme dans la liste de priorités de White Pine.

Merci à Thomas Griwenka d'avoir porté cela à mon attention.

Lancer un Réflecteur

Vous ne devez pas essayer de lancer un réflecteur sur la même machine où vous avez un ip_masq_cuseeme et un ipautoforwarding sur le port 7648 de chargé. Cela ne marcherais pas, car les deux requièrent le port 7648. Donc, lancez le réflecteur soit sur une machine accessible depuis l'Internet, ou déchargez le support pour le client Cu-SeeMe avant de lancer le réflecteur.

Plusieurs utilisateurs de CU-SeeMe

Vous ne pouvez pas avoir plusieurs utilisateurs simultanés de CU-SeeMe sur le LAN au même instant. Ceci est du au fait que CU-SeeMe se borne à toujours utiliser le port 7648, qui ne peut être redirigé (facilement) qu'à une seule station en même temps.

En utilisant du -c (port controleur) en lancant ipautofw ci-dessus, vous pouvez eviter de spécifier une adresse de station fixe autorisée a utiliser CU-SeeMe. La première station qui envoie quelque chose sur le port 7648 sera désignée pour recevoir le trafic sur les ports 7648 et 7649. A peu pres 5 minutes après que cette station soit devenue inactive sur le port 7648, une autre station pourra utiliser CU-SeeMe.

Besoin d'aide pour CU-SeeMe ?

N'hésitez pas à envoyer un email avec vos commentaires ou vos questions à mikey@swampgas.com. Ou si vous préférez, vous pouvez m' appeler via CU-SeeMe.

4.9 Autres outils en relation

Nous mettrons à jour cette section très prochainement pour traiter d'autres outils en relation avec ipmasq tels ipportfw ou masqadmin.


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