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.
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.
** 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.
Clients génériques
toutes les plateformes, naviguer sur le web ;
toutes les plateformes, clients de courrier électronique ;
toutes les plateformes, sessions distantes ;
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) ;
toutes les plateformes, client de recherche de fichiers (tous les clients ne fonctionnent pas) ;
toutes les plateformes, client news USENET ;
Windows (peut être toutes les plateformes), réalité virtuelle ;
surtout les plateformes UNIX, certaines variantes ne devraient pas fonctionner ;
toutes plateformes, avec le patch ICMP
toutes les plateformes, avec le module ip_masq_irc.o
;
toutes les plateformes ;
toutes les plateformes.
Clients Multimédia
Windows, flux audio par réseau, avec le module ip_masq_raudio
Windows, flux audio par réseau
Windows, flux audio par réseau
Windows, programme client-serveur de discussion 3D
Windows, programme client-serveur de discussion 3D
Windows, communications audio. Vous ne pouvez être contacté que si vous initiez la connexion, mais on ne peut pas vous appeler.
Windows, communication audio. Vous ne pouvez être contacté que si vous initiez la connexion, mais on ne peut pas vous appeler.
toutes les plateformes, avec le module cuseeme, voir sur IP Masquerade Resource pour les détails.
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
DOS, une suite de logiciels contenant telnet, ftp, ping, etc...
MS-Windows, controle d'un PC à distance avec TCP/IP, fonctionne uniquement si la machine est un client et non un hôte.
utilise ntp - network time protocol
Linux, package d'administration par réseau
Connexion ok, mais la voix ne peut que sortir de votre réseau.
Connexion impossible au serveur.
Connexion à l'hôte distant impossible.
ne fonctionnera pas - nécessite l'écriture d'un proxy noyau.
Ne peut pas fonctionner (il fait des suppositions
invalides sur les adresses).
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.
Normalement, tous les OS disposant d'une couche TCP/IP et permettant de specifier un firewall/gateway devraient marcher avec l'IP masquerading
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.
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.
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.
Fournis par Michael Owings.
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.
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.
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.
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.
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.
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.
Nous mettrons à jour cette section très prochainement pour traiter d'autres outils en relation avec ipmasq tels ipportfw ou masqadmin.