Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1597

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>FIREWALLING</TITLE>
</HEAD>
<BODY>
<A NAME="FIREWALLING"></A> <H1>4. <A NAME="s4"></A>FIREWALLING</H1>
<P>
<A HREF="Bridge+Firewall.html#toc4">Contenu de cette section</A></P>

<A NAME="Software and reading"></A> <H2>4.1 <A NAME="ss4.1"></A> Logiciel et lectures</H2>

<P>Vous devriez lire le 
<A HREF="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Firewall-HOWTO">Firewall-HOWTO</A>
.</P>
<P></P>
<P>Il vous indiquera o&ugrave; trouver <CODE>ipfwadm</CODE> si vous ne l'avez pas d&eacute;j&agrave;. Vous pouvez &eacute;galement r&eacute;cup&eacute;rer d'autres outils, mais seulement <CODE>ipfwadm</CODE> m'a &eacute;t&eacute; utile. C'est pratique et de bas niveau&nbsp;! Vous pouvez voir exactement ce qu'il fait.</P>
<P></P>

<A NAME="Preliminary checks"></A> <H2>4.2 <A NAME="ss4.2"></A> V&eacute;rifications pr&eacute;liminaires</H2>

<P>Vous avez compil&eacute; l'IP-forwarding et le masquerading dans le noyau, et vous allez v&eacute;rifier que le <EM>firewall</EM> est dans son &eacute;tat par d&eacute;faut (il accepte) gr&acirc;ce &agrave;&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -l
ipfwadm -O -l
ipfwadm -F -l
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Ce qui, dans l'ordre, 'affiche les r&egrave;gles affectant la partie ..'entrante ou sortante ou qui fait suivre (<EM>masquerading</EM>) '.. du <EM>firewall</EM>'. L'option '-l' signifie 'lister'.</P>
<P></P>
<P>Si vous avez compil&eacute; l'IP accounting &eacute;galement&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -A -l
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Vous devriez constater qu'aucune r&egrave;gle n'est d&eacute;finir et que l'action par d&eacute;faut est d'accepter tous les paquets. Vous pouvez retourner &agrave; cet &eacute;tat &agrave; tout moment, avec&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -f
ipfwadm -O -f
ipfwadm -F -f
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>L'option '-f' signifie 'flush' (en fran&ccedil;ais, 'vider'). Vous pourriez en avoir besoin.</P>
<P></P>
<P></P>

<A NAME="Default rule"></A> <H2>4.3 <A NAME="ss4.3"></A> R&egrave;gle par d&eacute;faut</H2>

<P>Je veux interdire l'acc&egrave;s au monde entier depuis mon r&eacute;seau interne, et rien d'autre, donc je vais donner comme derni&egrave;re r&egrave;gle (comme r&egrave;gle par d&eacute;faut) une r&egrave;gle indiquant d'ignorer les paquets venant du r&eacute;seau interne et dirig&eacute;s vers l'ext&eacute;rieur. Je place toutes les r&egrave;gles (dans cet ordre) dans le fichier <CODE>/etc/rc.d/rc.firewall</CODE> que j'execute depuis <CODE>/etc/rc.d/rc.local</CODE> au d&eacute;marrage.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Le '-S' repr&eacute;sente l'adresse source/masque de sous-r&eacute;seau. L'option '-D' est pour l'adresse destination/masque de sous-r&eacute;seau.</P>
<P></P>
<P>Ce format n'a plus le vent en poupe. <CODE>ipfwadm</CODE> est intelligent et conna&icirc;t des abr&eacute;viations courantes. V&eacute;rifier les pages de manuel.</P>
<P></P>
<P>Il peut &ecirc;tre plus pratique de placer certaines ou toutes les r&egrave;gles sur la partie sortante du firewall en utilise '-O' au lieu de '-I', mais je supposerai que les r&egrave;gles sont con&ccedil;ues pour &ecirc;tre utilis&eacute;es sur la moiti&eacute; entrante.</P>
<P></P>

<A NAME="Holes per address"></A> <H2>4.4 <A NAME="ss4.4"></A> Acc&egrave;s par adresse</H2>

<P>Avant la r&egrave;gle par d&eacute;faut, je dois placer des r&egrave;gles qui servent d'exceptions pour cette interdiction g&eacute;n&eacute;rale des services ext&eacute;rieurs aux clients int&eacute;rieurs.</P>
<P></P>
<P>Je veux traiter les adresses des machines derri&egrave;re le firewall de mani&egrave;re sp&eacute;ciale. Je veux emp&ecirc;cher aux gens de se loguer sur la machine qui sert de firewall &agrave; moins qu'elles aient une permission sp&eacute;ciale, mais une fois connect&eacute;es, elles devraient &ecirc;tre capables de parler au monde ext&eacute;rieur.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \
 -D 0.0.0.0/0.0.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Je veux &eacute;galement que les clients internes soient capables de parler &agrave; la machine faisant <EM>firewall</EM>. Peut-&ecirc;tre pourront-elles la persuader de les laisser sortir&nbsp;!</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \
 -D 192.168.2.100/255.255.255.255
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>V&eacute;rifiez que vous pouvez joindre les machines &agrave; l'int&eacute;rieur du firewall depuis l'ext&eacute;rieur par <CODE>telnet</CODE>, mais que vous ne pouvez pas sortir. Vous pouvez faire le premier pas, mais les clients ne peuvent pas vous envoyer de messages. Essayez &eacute;galement <CODE>rlogin</CODE> et <CODE>ping</CODE> avec <CODE>tcpdump</CODE> lanc&eacute; sur une carte ou l'autre. Vous devriez &ecirc;tre capable de comprendre ce que vous lirez.</P>
<P></P>

<A NAME="Holes per protocol"></A> <H2>4.5 <A NAME="ss4.5"></A> Acc&egrave;s par protocole</H2>

<P>J'assouplis les r&egrave;gles protocole par protocole. Je veux que les <CODE>ping</CODE>s depuis l'ext&eacute;rieur vers l'int&eacute;rieur obtiennent une r&eacute;ponse, par exemple, donc j'ai ajout&eacute; la r&egrave;gle&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \
 -D 0.0.0.0/0.0.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>L'option '<CODE>-P icmp</CODE>' correspond au protocole tout entier.</P>
<P></P>
<P>Avant que j'installe un <EM>proxy ftp</EM>, j'autorise &eacute;galement les appels ftp sortants en rel&acirc;chant les restrictions sur un port donn&eacute;. Ceci vise les ports 20, 21 et 115 sur les machines externes&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
 -D 0.0.0.0/0.0.0.0 20 21 115
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Je n'ai pas pu faire fonctionner <CODE>sendmail</CODE> entre les clients locaux sans serveur de noms. Au lieu d'installer un serveur de nom directement sur le <EM>firewall</EM>, j'ai juste autoris&eacute; les requ&ecirc;tes TCP de r&eacute;solution de nom visant le plus proche serveur de nom, et j'ai plac&eacute; son adresse dans le fichier <CODE>/etc/resolv.conf</CODE> des clients. ('<CODE>nameserver 123.456.789.31</CODE>' sur une ligne s&eacute;par&eacute;e).</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
 -D 123.456.789.31/255.255.255.255 54
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Vous pouvez trouver quel num&eacute;ro de port et protocole requiert un service gr&acirc;ce &agrave; <CODE>tcpdump</CODE>. Utilisez ce service avec un <CODE>ftp</CODE> ou un <CODE>telnet</CODE> ou autre vers ou depuis une machine interne, et observez-le sur les ports d'entr&eacute;e et de sortie du <EM>firewall</EM> avec <CODE>tcpdump</CODE>&nbsp;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
tcpdump -i eth1 -e host client04
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>par exemple. Le fichier <CODE>/etc/services/</CODE> est une importante source d'indices. Pour laisser ENTRER le <CODE>telnet</CODE> et le <CODE>ftp</CODE> depuis l'ext&eacute;rieur, vous devez autoriser un client local &agrave; envoyer des donn&eacute;es vers l'ext&eacute;rieur sur un port donn&eacute;. Je comprends pourquoi ceci est n&eacute;cessaire pour le <CODE>ftp</CODE> (c'est le serveur qui &eacute;tablit la connexion de donn&eacute;es), mais je me demande pourquoi <CODE>telnet</CODE> en a &eacute;galement besoin.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \
 -D 0.0.0.0/0.0.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<P>Il existe un probl&egrave;me particulier avec certains d&eacute;mons qui cherchent le nom d'h&ocirc;te de la machine <EM>firewall</EM> afin de d&eacute;cider quelle est leur adresse r&eacute;seau. J'ai eu des probl&egrave;mes avec <CODE>rpc.yppasswdd</CODE>. Il insiste sur des informations <EM>broadcast</EM> qui indiquent qu'il se trouve en dehors du <EM>firewall</EM> (sur la seconde carte). Cela signifie que les clients &agrave; l'int&eacute;rieur ne peuvent pas le contacter.</P>
<P></P>
<P>Au lieu de lancer l'IP aliasing ou de changer le code source du d&eacute;mon, j'ai traduit le nom vers l'adresse de la carte du c&ocirc;t&eacute; int&eacute;rieur sur les clients, dans leur fichier <CODE>/etc/hosts</CODE>.</P>
<P></P>

<H2>4.6 <A NAME="ss4.6"></A> V&eacute;rifications</H2>

<P>Vous voudrez tester que vous pouvez toujours utiliser <CODE>telnet</CODE>, <CODE>rlogin</CODE> et <CODE>ping</CODE> depuis l'ext&eacute;rieur. Depuis l'int&eacute;rieur, vous devriez &ecirc;tre capable d'utiliser <CODE>ping</CODE> vers la sortie. Vous devriez &eacute;galement &ecirc;tre capables d'utiliser le <CODE>telnet</CODE> vers la machine <EM>firewall</EM> depuis l'int&eacute;rieur, et cette derni&egrave;re manipulation devrait vous permettre d'acc&eacute;der au reste.</P>
<P></P>
<P>Et voil&agrave;. A pr&eacute;sent, vous voulez probablement apprendre <B>rpc</B>/<B>Y</B>ellow <B>P</B>ages et leur interaction avec le fichier de mots de passe. Le r&eacute;seau derri&egrave;re le firewall devrait vouloir emp&ecirc;cher aux utilisateurs non privil&eacute;gi&eacute;s de se logguer sur le <EM>firewall</EM>, et donc de sortir. C'est trait&eacute; dans un autre HOWTO&nbsp;!</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="Bridge+Firewall-3.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Bridge+Firewall.html#toc4">ce chapitre</A>,
 <A HREF="Bridge+Firewall.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="Bridge+Firewall.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>