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

Contenu de cette section

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.

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

atoutes 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 sever.

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 supposition 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

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, definit la configuration du firewall.
# appele depuis rc.local.
#

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

# pour les tests, attend un moment puis efface toutes les regles du
# firewall. Decommentez les lignes suivantes si vous voulez que le
# firewall soit desactive automatiquement apres 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
# defaut a deny (refus). En fait, le comportement par defaut est
# inadequat puisqu'il y a une regle pour tout intercepter, avec refus et
# logging.
ipfwadm -I -f
ipfwadm -I -p deny
# interface locale, machines locales. Aller n'importe ou est autorise.
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
# interface distante, pretendant etre 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'acces a 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 regles faites, toutes les autres connexions
# entrantes sont refusees et logguees.
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
# defaut a deny (refus).En fait, le comportement par defaut est
# inadequat puisqu'il y a une regle 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 reseau 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 reseau local a partir de l'interface
# sortante. C'est du routage 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
# sortante depuis le reseau 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 reseau 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 regles faites, toutes les autres connexions
# sortantes sont refusees et logguees.
ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o


# Connexions a faire suivre (forwarding), efface tout et positionne le
# comportement par defaut a deny (refus).En fait, le comportement par
# defaut est inadequat puisqu'il y a une regle pour tout intercepter,
# avec refus et logging.
ipfwadm -F -f
ipfwadm -F -p deny
# Masquerade depuis le reseau local sur l'interface locale vers
# n'importe ou
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
# une fois toutes les regles faites, toutes les autres connexions
# a faire suivre sont refusees et logguees.
ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

Vous pouvez bloquer le traffic 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.

... debut des regles -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 ou est autorise.
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
... fin des regles -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.

... debut des regles -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 regles -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.

... debut des regles -F ...
# Rejette et loggue les connexions depuis le reseau 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 reseau local sur l'interface locale vers
# n'importe ou
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
... fin des regles -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 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.6 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 traffic, 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.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre