Copyright © 2005 INL
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 http://www.gnu.org/licenses/licenses.html#FDL
Historique des versions | |
---|---|
Version 0.1 | 2005/03/22 |
Première version | |
Version 0.1.1 | 2005/08/10 |
Ajout des champs "Modified" et "Comment". Quelques corrections. Première traduction complète en anglais. | |
Version 0.1.2 | 2005/12/31 |
Ajout de la notion de groupe d'Acls | |
Version 0.1.3 | 2006/02/10 |
Ajout des règles de nat | |
Version 0.2.1 | 2007/02/15 |
Documentation complétée pour nuface 1.2 et L7-filter | |
Version 0.2.2 | 2007/03/06 |
Documentation du mode standard et des implications d'une acl sans réseau | |
Version 0.3 | 2007/08/07 |
Adaptation de la documentation au schéma d'architecture de Nuface 2.0 |
Table des matières
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 :
auths : Les objets d'authentification qui peuvent être utilisés pour caractériser l'utilisateur à la source d'une connexion, avec NuFW.
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.
protocoles : Servent à définir divers paramètres techniques caractérisant une connexion.
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.
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.
os : ces éléments ne sont disponibles que pour un
pare-feu NuFW. Très semblables aux objets de type applications
, ils
permettent de réaliser un filtrage selon le système d'exploitation utilisé.
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.
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.
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 http://l7-filter.sourceforge.net. Si votre pare-feu supporte cette fonctionnalité, positionnez
$l7_firewall=true;
dans le fichier de configuration de nuface.
éléments de travail : des éléments temporaires, utilisés pour manipuler et copier facilement les entités gérées par l'interface.
Table des matières
L'interface de configuration du parefeu est constituée de plusieurs sections, dont la fonction est décrite ici.
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 :
Charger un fichier de configuration existant
Sauver la configuration dans un fichier, en écrasant un fichier existant ou en créant un nouveau fichier
Supprimer un fichier de configuration
Nettoyer la session : cette option vide toutes les modifications réalisées. Tous les objets créés sont effacés.
Règles de filtrage : Permet de générer les fichiers des règles de filtrage
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 :
nufw : charge les règles authentifiantes
standard : charge les règles de secours (non-authentifiantes)
Le mode standard est obtenu en substituant les règles authentifiés par des règles d'acceptation.
La page de gestion des droits d'accès et permissions, qui exploite des objets générés par les autres pages :
protocoles : la page de définition des protocoles
auths : la page de définition des objets authentifiants à la source des connexions
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.
ressources : la page de gestion des objets réseaux protégés par le parefeu
applications : pour un pare-feu authentifiant uniquement, et pour une ACL avec un sujet comportant un groupe NuFW, permet de filtrer par application.
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.
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.
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.
Cette page ne fonctionne que si un fichier valide d'acls a été préalablement chargé au moyen de la page d'Index.
Cette page permet :
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.
D'éditer les acls, en changeant :
Le nom de l'acl (champ informatif)
Le (groupe de) protocole(s) sur lequel l'acl porte
Le (groupe de) sujet(s) concerné par l'acl
Le (groupe de) ressource(s) protégé par l'acl
La décision appliquée à l'acl. Les décisions possibles sont :
Accept : accepter les connexions correspondant aux critères de cette acl.
Drop : bloquer tout paquet correspondant aux critère de cette acl. Faire comme si on ne l'avait jamais reçu.
Reject : même chose que Drop, mais en renvoyant un message de refus à l'envoyeur.
Ulog : journalisation avancée du paquet (par exemple, dans une base de données).
Log : journalisation standard (démon syslog)
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.
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.
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.
Par exemple, en terme de protocole, on peut regrouper les protocoles
HTTP et HTTPS dans une entité que l'on nommerait
Websurf
, et utiliser par la suite
cette entité pour générer des règles qui concerneront l'un ou l'autre des
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.
Les objets élémentaires définis pour les protocoles disposent des champs de données suivants:
name : le nom de l'élément (champ indicatif)
proto : le protocole concerné. Les valeurs possibles pour ce champ sont:
tcp
udp
icmp
dport : port destination (activé uniquement si le protocole choisi est
tcp
ou
udp
)
sport : port source (activé uniquement si le protocole choisi est
tcp
ou
udp
)
icmptype (activé uniquement si le protocole choisi est
icmp
)
l7rule : une règle de filtrage de niveau 7 pour
examiner le protocole. Cette option n'est présente que si vous
avez positionné
$l7_firewall=true;
dans le fichier de
configuration de nuface.
ID : un identifiant interne à l'interface, non modifiable
Des éléments de type "lien" peuvent également être créés sur cette page
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.
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.
Les objets élémentaires définis pour les ressources disposent des champs de données suivants :
name : le nom de l'élément (champ indicatif)
group : l'adresse réseau (peut être aussi bien une seule adresse IP qu'un adresse de réseau)
ID : un identifiant interne à l'interface, non modifiable
Des éléments de type "lien" peuvent également être créés sur cette page
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.
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.
Les objets élémentaires définis pour les ressources disposent des champs de données suivants :
name : le nom de l'élément (champ indicatif)
net : l'adresse réseau (peut être aussi bien une seule adresse IP qu'un adresse de réseau)
ID : un identifiant interne à l'interface, non modifiable
Des éléments de type "lien" peuvent également être créés sur cette page
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 :
applicationpath : Le nom complet d'une application, tel qu'annoncé par le client NuFW. Par exemple : "C:\Program Files\Firefox\firefox.exe"
Ce menu ne s'affiche pas si vous avez
$nufw_firewall = false
dans le fichier de configuration de nuface.
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.
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 :
OSName : Le nom d'un système d'exploitation, tel qu'annoncé par le client NuFW. Par exemple : "Windows Server 2003"
OSVersion : La version d'un système d'exploitation, tel qu'annoncée par le client NuFW. Par exemple : "3790-Service Pack 1"
Ce menu ne s'affiche pas si vous avez
$nufw_firewall = false
dans le fichier de configuration de nuface.
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.
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 :
duration : en précisant un nombre de secondes qui sera la durée maximum de la connexion choisie.
Ce menu ne s'affiche pas si vous avez
$nufw_firewall = false
dans le fichier de configuration de nuface.
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.
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 :
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.
stopday : en précisant le jour de la semaine (lundi à dimanche) concerné par la fin de la prise en compte de la règle.
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.
stophour : en précisant l'heure du jour (0h à 24h) concernée par la fin de la prise en compte de la règle.
Ce menu ne s'affiche pas si vous avez
$nufw_firewall = false
dans le fichier de configuration de nuface.
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.
Les règles L7 ne peuvent être positionnées que si vous disposez de :
un noyau patché par l7-filter. Voir http://l7-filter.sourceforge.net
$l7_firewall=true;
dans le fichier de configuration de nuface.
Les règles L7 sont des objets particuliers, qui contiennent leurs propres actions :
accept
: laisser passer
la connexion, par défaut
ulogaccept
: même chose
que accept, mais en journalisant la connexion dans ULOG
ulogdrop
: rejeter la
connexion, et journaliser l'évennement dans ULOG.
logaccept
: même chose
que accept, mais en journalisant la connexion dans
SYSLOG
logdrop
: rejeter la
connexion, et journaliser l'évennement dans SYSLOG.
Les objets L7Rule disposent également d'un attribut
logprefix
, qui devrait contenir le
texte que vous voulez ajouter quand la règle l7 sera appliquée.
Les objets L7rule contiennent des éléments
l7proto
, 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.
Les éléments L7proto mettent à disposition les attributs suivants :
name
: un nom textuel
au choix
ID
: un identifiant
numérique, positionné par nuface, qui ne peut être changé.
l7proto
: un
protocole, connu par l7-filter. La liste des protocoles reconnus par
l7-filter est disponible à l'adresse
http://l7-filter.sourceforge.net/protocols.
À 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
include/l7-protos
.
action
: que faire
quand le protocole
l7proto
est détecté. Les actions
possibles sont :
accept
ulogaccept
ulogdrop
logaccept
logdrop
prefix
: si l'
action
comporte de la journalisation
("log"), le préfixe que nuface doit ajouter au log.
Ce champ est, bien entendu, un champ au format texte.
modified
: date de
dernière modification de cet objet ; cet attribut est positionné
automatiquement par Nuface.
comment
: un champ de
commentaire, à utiliser à votre guise.
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.
La page de gestion des règles de translation d'adresses, permet de définir trois types de règles:
SNAT: règles permettant de redéfinir l'adresse de destination de la connexion.
DNAT: permet de traduire l'adresse source.
PNAT: permet de changer le port destination de la connexion.
Les objets élémentaires définis pour les règes de nat disposent tous des champs de données suivants:
name : le nom de l'élément (champ indicatif)
Adresse source: adresse source de la connexion
Adresse Dest.: adresse de destination de la connexion
Protocole : le protocole de la connexion. Les valeurs possibles pour ce champ sont:
tcp
udp
icmp
Sport: port source de la connexion (activé uniquement si le protocole choisi est
tcp
ou
udp
)
Dport: port destination de la connexion (activé uniquement si le protocole choisi est
tcp
ou
udp
)
Type icmp (activé uniquement si le protocole choisi est
icmp
)
Les adresses sources et destination peuvent aussi bien être une seule adresse IP qu'une adresse de réseau.
Pour les règles DNAT, le champ Réécrire destination en permet d'indiquer la nouvelle adresse et le nouveau port.
Le champ Réécrire source en des règles SNAT permet de spécifier la nouvelle adresse source qui doit être appliquée.
Pour les règles PNAT, c'est le champ Réécrire port en qui spécifie le nouveau port de destination de la connexion.
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 : Comment et modified.
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.
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:
sujets : contiennent des éléments qui définissent la source d'une connexion.
ressources : les éléments de ces conteneurs servent à définir les objets réseaux destination des connexions gérées par le pare-feu.
protocoles : les conteneurs de ce groupes définissent des protocoles.
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.
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 :
ipv4 : utilisables dans les conteneurs ressources, ils servent à définir des entités réseaux.
proto : utilisables uniquement dans les conteneurs de protocoles
nufw : utilisables uniquement dans les conteneurs auths, les éléments de ce type définissent des groupes d'utilisateurs authentifiés par NuFW.
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.
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:
Une ressource que nous nommerons "Internet", qui définira le réseau 0.0.0.0/0
Un protocole nommé "SMTP", qui définira le protocole TCP, port destination 25, port source supérieur à 1024
Une deuxième ressource, en l'occurence l'adresse IP de notre serveur de mails.
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.
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.
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.
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.
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.
Les Acls sont affichées avec un symbole géomètrique qui désigne leur groupe.
Note : Une Acl donnée ne peut appartenir qu'à un seul groupe.
Table des matières
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.
Uniquement utilisé dans les conteneurs auths
, 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 group
, qui contient l'identifiant de groupe à utiliser.
Réservé au conteneur protocols
, ce type d'élément définit un protocole, et comporte donc les variables suivantes: proto
qui prend l'une des valeurs tcp
, udp
ou icmp
. Selon les cas les variables dport
(port destination), sport
(port source) et icmptype
(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 1024:65535
, qui définit tous les ports entre 1024 et 65535 inclus.
Ce type d'élement ne peut être utilisé que dans des conteneurs
periods
. Il définit une période de
temps (plage de temps), et dispose des attributs :
periodtype
qui peut être dates
, days
, hours
ou duration
.
Selon le periodtype choisi, les champs
start
,
end
and
duration
peuvent également être
positionnés.
Ce type d'élement ne peut être utilisé que dans des conteneurs
applications
. Il définit une
application, et dispose des attributs :
ApplicationPath
, le nom complet de
l'application utilisée par le sujet, tel qu'annoncé par le client NuFW.
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
Copier dans la liste des éléments de
travail
. Ensuite, se positionner dans le conteneur
cible, et utiliser le bouton Ajouter
pour réaliser la copie.
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.
Pour créer un élément, il suffit de choisir la page
Éléments de travail
et d'utiliser le
bouton Nouvel élément
. À noter que le
type d'un élément ne peut jamais être modifié. Chaque élément garde son
type à vie.
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.