Tout d'abord, le masquerading ne peut marcher qu'avec des protocols qui utilisent des ports - comme TCP ou UDP. Cela ne fonctionnera pas avec ICMP, donc ping et traceroute ne fonctionneront pas (à moins que votre ping et/ou votre traceroute ait été modifiés pour utiliser une méthode différente de celle habituelle).
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 protocols 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.
En général, les applications qui utilisent TCP et/ou UDP devraient fonctionner. Néanmoins, les applications basées sur ICMP ne devraient pas être supportées. Si vous avez une quelconque suggestion à propos d'une application non compatible avec IP masquerade, envoyez moi un email avec le nom du client et une brève description.
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) ;
atoutes 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 les plateformes, avec
le module ip_masq_irc.o
;
toutes les plateformes ;
atoutes 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 à IP Masquerade Resource pour des détails
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 (il y aura une section sur ce produit prochainement).
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
avec des exceptions pour les paquets ICMP qui contiennent certaines informations à propos des paquets ICMP originaux, comme traceroute
ne fonctionnera pas - nécessite l'écriture d'un proxy noyau
Ne peut pas fonctionner (il fait des supposition 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.
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.
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