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/06/07 |
Version 0.1.1 | 2006/02/10 |
suppression des zones, et ajout de l'attribut dftgateway |
Table des matières
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.
./nupyf.py [options] firewall_file.xml acls_file.xml
Les options disponibles sont:
--dispatch dispatch.txt: écrit les règles de dispatch dans le fichier dispatch.txt
--forward fwd.txt: écrit les règles de forward dans le fichier fwd.txt
--input in.txt: écrit les règles d'entrée dans le fichier in.txt
--output out.txt: écrit les règles de sortie dans le fichier out.txt
--nat nat.txt: écrit les règles de nat dans le fichier nat.txt
--rescue: active le mode standard: génération de règles pour un parefeu non nufw
--ulog: active l'utilisation de la cible ULOG pour les logs iptables
-s, --server: adresse du serveur ldap
-u, --user: utilisateur pour se connecter au serveur ldap. Ex: 'cn=admin,dc=inl,dc=fr'
-p, --paswd: mot de passe pour se connecter au serveur ldap
-a, --ask: demander à l'utilisateur de taper le mot de passe ldap
-b, --basedn: basedn où stocker les acls nufw dans l'arbre ldap
--dumpldap obj_ldap: dump les informations ldap construites à partir du fichier xml dans le fichier obj_ldap
--loadldap obj_ldap: charge les informations ldap venant d'un fichier xml à partir du fichier obj_ldap
--config: chemin vers le fichier de configuration de nupyf
--iptables: chemin vers la commande iptables, $ipt par défaut.
-h, --help
Pour les options --dispatch, --forward, --input, --output et --nat définissant des fichiers de sortie, la valeur "-" représente la sortie standard.
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.
Dans l'arbre ldap, les cn des règles dans l'arbre ldap sont définis de la façon suivante: <nom-sujet_nom-ressource_nom-protocole_id_random>. 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).
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:
{ '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', }
Les lignes débutant par le caractère # sont considérées comme des commentaires.
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.
Le format de description du réseau utilise les tags xml suivants:
Description des interfaces du firewall
adresse et nom d'une interface réseau d'un firewall.
encapsule un ou plusieurs tags interface.
décrit le type et le nom du'un firewall.
encapsule les tags précédents.
Description des réseaux
décrit la relation entre une interface d'un firewall et un réseau.
spécifie un réseau. Encapsule les tags connection.
encapsule les deux tags précédents.
Le tag network encapsule les tags précédemment cités.
Cet exemple représente un firewall possédant trois interfaces et reliés à quatre réseaux:
l'interface eth0 reliée au réseau LAN_1
l'interface eth1 reliée au réseau DMZ
l'interface eth2 reliée aux réseaux INTERNET et VPN_1
LAN_1 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.
<?xml version="1.0"?> <network> <fws> <fw id="1" type="nufw" name="central"> <interfaces> <interface id="1" name="eth0" addr="172.16.6.254" /> <interface id="2" name="eth1" addr="192.168.100.254" /> <interface id="3" name="eth2" addr="81.255.101.237" /> </interfaces> </fw> </fws> <nets> <net id="1" name="LAN_1" type="ipv4" addr="172.16.0.0/12" > <connection direct="1" fwid="1" iface="1" /><!-- eth0--> </net> <net id="2" name="DMZ" type="ipv4" addr="192.168.100.0/24" > <connection direct="1" fwid="1" iface="2" /><!-- eth1--> </net> <net id="3" name="INTERNET" type="ipv4" addr="84.255.101.232/29"> <connection direct="1" fwid="1" iface="3" dftgateway="84.255.101.233"/> </net> <net id="7" name="VPN_1" type="mark" mark="42" addr="192.68.48.0/22" remote="212.159.207.77"> <connection direct="0" fwid="1" iface="3" /> </net> </nets> </network>
Attributs | |
---|---|
id | valeur numérique |
type | valeur 'nufw' |
name | valeur alphanumérique, sans espaces. |
queue | 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. |
Attributs | |
---|---|
id | valeur numérique |
addr | adresse de réseau |
name | valeur alphanumérique, sans espaces. La valeur 'IF' est interdite. |
type | Parmi les valeurs ipv4, mark. |
remote | Addresse IP. Représente la machine à l'extrémité du vpn. Obligatoire quand l'attribut type a la valeur 'vpn' |
mark | valeur numérique. Représente la marque utilisée pour les paquets venant du vpn. Obligatoire quand l'attribut type a la valeur 'vpn'. |
Attributs | |
---|---|
direct | Parmi les valeurs 0 ou 1. |
fwid | Valeur numérique. |
iface | Valeur numérique |
dftgateway | adresse IP. Représente la route par défaut du firewall concerné par la connexion au réseau. |
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.
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.
La valeur de l'attribut iface doit être égal à l'attribut id de l'interface du firewall qui est connectée au réseau.
Les prérequis pour utiliser nupyf sont:
python 2.3
IPy 0.42: ce package permet de manipuler des adresses IP, disponible sur c0re.23.nu. Un paquet debian est mis à disposition par INL.