<?xml version='1.0' encoding='iso-8859-1'?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> <book><title>NuFace : Manuel de l'administrateur</title> <bookinfo> <author> <firstname>Vincent</firstname> <surname>Deffontaines</surname> <email>vincent.deffontaines@inl.no_spam.fr</email> </author> <copyright> <year>2005</year> <holder>INL</holder> </copyright> <revhistory> <revision> <revnumber>0.1</revnumber> <date>2005/03/22</date> <revdescription> <para>Première version</para> </revdescription> </revision> <revision> <revnumber>0.1.1</revnumber> <date>2005/08/10</date> <revdescription> <para>Ajout des champs "Modified" et "Comment". Quelques corrections. Première traduction complète en anglais.</para> </revdescription> </revision> <revision> <revnumber>0.1.2</revnumber> <date>2005/12/31</date> <revdescription> <para>Ajout de la notion de groupe d'Acls</para> </revdescription> </revision> <revision> <revnumber>0.1.3</revnumber> <date>2006/02/10</date> <revdescription> <para>Ajout des règles de nat</para> </revdescription> </revision> <revision> <revnumber>0.2.1</revnumber> <date>2007/02/15</date> <revdescription> <para>Documentation complétée pour nuface 1.2 et L7-filter</para> </revdescription> </revision> <revision> <revnumber>0.2.2</revnumber> <date>2007/03/06</date> <revdescription> <para>Documentation du mode standard et des implications d'une acl sans réseau</para> </revdescription> </revision> <revision> <revnumber>0.3</revnumber> <date>2007/08/07</date> <revdescription> <para>Adaptation de la documentation au schéma d'architecture de Nuface 2.0</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> </bookinfo> <chapter><title>Présentation générale de Nuface</title> <para> L'interface Nuface permet de configurer intuitivement et efficacement un firewall disposant des extensions de filtrage NuFW (EdenWall). La philosophie de travail utilise les objets suivants : <itemizedlist> <listitem><para>auths : Les objets d'authentification qui peuvent être utilisés pour caractériser l'utilisateur à la source d'une connexion, avec NuFW. </para> </listitem> <listitem><para>ressources : L'ensemble des objets réseaux (sources et destinations) gérés par le pare-feu. Par défaut, lorsque vous ouvrez un fichier dans Nuface, l'interface crée quelques objets par défaut, qui correspondent à la topologie du réseau.</para> </listitem> <listitem><para>protocoles : Servent à définir divers paramètres techniques caractérisant une connexion.</para> </listitem> <listitem><para>acls : chaque acl utilise un élément de chaque classe définie ci-dessus. Une seule acl peut permettre de générer une ou plusieurs règles de filtrage sur le firewall.</para> </listitem> <listitem><para>applications : ces éléments ne sont disponibles que pour un pare-feu NuFW. Ces objets permettent de réaliser un filtrage selon l'application utilisée par le sujet de la connexion.</para></listitem> <listitem><para>os : ces éléments ne sont disponibles que pour un pare-feu NuFW. Très semblables aux objets de type <computeroutput>applications</computeroutput>, ils permettent de réaliser un filtrage selon le système d'exploitation utilisé.</para></listitem> <listitem><para>durées : Permet de préciser des restrictions temporelles dans les ACLs, portant sur la durée maximale d'une connexion. Utilisable uniquement sur un pare-feu NuFW, avec des règles authentifiées.</para></listitem> <listitem><para>periodicités : Permet de préciser des restrictions temporelles dans les ACLs, portant sur l'heure et le jour autorisés pour réaliser la connexion. Utilisable uniquement sur un pare-feu NuFW, avec des règles authentifiées.</para></listitem> <listitem><para>règles l7 : permet de réaliser une inspection des flux, au moyen de l7-filter, un patch pour le noyau Linux, disponible à l'URL <ulink url="http://l7-filter.sourceforge.net"><citetitle>http://l7-filter.sourceforge.net</citetitle></ulink>. Si votre pare-feu supporte cette fonctionnalité, positionnez <screen>$l7_firewall=true;</screen> dans le fichier de configuration de nuface.</para></listitem> <listitem><para>éléments de travail : des éléments temporaires, utilisés pour manipuler et copier facilement les entités gérées par l'interface.</para> </listitem> </itemizedlist> </para> </chapter> <chapter><title>Les éléments de l'interface</title> <para>L'interface de configuration du parefeu est constituée de plusieurs sections, dont la fonction est décrite ici.</para> <section><title>Index</title> <para>La page nommée Index permet de gérer les fichiers de configuration générés avec Nuface, et de réaliser plusieurs tâches systèmes : <itemizedlist> <listitem><para>Charger un fichier de configuration existant</para></listitem> <listitem><para>Sauver la configuration dans un fichier, en écrasant un fichier existant ou en créant un nouveau fichier</para></listitem> <listitem><para>Supprimer un fichier de configuration</para></listitem> <listitem><para>Nettoyer la session : cette option vide toutes les modifications réalisées. Tous les objets créés sont effacés.</para></listitem> <listitem><para>Règles de filtrage : Permet de générer les fichiers des règles de filtrage</para></listitem> <listitem><para>Recharger les règles du parefeu : met en production les règles générées par l'option précédente. Deux options sont proposées : <itemizedlist> <listitem><para>nufw : charge les règles authentifiantes</para></listitem> <listitem><para>standard : charge les règles de secours (non-authentifiantes)</para></listitem> </itemizedlist> </para></listitem> </itemizedlist> <remark>Le mode standard est obtenu en substituant les règles authentifiés par des règles d'acceptation.</remark> </para> </section> <section><title>Acls</title> <para>La page de gestion des droits d'accès et permissions, qui exploite des objets générés par les autres pages : <itemizedlist> <listitem><para>protocoles : la page de définition des protocoles</para></listitem> <listitem><para>auths : la page de définition des objets authentifiants à la source des connexions</para></listitem> <listitem><para>sujets : la page de gestion des objets réseaux, à la source des connexions. Depuis Nuface 2.0, cette page est la même que la page des ressources.</para></listitem> <listitem><para>ressources : la page de gestion des objets réseaux protégés par le parefeu</para></listitem> <listitem><para>applications : pour un pare-feu authentifiant uniquement, et pour une ACL avec un sujet comportant un groupe NuFW, permet de filtrer par application.</para></listitem> <listitem><para>OS : pour un pare-feu authentifiant uniquement, et pour une ACL avec un sujet comportant un groupe NuFW, permet de filtrer par système d'exploitation.</para></listitem> <listitem><para>durée : pour un pare-feu authentifiant uniquement, et pour une ACL avec un sujet comportant un groupe NuFW, permet de limiter la durée de vie d'une connexion.</para></listitem> <listitem><para>périodicité : pour un pare-feu authentifiant uniquement, et pour une ACL avec un sujet comportant un groupe NuFW, permet de spécifier des critères (heure, jour de la semaine) sur laquelle faire porter la semaine.</para></listitem> </itemizedlist> Cette page ne fonctionne que si un fichier valide d'acls a été préalablement chargé au moyen de la page d'Index. </para> <para>Cette page permet : <itemizedlist> <listitem><para>De modifier l'ordre des acls. Dans la vue par réseaux, plus une acl est haute, plus cette acl a la primeur sur celles qui suivent. En d'autres termes, si deux acls se contredisent, celle qui est le plus haut est appliquée.</para></listitem> <listitem><para>D'éditer les acls, en changeant : <itemizedlist> <listitem><para>Le nom de l'acl (champ informatif)</para></listitem> <listitem><para>Le (groupe de) protocole(s) sur lequel l'acl porte</para></listitem> <listitem><para>Le (groupe de) sujet(s) concerné par l'acl</para></listitem> <listitem><para>Le (groupe de) ressource(s) protégé par l'acl</para></listitem> <listitem><para>La décision appliquée à l'acl. Les décisions possibles sont : <itemizedlist> <listitem><para>Accept : accepter les connexions correspondant aux critères de cette acl.</para></listitem> <listitem><para>Drop : bloquer tout paquet correspondant aux critère de cette acl. Faire comme si on ne l'avait jamais reçu.</para></listitem> <listitem><para>Reject : même chose que Drop, mais en renvoyant un message de refus à l'envoyeur.</para></listitem> <listitem><para>Ulog : journalisation avancée du paquet (par exemple, dans une base de données).</para></listitem> <listitem><para>Log : journalisation standard (démon syslog)</para></listitem> </itemizedlist> Dans le cas d'une connexion authentifiée, seules les deux premières décisions sont applicables. Le choix de Log ou Ulog ne correspond pas à une décision. Le paquet est journalisé, mais une décision doit être statuée sur ce paquet par une autre acl. </para></listitem> </itemizedlist> </para></listitem> </itemizedlist> </para> <para> Attention aux problèmes d'ordres sur vos ACLs. D'une manière générale, essayez toujours de positionner en premier les ACLs particulières, et en dernier les ACLs plus générales. Par exemple, si vous voulez autoriser le traffic HTTP depuis l'adresse IP 10.2.3.4 (acl 1), et autoriser le traffic HTTP depuis les utilisateurs authentifiés sur le réseau 10.0.0.0/8 (acl 2), il est important que l'ACL 1 soit ordonnée avant l'ACL 2, sans quoi l'ACL 2 ne sera jamais appliquée. </para> </section> <section><title>Protocoles</title> <para>La page de définition des protocoles, qui liste tous les protocoles définis par l'interface. Comme pour tous les objets gérés par l'interface, il est possible de créer des objets abstraits, résultant du regroupement d'objets de base.</para> <para>Par exemple, en terme de protocole, on peut regrouper les protocoles HTTP et HTTPS dans une entité que l'on nommerait <computeroutput>Websurf</computeroutput>, et utiliser par la suite cette entité pour générer des règles qui concerneront l'un ou l'autre des protocoles.</para> <para>Cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> <para>Les objets élémentaires définis pour les protocoles disposent des champs de données suivants: <itemizedlist> <listitem><para>name : le nom de l'élément (champ indicatif)</para></listitem> <listitem><para>proto : le protocole concerné. Les valeurs possibles pour ce champ sont: <itemizedlist> <listitem><para>tcp</para></listitem> <listitem><para>udp</para></listitem> <listitem><para>icmp</para></listitem> </itemizedlist> </para></listitem> <listitem><para>dport : port destination (activé uniquement si le protocole choisi est <computeroutput>tcp</computeroutput> ou <computeroutput>udp</computeroutput>)</para></listitem> <listitem><para>sport : port source (activé uniquement si le protocole choisi est <computeroutput>tcp</computeroutput> ou <computeroutput>udp</computeroutput>)</para></listitem> <listitem><para>icmptype (activé uniquement si le protocole choisi est <computeroutput>icmp</computeroutput>)</para></listitem> <listitem><para>l7rule : une règle de filtrage de niveau 7 pour examiner le protocole. Cette option n'est présente que si vous avez positionné <computeroutput>$l7_firewall=true;</computeroutput> dans le fichier de configuration de nuface. </para></listitem> <listitem><para>ID : un identifiant interne à l'interface, non modifiable</para></listitem> </itemizedlist> </para> <para>Des éléments de type "lien" peuvent également être créés sur cette page</para> </section> <section><title>Auths</title> <para>La page de définition des objets authentifiants, qui liste tous les groupes d'utilisateurs gérés par l'interface. Comme pour tous les objets gérés par l'interface, il est possible de créer des objets abstraits, résultant du regroupement d'objets de base. </para> <para>Comme pour les protocoles, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> <para>Les objets élémentaires définis pour les ressources disposent des champs de données suivants : <itemizedlist> <listitem><para>name : le nom de l'élément (champ indicatif)</para></listitem> <listitem><para>group : l'adresse réseau (peut être aussi bien une seule adresse IP qu'un adresse de réseau)</para></listitem> <listitem><para>ID : un identifiant interne à l'interface, non modifiable</para></listitem> </itemizedlist> </para> <para>Des éléments de type "lien" peuvent également être créés sur cette page</para> </section> <section><title>Ressources</title> <para>La page de définition des ressources, qui liste tous les objets réseaux gérés par l'interface. Comme pour tous les objets gérés par l'interface, il est possible de créer des objets abstraits, résultant du regroupement d'objets de base. </para> <para>Comme pour les protocoles, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> <para>Les objets élémentaires définis pour les ressources disposent des champs de données suivants : <itemizedlist> <listitem><para>name : le nom de l'élément (champ indicatif)</para></listitem> <listitem><para>net : l'adresse réseau (peut être aussi bien une seule adresse IP qu'un adresse de réseau)</para></listitem> <listitem><para>ID : un identifiant interne à l'interface, non modifiable</para></listitem> </itemizedlist> </para> <para>Des éléments de type "lien" peuvent également être créés sur cette page</para> </section> <section><title>Applications</title> <para>Le filtrage par Applications ne peut être utilisé qu'avec des ACLs qui traitent des sujets NuFW. Les applications permettent de positionner un filtrage selon : <itemizedlist> <listitem><para>applicationpath : Le nom complet d'une application, tel qu'annoncé par le client NuFW. Par exemple : "C:\Program Files\Firefox\firefox.exe"</para></listitem> </itemizedlist> </para> <para>Ce menu ne s'affiche pas si vous avez <screen>$nufw_firewall = false</screen> dans le fichier de configuration de nuface.</para> <para>Comme pour les protocoles et les sujets, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> </section> <section><title>OS</title> <para>Le filtrage par système d'exploitation ne peut être utilisé qu'avec des ACLs qui traitent des sujets NuFW. Les OS permettent de positionner un filtrage selon : <itemizedlist> <listitem><para>OSName : Le nom d'un système d'exploitation, tel qu'annoncé par le client NuFW. Par exemple : "Windows Server 2003"</para></listitem> <listitem><para>OSVersion : La version d'un système d'exploitation, tel qu'annoncée par le client NuFW. Par exemple : "3790-Service Pack 1"</para></listitem> </itemizedlist> </para> <para>Ce menu ne s'affiche pas si vous avez <screen>$nufw_firewall = false</screen> dans le fichier de configuration de nuface.</para> <para>Comme pour les protocoles et les sujets, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> </section> <section><title>Durées</title> <para>Le filtrage par durées ne peut être utilisé qu'avec des ACLs qui traitent des sujets NuFW. Les durées permettent de positionner un filtrage selon : <itemizedlist> <listitem><para>duration : en précisant un nombre de secondes qui sera la durée maximum de la connexion choisie.</para></listitem> </itemizedlist> </para> <para>Ce menu ne s'affiche pas si vous avez <screen>$nufw_firewall = false</screen> dans le fichier de configuration de nuface.</para> <para>Comme pour les protocoles et les sujets, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> </section> <section><title>Périodicités</title> <para>Le filtrage par périodicités ne peut être utilisé qu'avec des ACLs qui traitent des sujets NuFW. Les durées permettent de positionner un filtrage selon : <itemizedlist> <listitem><para>startday : en précisant le jour de la semaine (lundi à dimanche) concerné par le début de la prise en compte de la règle.</para></listitem> <listitem><para>stopday : en précisant le jour de la semaine (lundi à dimanche) concerné par la fin de la prise en compte de la règle.</para></listitem> <listitem><para>starthour : en précisant l'heure du jour (0h à 24h) concernée par le début de la prise en compte de la règle.</para></listitem> <listitem><para>stophour : en précisant l'heure du jour (0h à 24h) concernée par la fin de la prise en compte de la règle.</para></listitem> </itemizedlist> </para> <para>Ce menu ne s'affiche pas si vous avez <screen>$nufw_firewall = false</screen> dans le fichier de configuration de nuface.</para> <para>Comme pour les protocoles et les sujets, cette page définit des conteneurs, qui sont par essence des objets sans caractéristique autre qu'un nom. Chaque conteneur détient un ou plusieurs objets élémentaires, qui peuvent définir des données eux-mêmes, ou bien constituer des liens vers d'autres conteneurs. De la sorte, on peut combiner les objets à volonté sans avoir à redéfinir des données déja entrées.</para> </section> <section><title>Règles l7</title> <para>Les règles L7 ne peuvent être positionnées que si vous disposez de : <itemizedlist> <listitem><para>un noyau patché par l7-filter. Voir <ulink url="http://l7-filter.sourceforge.net"><citetitle>http://l7-filter.sourceforge.net</citetitle></ulink></para></listitem> <listitem><para> <screen>$l7_firewall=true;</screen> dans le fichier de configuration de nuface.</para></listitem> </itemizedlist> </para> <para>Les règles L7 sont des objets particuliers, qui contiennent leurs propres actions : <itemizedlist> <listitem><para><computeroutput>accept</computeroutput> : laisser passer la connexion, par défaut</para></listitem> <listitem><para><computeroutput>ulogaccept</computeroutput> : même chose que accept, mais en journalisant la connexion dans ULOG</para></listitem> <listitem><para><computeroutput>ulogdrop</computeroutput> : rejeter la connexion, et journaliser l'évennement dans ULOG.</para></listitem> <listitem><para><computeroutput>logaccept</computeroutput> : même chose que accept, mais en journalisant la connexion dans SYSLOG</para></listitem> <listitem><para><computeroutput>logdrop</computeroutput> : rejeter la connexion, et journaliser l'évennement dans SYSLOG.</para></listitem> </itemizedlist> </para> <para> Les objets L7Rule disposent également d'un attribut <computeroutput>logprefix</computeroutput> , qui devrait contenir le texte que vous voulez ajouter quand la règle l7 sera appliquée. </para> <para> Les objets L7rule contiennent des éléments <computeroutput>l7proto</computeroutput>, qui doit préciser les correspondances de protocole, ainsi que des décisions. En général, la décision d'un objet l7proto est contraire à la décision par défaut du conteneur l7rule. </para> <para>Les éléments L7proto mettent à disposition les attributs suivants : <itemizedlist> <listitem><para><computeroutput>name</computeroutput> : un nom textuel au choix</para></listitem> <listitem><para><computeroutput>ID</computeroutput> : un identifiant numérique, positionné par nuface, qui ne peut être changé.</para></listitem> <listitem><para><computeroutput>l7proto</computeroutput> : un protocole, connu par l7-filter. La liste des protocoles reconnus par l7-filter est disponible à l'adresse <ulink url="http://l7-filter.sourceforge.net/protocols"><citetitle>http://l7-filter.sourceforge.net/protocols</citetitle></ulink>. À noter que la liste par défaut fournie par nuface n'est qu'un sous ensemble de la liste en ligne : ce sous-ensemble a été choisi par l'équipe de développement de Nuface. Vous pouvez l'étendre en éditant le fichier texte <computeroutput>include/l7-protos</computeroutput>. </para></listitem> <listitem><para><computeroutput>action</computeroutput> : que faire quand le protocole <computeroutput>l7proto</computeroutput> est détecté. Les actions possibles sont : <itemizedlist><listitem><para>accept</para></listitem><listitem><para>ulogaccept</para></listitem><listitem><para>ulogdrop</para></listitem><listitem><para>logaccept</para></listitem><listitem><para>logdrop</para></listitem></itemizedlist> </para> </listitem> <listitem><para><computeroutput>prefix</computeroutput> : si l' <computeroutput>action</computeroutput> comporte de la journalisation ("log"), le préfixe que nuface doit ajouter au log. Ce champ est, bien entendu, un champ au format texte.</para> </listitem> <listitem><para><computeroutput>modified</computeroutput> : date de dernière modification de cet objet ; cet attribut est positionné automatiquement par Nuface. </para></listitem> <listitem><para><computeroutput>comment</computeroutput> : un champ de commentaire, à utiliser à votre guise. </para></listitem> </itemizedlist> </para> <para><screen>Note : les décisions liées aux règles L7 sont orthogonales aux décisions positionnées au niveau des ACL. Par exemple, une ACL d'acceptation de HTTP peut comporter un protocole "tcp_80" où une règle L7 serait positionnée avec le protocole 'HTTP'. La règle L7 peut bloquer la connexion si celle-ci fait transiter un protocole non HTTP, même si l'ACL a comme décision ACCEPT. </screen></para> </section> <section><title>Nat</title> <para>La page de gestion des règles de translation d'adresses, permet de définir trois types de règles: <itemizedlist> <listitem><para>SNAT: règles permettant de redéfinir l'adresse de destination de la connexion.</para></listitem> <listitem><para>DNAT: permet de traduire l'adresse source.</para></listitem> <listitem><para>PNAT: permet de changer le port destination de la connexion.</para></listitem> </itemizedlist> </para> <para> Les objets élémentaires définis pour les règes de nat disposent tous des champs de données suivants: <itemizedlist> <listitem><para>name : le nom de l'élément (champ indicatif)</para></listitem> <listitem><para>Adresse source: adresse source de la connexion</para></listitem> <listitem><para>Adresse Dest.: adresse de destination de la connexion</para></listitem> <listitem><para>Protocole : le protocole de la connexion. Les valeurs possibles pour ce champ sont: <itemizedlist> <listitem><para>tcp</para></listitem> <listitem><para>udp</para></listitem> <listitem><para>icmp</para></listitem> </itemizedlist> </para></listitem> <listitem><para>Sport: port source de la connexion (activé uniquement si le protocole choisi est <computeroutput>tcp</computeroutput> ou <computeroutput>udp</computeroutput>)</para></listitem> <listitem><para>Dport: port destination de la connexion (activé uniquement si le protocole choisi est <computeroutput>tcp</computeroutput> ou <computeroutput>udp</computeroutput>)</para></listitem> <listitem><para>Type icmp (activé uniquement si le protocole choisi est <computeroutput>icmp</computeroutput>)</para></listitem> </itemizedlist> Les adresses sources et destination peuvent aussi bien être une seule adresse IP qu'une adresse de réseau. </para> <para> Pour les règles DNAT, le champ <emphasis>Réécrire destination en</emphasis> permet d'indiquer la nouvelle adresse et le nouveau port.</para> <para>Le champ <emphasis>Réécrire source en</emphasis> des règles SNAT permet de spécifier la nouvelle adresse source qui doit être appliquée.</para> <para>Pour les règles PNAT, c'est le champ <emphasis>Réécrire port en</emphasis> qui spécifie le nouveau port de destination de la connexion.</para> </section> <section><title>Suivi des modifications</title> <para>Depuis la version 0.9.3 de Nuface, toutes les entités de l'interface, conteneurs et éléments, disposent de deux champs supplémentaires : <emphasis>Comment</emphasis> et <emphasis>modified</emphasis>.</para> <section><title>Le champ Comment</title> <para>Ce champ permet à l'administrateur d'indiquer des informations afin de faciliter la vie des objets de l'interface et leur suivi. Ce champ n'est pas utilisé par le moteur de l'interface, et sert uniquement aux utilisateurs de l'interface. </para> </section> <section><title>Le champ Modified</title> <para>Ce champ est positionné par Nuface, pour chaque entité de l'interface. Il est mis à jour quand l'entité fait l'objet d'une modification. L'administrateur ne peut pas changer lui-même la valeur de ce champ. </para> </section> </section> </chapter> <chapter><title>Les objets utilisés par l'interface</title> <section><title>Conteneurs</title> <section><title>Définition</title> <para> Les sujets, les ressources et les protocoles sont organisés par conteneurs. Un conteneur est une coquille, qui contient un ou plusieurs éléments. Les conteneurs servent à structurer les acls, et ne contiennent jamais eux-même de données. Il existe trois types de conteneurs: <itemizedlist> <listitem><para>sujets : contiennent des éléments qui définissent la source d'une connexion.</para></listitem> <listitem><para>ressources : les éléments de ces conteneurs servent à définir les objets réseaux destination des connexions gérées par le pare-feu.</para></listitem> <listitem><para>protocoles : les conteneurs de ce groupes définissent des protocoles.</para></listitem> </itemizedlist> </para> </section> <section><title>Fonctionnement</title> <para>On essaye toujours de créer des conteneurs qui correspondent à une entité cohérente. Par exemple, on peut assembler dans un conteneur deux adresses de réseaux sources, qui constituent à elles deux l'adresse de notre Intranet. On peut faire la même chose avec les protocoles, afin de créer un "groupe" de protocoles qui correpondrait à un ensemble de flux à ouvrir pour le bon fonctionnement d'une application.</para> </section> </section> <section><title>Éléments</title> <section><title>Définition</title> <para>Les éléments sont les briques de bases d'un jeu d'acls. Chaque élément correpond à une entité, par exemple, une adresse IP destination, ou bien un protocole. Il existe plusieurs types d'éléments : <itemizedlist> <listitem><para>ipv4 : utilisables dans les conteneurs ressources, ils servent à définir des entités réseaux.</para></listitem> <listitem><para>proto : utilisables uniquement dans les conteneurs de protocoles</para></listitem> <listitem><para>nufw : utilisables uniquement dans les conteneurs auths, les éléments de ce type définissent des groupes d'utilisateurs authentifiés par NuFW.</para></listitem> <listitem><para>link : utilisables dans tous les conteneurs, les objets de ce type servent à agglomérer plusieurs conteneurs en un seul pour construire un groupe plus complexe.</para></listitem> </itemizedlist> </para> </section> <section><title>Exemples</title> <para>Si l'on veut construire une acl autorisant les accès depuis Internet sur notre serveur de mails en DMZ, nous devrons manier les éléments suivants: <itemizedlist> <listitem><para>Une ressource que nous nommerons "Internet", qui définira le réseau 0.0.0.0/0</para></listitem> <listitem><para>Un protocole nommé "SMTP", qui définira le protocole TCP, port destination 25, port source supérieur à 1024</para></listitem> <listitem><para>Une deuxième ressource, en l'occurence l'adresse IP de notre serveur de mails.</para></listitem> </itemizedlist> Chacun de ces éléments sera stocké dans un conteneur de son type, et ce sont les conteneurs qui seront agencés avec une décision ("accept") par une acl. </para> <para>Dans un exemple plus complexe, on peut souhaiter autoriser un réseau à surfer sur internet, en HTTP ou HTTPS. Un tel cas justifie l'utilisation d'un lien dans un conteneur de protocoles. En effet, les protocoles HTTP et HTTPS sont définis par défaut et disposent chacun de leur propre conteneur. Nous allons créer un conteneur nommé "websurf" et qui contiendra deux liens, vers les conteneurs HTTP et HTTPS. Ainsi, l'acl construite avec le conteneur de protocoles "websurf" concernera toute connexion HTTP ou HTTPS. </para> <para>Les liens peuvent être utilisés dans chacun des conteneurs, et permettent comme nous l'avons vu de générer des conteneurs plus complexes. </para> </section> </section> <section><title>Acls</title> <section><title>Définition</title> <para>Une ACL est un agglomérat d'un conteneur auths, de ressources, et éventuellement de protocoles. L'ACL comporte également une décision. Les ACLs fonctionnant à base des conteneurs définis ci-avant, elles sont en général construites en dernier, en utilisant les objets authentifiants, protocoles et ressources définis au préalable. L'ordre des ACLs est également important : les premières ACLs seront appliquées en premier sur les objets les concernant, et leur décision sera prioritaire sur une ACL avec une décision différente concernant la même connexion, mais définie plus bas.</para> </section> <section><title>Groupes</title> <para>Les groupes sont une entité qui permettent d'activer ou de désactiver en masse un ensemble d'Acls. Par défaut, toutes les Acls appartiennent au groupe par défaut, qui est également activé par défaut. Pour créer un groupe, se positionner dans la page de gestion des Acls et utiliser le formulaire en haut de la page. Pour changer une Acl de groupe, il suffit d'éditer cette Acl et de lui associer le groupe voulu. Les Acls appartenant à des groupes désactivés sont affichées en gris dans la page Acl. Elles ne seront pas prises en compte lors de la prochaine génération des règles de filtrage.</para> <para>Les Acls sont affichées avec un symbole géomètrique qui désigne leur groupe.</para> <para>Note : Une Acl donnée ne peut appartenir qu'à un seul groupe.</para> </section> </section> </chapter> <chapter><title>Détails sur les éléments</title> <section><title>Les types d'élements</title> <section><title>Le type ipv4</title> <para>Les éléments de type IPv4 contiennent un attribut net, qui doit contenir un object réseau. Un objet réseau est soir une adresse IP (192.168.33.1), ou une adresse de réseau (telle que 10.0.0.0/255.0.0.0 ou au format CIDR 10.0.0.0/8). Internet est toujours définie en tant que 0.0.0.0/0 et est auto-générée par Nuface si l'objet n'existe pas à l'ouverture du jeu de règles. Après avoir créé ou modifié un objet réseau, Nuface affiche le nom du Network auquel le nouvel élément appartient, selong la topologie du réseau.</para> </section> <section><title>Le type nufw</title> <para>Uniquement utilisé dans les conteneurs <computeroutput>auths</computeroutput>, ce type sert à spécifier un groupe d'utilisateurs NuFW. Les acls utilisant ce conteneur concerneront alors seulement les utilisateurs NuFW appartenant à ce groupe. Les variables définies pour ce type sont <computeroutput>group</computeroutput>, qui contient l'identifiant de groupe à utiliser. </para> </section> <section><title>Le type proto</title> <para>Réservé au conteneur <computeroutput>protocols</computeroutput>, ce type d'élément définit un protocole, et comporte donc les variables suivantes: <computeroutput>proto</computeroutput> qui prend l'une des valeurs <computeroutput>tcp</computeroutput>, <computeroutput>udp</computeroutput> ou <computeroutput>icmp</computeroutput>. Selon les cas les variables <computeroutput>dport</computeroutput> (port destination), <computeroutput>sport</computeroutput> (port source) et <computeroutput>icmptype</computeroutput> (type icmp) peuvent également être utilisées. En ce qui concerne les définitions de numéros de ports, des plages peuvent bien sûr être spécifiées, comme par exemple <computeroutput>1024:65535</computeroutput>, qui définit tous les ports entre 1024 et 65535 inclus. </para> </section> <section><title>le type period</title> <para>Ce type d'élement ne peut être utilisé que dans des conteneurs <computeroutput>periods</computeroutput>. Il définit une période de temps (plage de temps), et dispose des attributs : <computeroutput>periodtype</computeroutput> qui peut être <computeroutput>dates</computeroutput>, <computeroutput>days</computeroutput>, <computeroutput>hours</computeroutput> ou <computeroutput>duration</computeroutput>. Selon le periodtype choisi, les champs <computeroutput>start</computeroutput>, <computeroutput>end</computeroutput> and <computeroutput>duration</computeroutput> peuvent également être positionnés. </para> </section> <section><title>Le type app</title> <para>Ce type d'élement ne peut être utilisé que dans des conteneurs <computeroutput>applications</computeroutput>. Il définit une application, et dispose des attributs : <computeroutput>ApplicationPath</computeroutput>, le nom complet de l'application utilisée par le sujet, tel qu'annoncé par le client NuFW. </para> </section> <section><title>Le type link</title> <para>Disponible pour tous les conteneurs, ce type permet de créer un lien vers un autre conteneur du même type. Utiliser ce lien revient à utiliser tout le contenu dudit conteneur, ce qui permet donc d'agglomérer des données dans un seul conteneur. </para> </section> </section> <section><title>Comment créer un élément</title> <section><title>Copie d'un élément existant</title> <para>Il est facile de copier un élément d'un conteneur vers un autre, ou d'une page vers une autre (par exemple, copie d'un objet de type ipv4 depuis la page ressources vers la page de sujets). Pour ce faire, il suffit de sélectionner l'élément à copier, et d'utiliser le bouton <computeroutput>Copier dans la liste des éléments de travail</computeroutput>. Ensuite, se positionner dans le conteneur cible, et utiliser le bouton <computeroutput>Ajouter</computeroutput> pour réaliser la copie.</para> <para>Les éléments de travail sont uniquement des éléments temporaires à la session, qui servent à la copie et à la création des briques élémentaires utilisées par l'interface.</para> </section> <section><title>Création d'un élément à partir de rien</title> <para>Pour créer un élément, il suffit de choisir la page <computeroutput>Éléments de travail</computeroutput> et d'utiliser le bouton <computeroutput>Nouvel élément</computeroutput>. À noter que le type d'un élément ne peut jamais être modifié. Chaque élément garde son type à vie.</para> <para>Une bonne pratique de travail consiste à créer dans les éléments de travail un élément vide de chaque type, et d'utiliser selon les besoins chacun des éléments en les copiants dans les pages de protocoles, sujets ou ressources.</para> </section> </section> </chapter> </book>