Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > dca483b59ba61f3fa092de932ddd570e > files > 138

nuface-2.0.14-2mdv2009.1.i586.rpm

<?xml version="1.0" encoding="iso-8859-1"?>
<!--<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
    "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">-->
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
    <title>Nupyf: manuel de l'administrateur</title>
    <articleinfo>
	<author>
	    <firstname>Jean</firstname>
	    <surname>Gillaux</surname>
	    <email>jgillaux@inl.NOSPAM.fr</email>
	</author>
        <author>
            <firstname>Damien</firstname>
            <surname>Boucard</surname>
            <email>dboucard@inl.NOSPAN.fr</email>
        </author>
	<copyright>
	    <year>2005-2007</year>
	    <holder>INL</holder>
	</copyright>
	<revhistory>
	    <revision>
		<revnumber>0.1</revnumber>
		<date>2005/06/07</date>
	    </revision>
	    <revision>
		<revnumber>0.1.1</revnumber>
		<date>2006/02/10</date>
                <revdescription>
                <para>suppression des zones, et ajout de l'attribut dftgateway</para>
                </revdescription>
	    </revision>
            <revision>
                <revnumber>0.2</revnumber>
                <date>2007/02/16</date>
                <revdescription>
                  <para>Mise à jour pour nupyf 1.2 (plusieurs adresses par
                  interface, type local_ipv4, filtrage layer 7, Identifiant des
                  ACL dans les logs, option "no same iface", attribut descsort
                  des ACL</para>
                </revdescription>
            </revision>
	</revhistory>
	<legalnotice>
	<para>
	Cette documentation est distribuée selon les termes de la Free Documentation
      Licence. Avant de lire/copier/utiliser cette documentation, veuillez lire
      la Licence et l'accepter. Voir <ulink url="http://www.gnu.org/licenses/licenses.html#FDL"><citetitle>http://www.gnu.org/licenses/licenses.html#FDL</citetitle></ulink>
	</para>
	</legalnotice>
    </articleinfo>
      <section><!-- ddd-->
	<title>Présentation Générale</title>
	<para>Nupyf est l'outil qui à partir d'un fichier xml d'acls NuFW et d'un fichier xml de description du réseau, permet de générer à la fois des commandes iptables pour nufw et d'intégrer les acls dans un arbre ldap pour nuauth.</para>
    </section>
    <section><title>Utilisation</title>
	<para>
	    <informalexample>
		<programlisting>./nupyf.py [options] firewall_file.xml acls_file.xml</programlisting>
	    </informalexample>
	</para>
	<section><title>Options</title>
	    <para>Les options disponibles sont:
	    <itemizedlist>
	    <listitem><para>-d, --dispatch dispatch.txt: écrit les règles de dispatch dans le fichier dispatch.txt</para></listitem>
	    <listitem><para>-f, --forward fwd.txt: écrit les règles de forward dans le fichier fwd.txt</para></listitem>
	    <listitem><para>-i, --input in.txt: écrit les règles d'entrée dans le fichier in.txt</para></listitem>
	    <listitem><para>-o, --output out.txt: écrit les règles de sortie dans le fichier out.txt</para></listitem>
            <listitem><para>-m, --mangle mangle.txt: écrit les règles mangle dans le fichier mangle.txt</para></listitem>
            <listitem><para>-v, --vpn vpn.txt: écrit les règles VPN dans le fichier vpn.txt</para></listitem>
	    <listitem><para>-n, --nat nat.txt: écrit les règles de nat dans le fichier nat.txt</para></listitem>
	    <listitem><para>-r, --rescue: active le mode standard: génération de règles pour un parefeu non nufw</para></listitem>
	    <listitem><para>--ulog: active l'utilisation de la cible ULOG (à la place de LOG) pour les logs iptables</para></listitem>
            <listitem><para>--iptables: où se trouve la commande iptables, par défaut utilise $ipt.</para></listitem>
	    <listitem><para>-s, --server: adresse du serveur ldap</para></listitem>
	    <listitem><para>-u, --user: utilisateur pour se connecter au serveur ldap. Ex: 'cn=admin,dc=inl,dc=fr'</para></listitem>
	    <listitem><para>-p, --paswd: mot de passe pour se connecter au serveur ldap</para></listitem>
	    <listitem><para>-b, --basedn: basedn où stocker les acls nufw dans l'arbre ldap</para></listitem>
	    <listitem><para>-a, --askpwd: demander à l'utilisateur de taper le mot de passe ldap</para></listitem>
	    <listitem><para>-c, --config: chemin vers le fichier de configuration de nupyf (nupyf.conf)</para></listitem>
	    <listitem><para>--dumpldap obj_ldap: dump les informations ldap construites à partir du fichier xml dans le fichier obj_ldap</para></listitem>
	    <listitem><para>--loadldap obj_ldap: charge les informations ldap venant d'un fichier xml à partir du fichier obj_ldap</para></listitem>
            <listitem><para>--auth_ext: Génère des règles Netfilter authentifiantes sur le réseau internet</para></listitem>
            <listitem><para>--sortid: ordonne les ACLs suivant l'identifiant fourni</para></listitem>
            <listitem><para>--no-same-iface: (conseillé) optimise la génération des bichaines : les chaînes ayant la même interface en entrée et en sortie ne sont pas créées</para></listitem>
            <listitem><para>--ipv6: toutes les adresses IP sont manipulées sous forme IPv6</para></listitem>
            <listitem><para>--nulayer7: répertoire où se trouvent les modules nulayer7 ; le filtrage layer7 sera désactivé si cette option n'est pas positionnée.</para></listitem>
	    <listitem><para>-h, --help</para></listitem>
	    </itemizedlist>
	    </para>
	    <para>
	    Pour les options --dispatch, --forward, --input, --output et --nat définissant des fichiers de sortie, la valeur "-" représente la sortie standard.
	    </para>
	    <para>
	    Les options dumpldap et loadldap permettent de ne pas modifier l'arbre ldap en même temps que la génération des fichiers de règles netfilter. On peut reprendre les informations sans avoir à analyser de nouveau les fichiers xml et se connecter au serveur ldap.
	    </para>
	    <para>
	    Dans l'arbre ldap, les cn des règles dans l'arbre ldap sont définis de la façon suivante: &lt;nom-sujet_nom-ressource_nom-protocole_id_random&gt;.
Le champ id est le numéro de la règle provenant de l'acl correspondante dans le fichier xml, une acl xml pouvant générer plusieurs règles. Le champ random permet de s'assurer que deux acls ldap n'entrent pas en collision lors d'une insertion (la collision provenant juste du dn identique et non du contenu).
	    </para>
	</section>
	<section><title>Fichier de configuration</title>
        <para>
	L'option --config permet de spécifier un fichier de configuration pour nupyf. Ce fichier gère pour l'instant les paramètres de connexion au serveur ldap, et doit avoir la syntax suivante:
	<programlisting>
{
'ldap_server': 'ldap.firm.com',
'ldap_password': 'secret',
'ldap_user': 'cn=ldap_user,dc=firm,dc=com',
'ldap_basedn': 'ou=Acls,dc=firm,dc=com',
}</programlisting>
Les lignes débutant par le caractère # sont considérées comme des commentaires.
        </para>
	</section> <!-- fichier de conf-->
    </section><!-- utilisation -->
    <section>
	<title>Fichier xml de description du réseau</title>
	<para>Nupyf utilise un fichier xml qui décrit les interfaces du firewall et les réseaux rattachés au firewall. Bien que nupyf ne le gère pas encore, la syntaxe du fichier permet de spécifier plusieurs firewalls.</para>
	<para>Le format de description du réseau utilise les tags xml suivants:</para>
	<variablelist>
	    <title>Description des interfaces du firewall</title>
            <varlistentry><term>address</term>
		<listitem>
		<para>une adresse d'une interface du pare-fey.</para>
		</listitem>
	    </varlistentry>

	    <varlistentry><term>interface</term>
		<listitem>
		<para>nom d'une interface réseau d'un firewall. Cette balise
                doit encapsuler les adresses.</para>
		</listitem>
	    </varlistentry>

	    <varlistentry><term>interfaces</term>
		<listitem>
		<para>encapsule un ou plusieurs tags interface.</para>
		</listitem>
	    </varlistentry>

	    <varlistentry><term>fw</term>
		<listitem><para>décrit le type et le nom du'un firewall.</para></listitem>
	    </varlistentry>
	    <varlistentry><term>fws</term>
		<listitem><para>encapsule les tags précédents.</para></listitem>
	    </varlistentry>

	</variablelist>

	<variablelist>
	    <title>Description des réseaux</title>
	    <varlistentry><term>connection: </term>
		<listitem><para>décrit la relation entre une interface d'un firewall et un réseau.</para></listitem>
	    </varlistentry>
	    <varlistentry><term>net:</term>
		<listitem><para>spécifie un réseau. Encapsule les tags connection.</para></listitem>
	    </varlistentry>
	    <varlistentry><term>nets</term>
		<listitem><para>encapsule les deux tags précédents.</para></listitem>
	    </varlistentry>

	</variablelist>
	<para>Le tag network encapsule les tags précédemment cités.</para>
	<section><title>Exemple</title>
	    <para>
	Cet exemple représente un firewall possédant quatre interfaces et reliés à cinq réseaux:
	    <itemizedlist>
<listitem><para>l'interface eth0 reliée aux réseaux INTERNET et INTERNETALIAS</para></listitem>
<listitem><para>l'interface eth1 reliée au réseau DMZ</para></listitem>
<listitem><para>l'interface eth2 reliée au réseau INTRANET</para></listitem>
<listitem><para>l'interface tun0 reliée au réseau OPENVPN</para></listitem>
	    </itemizedlist>
INTRANET et DMZ sont des réseaux internes. INTERNET est le réseau externe, car
la connexion du firewall à ce réseau possède un attribut dftgateway qui définit
la route par défaut du firewall. INTRANETALIAS est un réseau public également
géré (en tant qu'alias IP) sur l'interface publique du pare-feu. Enfin OPENVPN
est un réseau privé virtuel monté sur une interface virtuelle.<!--(zone external).-->
	    </para>
	    <informalexample>
		<programlisting>
		<![CDATA[
<?xml version="1.0"?>
<network>
    <fws>
        <fw id="1" type="nufw" name="fydelkass" queue="0">
            <interfaces>
                <interface id="1" name="eth0">
                    <address id="1" addr="172.16.6.116"/>
                    <address id="2" addr="84.255.101.237"/>
                </interface>
                <interface id="2" name="eth1">
                    <address id="1" addr="192.168.42.1"/>
                </interface>
                <interface id="3" name="eth2">
                    <address id="1" addr="192.168.42.129"/>
                </interface>
                <interface id="4" name="tun0">
                    <address id="1" addr="10.8.0.1"/>
                </interface>
            </interfaces>
        </fw>
    </fws>
    <nets>
        <net id="1" name="INTERNET" type="ipv4" addr="172.16.6.0/24">
            <connection direct="1" fwid="1" iface="1" dftgateway="172.16.6.1" snat="0"/>
        </net>
        <net id="2" name="INTERNETALIAS" type="ipv4" addr="84.255.101.232/29">
            <connection direct="1" fwid="1" iface="1" snat="0"/>
        </net>
        <net id="3" name="DMZ" type="ipv4" addr="192.168.42.0/255.255.255.128">
            <connection direct="1" fwid="1" iface="2" snat="1"/>
        </net>
        <net id="4" name="INTRANET" type="ipv4" addr="192.168.42.128/255.255.255.128">
            <connection direct="1" fwid="1" iface="3" snat="1"/>
        </net>
        <net id="5" name="LAN_1" type="ipv4" addr="192.168.100.0/24">
            <connection direct="0" fwid="1" iface="3" gateway="192.168.42.254" snat="1"/>
        </net>
        <net id="6" name="OPENVPN" type="ipv4" addr="10.8.0.0/24">
            <connection direct="1" fwid="1" iface="4" snat="1"/>
        </net>
    </nets>
</network>
]]>
		</programlisting>

	    </informalexample>
	</section>
	<section><title>Définition des tags xml</title>

	    <section><title>Tag fw</title>
		<informaltable frame="all">
		    <tgroup cols="2" colsep='1' rowsep='1'>
		    <colspec colname="c1"/>
		    <colspec colname="c2"/>
		    <thead>
		    <row>
		    <entry namest="c1" nameend="c2" align="center">Attributs</entry>
		    </row>
		    </thead>
		    <tbody>
		    <row>
			<entry>id</entry>
			<entry>valeur numérique</entry>
		    </row>
		    <row>
			<entry>type</entry><entry>valeur 'nufw'</entry>
		    </row>
		    <row>
			<entry>name</entry><entry>valeur alphanumérique, sans espaces.</entry>
		    </row>
		    <row>
			<entry>queue</entry><entry>valeur numérique. Permet d'utiliser le suivi de connexion fait par nufw pour les acls authentifiées et donc de ne pas générer les règles netfilter associées. La valeur représente le numéro de canal (queue) utilisé par NuFW pour recevoir les paquets IP du noyau et renvoyer les décisions. La valeur 0 convient si vous ne savez pas laquelle utiliser. Ce paramètre nécessite une version de NuFW postérieure à 1.2.0, un noyau >= 2.6.14, et les bibliothèques libnfnetlink/libnetfilter_conntrack/libnetfilter_queue.</entry>
		    </row>
		    </tbody>
		    </tgroup>
		</informaltable>
	    </section> <!--tag fw -->

	    <section><title>Tag interface</title>
		<informaltable frame="all">
		    <tgroup cols="2" colsep='1' rowsep='1'>
		    <colspec colname="c1"/>
		    <colspec colname="c2"/>
		    <thead>
		    <row>
		    <entry namest="c1" nameend="c2" align="center">Attributs</entry>
		    </row>
		    </thead>
		    <tbody>
		    <row>
			<entry>id</entry>
			<entry>valeur numérique</entry>
		    </row>
		    <row>
			<entry>name</entry><entry>valeur alphanumérique, sans espaces.</entry>
		    </row>
		    </tbody>
		    </tgroup>
		</informaltable>
	    </section> <!--tag interface -->

            <section><title>Tag address</title>
		<informaltable frame="all">
		    <tgroup cols="2" colsep='1' rowsep='1'>
		    <colspec colname="c1"/>
		    <colspec colname="c2"/>
		    <thead>
		    <row>
		    <entry namest="c1" nameend="c2" align="center">Attributs</entry>
		    </row>
		    </thead>
		    <tbody>
		    <row>
			<entry>id</entry>
			<entry>valeur numérique</entry>
		    </row>
                    <row>
			<entry>addr</entry><entry>addresse IP</entry>
		    </row>
                    </tbody>
		    </tgroup>
		</informaltable>
	    </section> <!--tag address -->

	    <section><title>Tag net</title>
		<informaltable frame="all">
		    <tgroup cols="2" colsep='1' rowsep='1'>
		    <colspec colname="c1"/>
		    <colspec colname="c2"/>
		    <thead>
		    <row>
		    <entry namest="c1" nameend="c2" align="center">Attributs</entry>
		    </row>
		    </thead>
		    <tbody>
		    <row>
			<entry>id</entry>
			<entry>valeur numérique</entry>
		    </row>
		    <row>
			<entry>addr</entry><entry>adresse de réseau</entry>
		    </row>
		    <row>
			<entry>name</entry><entry>valeur alphanumérique, sans espaces. La valeur 'IF' est interdite.</entry>
		    </row>
		    <row><entry>type</entry><entry>Parmi les valeurs ipv4, mark.</entry>
		    </row>
		    <!--<row><entry>zone</entry><entry>Parmi les valeurs internal, external, vpn.</entry>
		    </row>-->
		    <row><entry>remote</entry><entry>Addresse IP. Représente la machine à l'extrémité du vpn. Obligatoire quand l'attribut type a la valeur 'vpn'</entry>
		    </row>
		    <row><entry>mark</entry><entry>valeur numérique. Représente la marque utilisée pour les paquets venant du vpn. Obligatoire quand l'attribut type a la valeur 'vpn'.</entry>
		    </row>
		    </tbody>
		    </tgroup>
		</informaltable>
	    </section> <!-- tag net -->

	    <section><title>Tag connection</title>
		<informaltable frame="all">
		    <tgroup cols="2" colsep='1' rowsep='1'>
		    <colspec colname="c1"/>
		    <colspec colname="c2"/>
		    <thead>
		    <row>
		    <entry namest="c1" nameend="c2" align="center">Attributs</entry>
		    </row>
		    </thead>
		    <tbody>
			<row><entry>direct</entry><entry>Parmi les valeurs 0 ou 1.</entry>
			</row>
			<row><entry>fwid</entry><entry>Valeur numérique.</entry>
			</row>
			<row><entry>iface</entry><entry>Valeur numérique</entry>
			</row>
			<row><entry>dftgateway</entry><entry>adresse IP. Représente la route par défaut du firewall concerné par la connexion au réseau.</entry>
			</row>
                        <row><entry>gateway</entry><entry>adresse IP. Décrit la
                        passerelle (membre d'un réseau en accès direct) qui
                        permet de router les flux vers ce réseaux distant. (à
                        utiliser uniquement et obligatoirement avec
                        direct="0").</entry>
			</row>
                        <row><entry>snat</entry><entry>Si ce champ vaut 1, les
                        connections en provenance de ce réseau et à destination
                        d'Internet subiront du NAT source (masquage
                        IP).</entry></row>
		    </tbody>
		    </tgroup>
		</informaltable>
		<para>Avec la valeur 1 pour l'attribut direct, le firewall est
                directement relié au réseau. Avec la valeur 0, cela permet de
                représenter le fait que le firewall n'est pas connecté
                directement au réseau (routeur..), ou bien ajouter une connexion
                avec réseau de type vpn sur une interface existante. Chaque
                interface doit avoir au moins une connexion directe avec un réseau.</para>
		<para>La valeur de l'attribut fwid doit être égal à l'attribut id du firewall dont on veut représenter le lien avec le réseau.</para>
		<para>La valeur de l'attribut iface doit être égal à l'attribut id de l'interface du firewall qui est connectée au réseau.</para>
	    </section>
	</section>
    </section>
    <section>
	<title>Installation</title>
	<section><title>Prérequis</title>
	<para>Les prérequis pour utiliser nupyf sont:
	    <itemizedlist>
	    <listitem><para>python 2.3</para></listitem>
	    <listitem><para>IPy 0.50: ce package permet de manipuler des adresses IP, disponible sur <ulink url="http://cheeseshop.python.org/pypi/IPy/"><citetitle>CheeseShop webpage</citetitle></ulink>. Un <ulink url="http://www.inl.fr/Nuface,38.html"><citetitle>paquet</citetitle></ulink> debian est mis à disposition par INL.</para></listitem>
	    </itemizedlist>
	</para>
        </section>
	<section><title>Installation</title>
	<para>
	L'ensemble se compose du script principal nupyf.py et de modules python:
	<itemizedlist>
	<listitem><para>fw.py</para></listitem>
	<listitem><para>ipt.py</para></listitem>
	<listitem><para>nuacl.py</para></listitem>
	<listitem><para>nubackend.py</para></listitem>
	<listitem><para>nuldap.py</para></listitem>
	<listitem><para>nunat.py</para></listitem>
        <listitem><para>nuxml.py</para></listitem>
	</itemizedlist>
Dans le cadre d'un utilisation de nupyf par l'intermédiaire de nuface, les modules doivent être dans le même repertoire que le script principal.
	</para>
	</section>
    </section>

</article>