SousParagraphe


4.14 Nouvelle Configuration du filtrage de paquets

Depuis la version stable 2.18 de fli4l, une nouvelle configuration est possible pour le filtrage de paquets. La configuration d'origine  existe toujours, elle doit être activée à part dans le fichier config\base.txt

Avec cette nouvelle version on peut configurer séparément les tables de filtrages de paquets. De plus chaque table a sa propre chaîne, la chaîne (INPUT_LIST_x) pour les paquets entrant dans le routeur, la chaîne (FORWARD_LIST_x) pour les paquets traversant le routeur, la chaîne (POSTROUTING_LIST_x) pour faire de la translation d'adresse IP et du masquage. Il y a deux possibilités de configuration qui peuvent être exploitées en même temps, la chaîne Prerouting PREROUTING_LIST_x, et la variable Porforwarding qui a déjà été vue dans PORTFW_x.

Une entrée dans chaque chaîne produit une action, excepté dans la chaîne Prerouting, ces actions appelées aussi cibles sont (ACCEPT, DROP, REJECT, SNAT ou MASQUERADE) Ces actions peuvent modifier l'état d'un paquet. Un paquet contient des informations sur son origine (de quel ordinateur est parti le paquet) et sa destination (vers quel ordinateur le paquet doit aller). Les critères suivants peuvent s'associer aux caractéristiques du paquet.

Si un paquet parfait (non modifié) arrive, il entre dans une chaîne puis les différentes règles d'une chaîne sont appliquées les unes à la suite des autres, chaque règle est associée à une action (ou cible). En fonction des différentes règles de la chaîne, Netfilter pourra décider quoi faite du paquet, le laisser passer, le supprimer ou le modifier. Si aucune régle ne s'applique au paquet, il passe alors à la chaîne suivante.

Voici Une inscription des commandes, il faut considérer que tous les paramètres sont optionnels:

paramètre{0,} [[source] [destination]] action [BIDIRECTIONAL|LOG|NOLOG]


4.14.1Action pour le filtrage de paquets

Les actions peuvent être les suivantes:

ACCEPT
Le paquet est accepté
DROP
Le paquet est rejeté (aucune réponse mais également aucun message d'erreur ne sera retourné à l'expéditeur)
REJECT
Le paquet est rejeté (l'expéditeur recevra en retour un message d'erreur)
LOG
Les trames des paquets sont copiées dans un fichier jounal (ou Log). On peut utiliser un préfixe pour specifier un service (Log-Prefixes), le service sera séparé par deux points p.ex. LOG:log-prefixes.
MASQUERADE
Le paquet va être modifié, afin de dissimuler (de masquer en fait) certaines informations concernant son origine. Le routeur transforme les paquets sortants du réseau local et passant par lui pour donner l'illusion que les paquets sortent du routeur lui-même (cette action est possible seulement dans POSTROUTING_LIST)
SNAT
Le paramètre SNAT est utilisée pour la Translation d'Adresse Réseau Source, ce qui veut dire que ce paramètre sert à réécrire l'adresse IP ou le port source du paquet.et qui sera ensuite routé vers le réseau externe (Internet) (cette action est possible seulement dans POSTROUTING_LIST)
NETMAP
Nouvelle action (ou cible) qui vous permet de créer un lien statique 1:1 d'une adresse réseau, tout en gardant l'adresse de la machine intacte.Par exemple, si vous voulez changer la destination de toutes les connexions entrantes, de 1.2.3.0/24 vers 5.6.7.0/24 (cette action est possible seulement dans PREROUTING_LIST ou POSTROUTING_LIST, dans la liste Prerouting l'adresse destination est changée, dans la liste Postrouting l'adresse source est changée)
DNAT
Le paramètre DNAT est utilisée pour la translation d'Adresse Réseau de Destination, ce qui veut dire qu'elle sert à réécrire l'adresse IP ou le port de destination du paquet et sera ensuite routé vers le matériel, ou le réseau appropriés.(cette action est possible seulement dans PREROUTING_LIST)
REDIRECT
Le paramètre REDIRECT est utilisée pour réorienter les ports des paquets et les flux vers la machine elle même en d'autres termes, elle réécrit les adresses de destination vers votre propre machine pour les paquets qui sont transmis, ou quelque chose comme ça. (cette action est possible seulement dans PREROUTING_LIST)

Quelques unes de ces actions (ou cibles) peuvent avoir les options BIDIRECTIONAL, LOG ou NOLOG modifiant leur comportement. Le paramètre BIDIRECTIONAL génère une connexion avec l'adresse de source et de destination de manière à communiquer entre deux réseaux locaux. LOG/NOLOG active ou n'active pas le fichier Log (ou journal) pour une régle définie.


4.14.2 Les Paramètres des variables

Dans ce chapitre, nous allons spécifier l'utilisation des variables de restrictions. Les paramètres de restrictions peuvent être écrites dans n'importe quel ordre, si ils ont un préfixe en tête, cela est valable pour toutes les variables excepté pour les paramètres d'Adresse source et/ou destination elle doit toujours être directement écrite avant une action. Les autres paramètres de restrictions doivent avoir lieu avant.

Lors de la configuration d'une régle il faut obligatoirement indiquer un paramètre, on peut écrire "any" si on ne veut pas utiliser de paramètre spécifique. On trouve parfois le symbole "!" ce symbole peut se rajouter aux autres paramètres, afin d'indiquer la négation (on peut le traduire par "sauf" ).

4.14.2.1 Paramètre source et destination

Chaque paquet contient des renseignements sur la source et sur la destination, sous la forme d'une adresse IP et/ou un port. On peut rajouter à cette source ou à cette destination un paramétre de restriction. Les informations de l'adresse source ou de la destination peuvent être écrites de la manière suivante:

ip Adresse IP simple
network Réseau sous la forme ip/masque sous réseau
port[-port]

Port simple. ou ensemble de Ports

IP_NET_x_IPADDR Adresse IP d'Interface x du Routeur
IP_NET_x Sous réseau d'interface x du Routeur
IP_ROUTE_x

Route d'un sous réseau (par défaut les routes ne peuvent pas être utilisées car elles communiqueraient toutes entre-elles ce paramètre sera exclus par précaution)

name

Dans la variable HOST_x_* le Nom donnés aux Hôtes du LAN correspond à leur Adresse-IP

< ip oder netzwerk> :port[-port]

Adresse IP/réseau dans l'une des variables mentionnées ci-dessus combiné à un Port ou un ensemble de Ports

Exemple des paramètres que l'on n'a vus ci-dessus: '192.168.6.2 any DROP'.

Si on regarde les deux premiers paramètres, le premier paramètre est la source, le second est la destination. Dans cet exemple les paquets envoyés par l'ordinateur qui a l'Adresse IP 192.168.6.2 (source) sont reçu indifférament par tous les réseaux locaux any (destinataire) enfin les paquets reçus seront rejetés DROP.

Si un seul paramètre est écrit dans la variable, on peut décider au moyen cette valeur si c'est la source ou si c'est la destination qui est concernée, la décision est relativement simple:

Si nous voulons écrire plus brièvement l'exemple ci-dessus: '192.168.6.2 DROP' Aucun port n'est indiqué, donc l'IP de l'ordinateur est la source (c'est lui qui envoie les paquets).

Pour accéder à une connexion sshd any any:22 ACCEPT' (les paquets sont envoyés de n'importe quel ordinateur et reçus sur n'importe quel ordinateur sur le port 22 pour une connexion sshd les paquets seront acceptés). On peut écrire plus simplement '22 ACCEPT' seul un port est indiqué donc nous pouvons dire que c'est la destination et que les paquets reçus sur le Port 22 sont acceptés.

Pour simplifier la quantité de régle à écrire, on peut utiliser l'action BIDIRECTIONAL elle indique que les communications se feront dans les deux sens. Les règles sont paramètrées simplement avec l'IP source et destination ou éventuellement avec leurs interfaces, les échanges entre cet deux réseaux reste constant.

Exemple:
'127.0.0.1 ACCEPT' Communication locale  (Souce 127.0.0.1) est accepté
'any 192.168.12.1 DROP' Les paquets de l'Adresse-IP 192.168.12.1 sont rejetés
'any 192.168.12.1 DROP LOG'

Les paquets de l'Adresse-IP 192.168.12.1 sont rejetés et en plus sont enregistés

'any 192.168.12.1 DROP NOLOG' Les paquets de l'Adresse-IP 192.168.12.1 sont rejetés, et ne seront pas enregistés
'22 ACCEPT' Les paquets sur le Port 22 (sshd) sont acceptés
'IP_NET_1_NET ACCEPT'

Les paquets du sous réseau de l'Interface 1 seront acceptés

'IP_NET_1_NET IP_NET_2_NET ACCEPT BIDIRECTIONAL' La communication entre les sous réseaux de la première et la seconde Interface est accepté

4.14.2.2 Paramètre des Interfaces

Pour limiter les paquet entrant ou sortant des interfaces à l'intérieur du routeur. On écrit les paramètres sous cette forme: if:in :out

Vous ne pouvez pas limiter l'interface entrante dans la Chaîne-Input (le paquet ne sortira pas du routeur), dans la Chaîne Masquerade (postrouting) vous ne pourrez pas limiter l'interface sortante, car les informations sur cet interfaces ne seront plus disponibles. C'est seulement dans la Chaîne-Forward que vous pourrez limiter les deux (entrant et sortant).

Les valeurs possibles des interfaces sont pour in ou out :

4.14.2.3 Paramètre des Protocoles

Le format des paramètres de protocole dans les paquets sont indiqué ici: prot:protcol ou prot: icmp:icmp-type.

protcol peut être remplacé par une de ces valeurs:

4.14.2.4 Paramètre des Adresses MAC

la  configuration de l'adresse MAC peut être utilisée au moyen de mac:mac addr.

4.14.2.5 Paramètre sur l'état des paquets

Le filtrage de paquets sur fli4l utilise des informations sur les connexions. On peut alors utiliser ces informations pour controler les connexions p. ex n'accepter que les connexions déjà établies ou en relation avec des connexions déjà établies. Ces informations sont principalement:

INVALID
Le paquet fait partie d'aucune connexion connue.
ESTABLISHED
Le paquet fait partie d'une connexion analysée qui est déjà été établie.
NEW
Le paquet fait partie d'une nouvelle connexion.
RELATED
Le paquet qui fait partie de cette connexion est en relation avec une autre connexion déjà établie (par exemple avec une connexion FTP actif pour une transmission de données).

Pour plus d'informations visiter ce site
http://www.sns.ias.edu/%7Ejns/index.php?pagename=connexionTracking.

Les paramètres des états des paquets sont écris comme ceci: state:state(s). Si on veut indiquer plusieurs états on les sépare par une virgule. Par exemple pour laisser passer seulement le paquet, les connexions déjà établies on peut écrire (dans input et forwarding): state:ESTABLISHED,RELATED

4.14.2.6 Paramètre sur la fréquence d'action

Dans certaine circonstance, on aimerait limiter la fréquence des actions, p. ex autoriser uniquement une echo request (ping) par seconde. On peut écrire cette restriction dans la variable limit qui est indiquée ici: limit:Fréquence/n:Burst avec n qui sera l'unité de temps comme (second, minute, hour, day) et Burst (ou salve) suite d'événements successifs. Par exemple, limit:3/minute:5 3 fois par minute une fréquence d'événements est exécutée et en plus 5 événements successifs sont exploités.


4.14.3 Utilisation de "Template" pour le filtrage de paquets

il y a une possibilité de simplifier l'utilisation des données de filtrage de paquets, on appelle Template un condensé concernant des règles fréquemment utilisées. Un résumé de toute une série de règles de filtrage de paquets, dans cette collection de règles un nom symbolique y est associé. Au lieu d'écrire dans la variable directement les protocoles et des numéros de port il suffit d'écrire "tmpl: ssh" si vous voulez travailler avec le protocole SSH. Comment faut-il procéder avec Templates, un exemple avec SSH est montré ici.

Si vous voulez atteindre votre Routeur-fli4l par Internet avec SSH, vous devez écrire dans la variable INPUT_LIST_x le nom du service correspondant avec prémis tmpl: et l'action qui doit être utilisé pour ce service. Exemple:

INPUT_LIST_2='tmpl:ssh ACCEPT'

Aprés les deux points de TMPL: se trouve le Nom du service, que l'on a donné pour créer la variable. A la fin de notre exemple 'ssh' est écrit une action qui sera liée au service. Puisque vous voulez atteindre le Routeur-fli4l par Internet nous acceptons la connexion avec la cible 'ACCEPT'. Des restrictions d'adresses IP ou de réseau ne sont pas indiquées, donc le service SSH est accessible à l'ensemble des réseaux et des interfaces. On pourraient écrire plus loin en cas de besoin une restriction des paquets filtrés pour limiter les accès au service SSH.

Dans le dossier (=Templates ) des règles peuvent être préparées et lues dans le fichier opt/etc./fwrules.tmpl/templates, ici l'installation sous forme de tableau (voir le tableau 4.5).

La syntaxe des règles pour des filtrages de paquets s'écrit toujours dans ce forme

tmpl:< Nom du Service> < Paramètre de Restriction> < Action Souhaitée>

Au sujet des < paramètres de Restriction> tout est décrit dans le paragraphe 4.14.2 . Les valeurs possibles pour <Action Souhaitée> son listées et décries dans le paragraphe 4.14.1.

Quelques exemples supplémentaires. D'abord nous allons voir la variable PREROUTING_LIST.

PREROUTING_LIST_N='2'
PREROUTING_LIST_1='tmpl:xbl dynamic DNAT:@xbox'
PREROUTING_LIST_2='tmpl:https dynamic DNAT:192.168.193.250'

La variable PREROUTING_LIST_1 envoie tous les paquets sur Xbox et uniquement sur Xbox. Le détail serait qu'avec 'tmpl:xbl' tous les ports et les protocoles nécessaires pour Xbox sont transmis directement à Hôte 'xbox'. A la place du Nom hôte '@xbox' dans la variable HOST_x_NAME on peut écrire l'adresse IP de l'hôte. Par 'dynamic' fli4l sait que les ports doivent être transmis par l'intermédiaire de l'interface Internet.

La deuxième variable transmet les paquets correstondants au protocole https sur un serveur Web dans une DMZ.

Maintenant, nous allons voir avec la Chaîne INPUT_LIST.

INPUT_LIST_N='3'
INPUT_LIST_1='if:IP_NET_1_DEV:any ACCEPT'
INPUT_LIST_2='if:pppoe:any prot:tcp 113 ACCEPT'
INPUT_LIST_3='if:br0:any tmpl:dns @xbox 192.168.193.254 ACCEPT'

La première variable laisse passer tout ce qui vient par IP_NET_1 (internet) que l'on a défini sur le Routeur. La deuxième variable est uniquement pour les paquets donc le port est identifié ils doivent se diriger sur le port qui est ouvert . La troisième et dernière variable permet à Xbox l'accès au serveurs DNS sur fli4l et également être vu par le serveur central. Au lieu d'écrire Adresse-IP 192.168.193.254, j'aurais pu écrire IP_NET_1_IPADDR.

Dans mes variables FORWARD_LIST et POSTROUTING_LIST rien n'ai spécifié avec 'tmpl:'

Illustration 4.6: Structure du répertoire fli4l

Image etc_fwrules_tmpl_dir

Il est possible d'utiliser Templates comme il est ou de créer votre propre fichier Templates pour le filtrage de paquets. Pour utiliser votre propre Template vous devez simplement créer un nom de fichier et enregistrer les règles de filtage correspondantes à votre configuration. Lorsque vous avez terminé votre fichier Template personnel vous devez le sauvegarder dans etc/fwrules.tmpl avec les autres fichiers Template, comme dans l'illustration 4.6. Si le répertoire etc/fwrules.tmpl n'existe pas vous devez d'abord créer le répertoire. Vous pouvez installer plusieurs configurations de fichier Template dans le répertoire etc/fwrules.tmpl ou utiliser le fichier Template existant pour rajouter vos régle de filtrage. En conclusion le fichier Template qui est dans le dossier original de fli4l, est déjà configuré avec plusieurs régles de filtrage, il suffit de prendre le nom qui est devant la régle et de paramétrer vos variables avec, comme indiqué dans ce paragraphe.

Si vous voulez par exemple ajouter un Template vpn_freunde, vous créez le fichier vpn_freunde. Le Template doit contenir les services suivants, ssh, smtp, dns et samba. Vous écrivez ainsi ce qui suit dans le fichier vpn_freunde:

prot:tcp 22
prot:tcp 25
53
prot:udp 137-138
prot:tcp 139
prot:tcp 445  

Chaque fois que vous utilisez maintenant Template vpn_freunde, des règles sont produites pour tous les protocoles et ports spécifiés. Si vous écrivez dans la variable forward_list_x= FORWARD_LIST_x='tmpl:vpn_freunde ACCEPT' les règles suivantes sont produites:

FORWARD_LIST_x='prot:tcp 22 ACCEPT'
FORWARD_LIST_x='prot:tcp 25 ACCEPT'
FORWARD_LIST_x='53 ACCEPT'
FORWARD_LIST_x='prot:udp 137-138 ACCEPT'
FORWARD_LIST_x='prot:tcp 139 ACCEPT'
FORWARD_LIST_x='prot:tcp 445 ACCEPT'  

Tableau 4.5: le fichier Template livré avec fli4l contient

Nom Protocole Port(s)
dhcp udp 67-68
dns tcp/udp 53
elster tcp 159.154.8.2:21
tcp 193.109.238.26:8000
tcp 193.109.238.27:8000
tcp 193.109.238.58:80
tcp 193.109.238.59:80
tcp 62.157.211.58:8000
tcp 62.157.211.59:8000
tcp 62.157.211.60:8000
tcp 80.146.179.2:80
tcp 80.146.179.3:80
ftp tcp 21
http tcp 80
https tcp 443
hylafax tcp 4559
imap tcp 143
imaps tcp 993
imond tcp 5000
irc tcp 6667
jabber tcp 5222-5223
ldap tcp/udp 389
mysql tcp 3306
nntp tcp 119
ntp udp 123
pcanywhere tcp 5631-5632
pop3 tcp 110
pop3s tcp 995
rsync tcp 873
samba tcp 139
tcp 445
udp 137-138
smtp tcp 25
snmp tcp/udp 161
socks tcp 1080
ssh tcp 22
ssmtp tcp 465
submission tcp/udp 587
svn tcp 3690
syslog udp 514
teamspeak tcp 14534
tcp 51234
udp 8767
telmond tcp 5001
telnet tcp 23
vnc tcp 5900
xbl tcp/udp 3074
udp 88

4.14.4 Configuration du filtrage de paquets

Le filtrage de paquets est configuré essentiellement dans ces 3 variables:

on  active avec NEW_FW_CONFIG ='yes' la configuration de ces Chaînes.

4.14.4.1 Chaîne Input

Avec la chaîne Input on configure ceux qui peuvent interroger le Routeur. Si aucune des règles de la chaîne Input ne s'applique, on détermine par Default-Policy (Politique-Transfére) ce qu'il doit se passer pour le paquet avec la variable log, savoir s'il devrait être écrit ou un non dans le journal système.

Avec les paramètres utilisés, il y a deux restrictions:

INPUT_POLICY

Le Default-Policy (Politique-Transfére) est appliqué, si aucune des variables ne correspond. Les 3 actions possibles dans les variables sont:

INPUT_ACCEPT_DEF

Si cette variable est sur 'yes' , trois règles par defaut sont générées. La première (' prot:icmp:8 ACCEPT ') permet à icmp echo requests de faire un ping sur le routeur, la deuxième ('state:ESTABLISHED, RELATED ACCEPT') accepte les paquets qui font partie d'une connexion existante, ainsi que tous les paquets qui sont en relation avec une connexion existante et la troisième ('if:lo:any ACCEPT') une communication locale avec le routeur. En cas de doute, vous devez écrire 'yes'.

INPUT_LOG

Ici on définit, les paquets du Kernel qui sont refusés, ils seront écrits par intermédiaire de SYSLOG et de KLOGD dans un (fichier journal).

INPUT_LIST_N INPUT_LIST_x

Ici on écrit la liste des variables des paquets qui doivent être acceptés ou rejetés par le Routeur.

INPUT_LOG_LIMIT

Ici on définit la fréquence d'écriture dans le fichier log (ou journal), la fréquence des restrictions de limites sont décrite de façon analogue voir si dessus, "n" comme unité de temps et avec Bursts (ou salve) par. exemple 3/minute:5. Si cette variable est vide, aucune limite de temps est utilisé.

INPUT_REJ_LIMIT INPUT_UDP_REJ_LIMIT

Ici on definit la fréquence de refus des paquets avant le rejet du prochain paquet généré, la fréquence de restriction des limites est décrite de façon analogue (voir si dessus), n unité de temps et avec Bursts (ou salve), par exemple 1/second:5. Si la limite de temps est dépassée le paquet est simple drop (rejet sans message d'erreur) Si cette variable est vide, aucune limite de temps est utilisé.

4.14.4.2 Chaîne Forward

Avec la Chaîne Forward on configure les paquets qui sont transmis par Routeur (il s'agit de faire passer des paquets d'une interface réseau vers une autre interface). Si aucune des règles de la liste de Forward ne peut s'appliquer, on détermine par Default-Policy (Politique-Transfert) ce qu'il doit se passer avec le paquet dans la variable log, savoir s'il devrait être écrit ou non dans le journal système

Avec les paramètres utilisés, il y a deux restrictions:

FORWARD_POLICY

Le Default-Policy (Politique-Transfert) est appliqué, si aucune des variables ne correspond. Les actions possibles dans les variables sont:

FORWARD_ACCEPT_DEF

Il détermine si le Routeur accepte les paquets qui font partie des relations existantes. Si cette variable est sur 'yes' fli4l produit automatiquement une règle sur les paquets acceptés dont l'état correspond.

FORWARD_LOG

Ici on définit, les paquets du Kernel qui sont refusés, ils seront écrits par intermédiaire de SYSLOG et de KLOGD dans un (fichier journal).

FORWARD_LOG_LIMIT

Ici on définit la fréquence d'écriture dans le fichier log (ou journal), la fréquence de restriction des limites est décrite de façon analogue voir si dessus, "n" unité de temps et avec Bursts (ou salve) par. exemple 3/minute:5. Si cette variable est vide, aucune limite de temps n'est utilisée.

FORWARD_REJ_LIMIT FORWARD_UDP_REJ_LIMIT

Ici on definit la fréquence de refus des paquets avant le rejet du prochain paquet généré, la fréquence de restriction des limites est décrite de façon analogue voir si dessus, "n" unité de temps et avec Bursts (ou salve), par exemple 1/second:5. Si la limite de temps est dépassée le paquet est drop (rejet sans message d'erreur) Si cette variable est vide, aucune limite de temps n'est utilisée.

FORWARD_LIST_N FORWARD_LIST_x

Ici ont écrit la liste des variables sur les paquets qui doivent être acceptés ou rejetés par le Routeur.

4.14.4.3 Table NAT (network address translation)

Cette table permet non seulement de faire de la translation stricte d'adresse, mais également de la translation de ports et un mélange des deux. Des paquets peuvent être manipulés avant et après les décisions de Routing. Ils peuvent recevoir une nouvelle adresse de destination pour les transmettre à un autre ordinateur (Portforwarding) ou recevoir une autre adresse de source, pour masquer le réseau qui se trouve derrière Routeur. On appelle ce service Masquerade, par exemple, connecter un réseau privé sur une Adresse IP publique pour aller sur internet ou cacher un ordinateur DMZ dans une structure du réseau local.

La configuration se fait sur deux chaînes, la prerouting et la postrouting

POSTROUTING_LIST_N POSTROUTING_LIST_x
 
Dans ces variables on décrit le nombre et les paquets qui seront masquées par le routeur (ou transmis non masqué). Si on ne veut pas masquer les paquets qui arrive sur le routeur, on peut placer la régle Accept à la place de la régle Masquerade.

Sur la chaîne Postrouting, on configure les paquets qui seront masqués par le Routeur. Si aucune règles de la chaîne Postrouting n'est appliquée, alors les paquets sont transmis sans être masqués.

Il y a deux variantes pour masquerading, une pour l'interface dans laquelle est assigné une IP à la connexion (MASQUERADE) et une pour l'interface avec IP statique (SNAT). Cette dernière utilise ces paramètres supplémentaires:

un Port ou un ensemble de Ports peut être utilisé pour attribuer le port source (normalement ce n'est pas nécessaire puisque le Kernel (ou noyau) peut choisir les ports, cependant il y a des applications qui exigent que le port source reste inchangé (nécessite un 1:1 NAT ou interdisent le PAT (port adresse Translation) ou NAPT (réseau port adresse Translation). L'ensemble des ports sont simplement attaché derrière le paramètre par exemple: SNAT:IP_NET_1_IPADDR: 4000-8000.

Avec les paramètres utilisés, il y a deux restrictions:

PREROUTING_LIST_N PREROUTING_LIST_x

Dans ces variables on décrit le nombre et les paquets qui doivent être transmis par le Routeur à un autre destinataire du réseau local.

Dans la variable Prerouting on configure, le paquet qui doit être transmis à un autre ordinateur. Si aucune des règles de la liste Prerouting ne s'applique, les paquets ne seront pas traités et resteront inchangés.

DNAT attend une IP comme paramètre, ainsi  une nouvelle adresse de paquet est enregistrée, on peut aussi enregister un nouveau port:

Redirect se comporte comme DNAT, seulement Adresse-IP de destination est toujours placée sur 127.0.0.1 et ainsi le paquet est distribué localement.

Si on veut faire du Portforwarding sur des interfaces avec des IPs dynamiques, on ne connait pas au moment de la configuration l'Adresse-IP des PCs vers lesquel les paquets seront dirigés. Pour celà, on peut utiliser dans la variable Prerouting dynamic comme paramètre de remplacement pour les Adresses-IP qui seront assignées plus tard. Par exemple:

    'dynamic:80 DNAT:1.2.3.4'   # forwarde Paquet-http
                                # à cette ip 1.2.3.4
    'prot:gre any dynamic DNAT:1.2.3.4'   # forwarde gre (fait partie du
                                          # protocole pptp) à cette ip 1.2.3.4

Avec les paramètres utilisés, il y a une restriction qui ne peut pas être indiquée comme action c'est REJECT .

4.14.5 Exemple

Ci-après quelques exemples pour la nouvelle configuration.

4.14.5.1 Configuration standard de Fli4l

La configuration Standard de la distribution fli4l apparaît comme ceci, si on laisse toutes les options désactivées:

    MASQ_NETWORK='192.168.6.0/24'   # networks to masquerade (e.g. our LAN)
    INPUT_POLICY='REJECT'           # policy for input chain: reject or drop
    FORWARD_DENY_PORT_N='1'         # no. of ports to reject/deny forwarding
    FORWARD_DENY_PORT_1='137:139 reject'   # drop/reject forwarding of netbios
    DENY_ICMP='no'          # deny icmp (ping): yes or no
    PACKETFILTER_LOG='no'   # log access to rejected/denied ports

Si nous prenons les options décrites dans le chapitre de filtrage de paquets et en supposant que nous les traduisions avec la nouvelle configuration cela donnerait:

    INPUT_POLICY='REJECT'
    INPUT_ACCEPT_DEF='yes'
    INPUT_LOG='no'
    INPUT_LIST_N='1'
    INPUT_LIST_1='IP_NET_1 ACCEPT'

De cette façon, nous arrivons à

De la même façon pour la chaîne Forward, seul les paquets qui font partie et qui sont construits par la connexion de notre réseau local, doivent être transmis. Les ports des paquets Netbios sont rejetés avec Template.

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='2'
    FORWARD_LIST_1='tmpl:samba DROP'
    FORWARD_LIST_2='IP_NET_1 ACCEPT'  

Ici, les régles sont dépendantes par rapport aux séquences. En premier, on rejette les paquets de Netbios, ensuite les paquets du réseau local sont acceptés.

Maintenant, le réseau local peut traverser le Router, les paquets sont transmits d'une interface à une autre, il manque seulement le masquerade celui-ci est nécessaire pour accèder au réseau privé Internet:

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_1='IP_NET_1 MASQUERADE' 

La configuration originale paraît largement plus simple. Cela change, lorque nous ajoutons les autres options qui sont:

4.14.5.2 Trusted Nets

Si nous voulons plusieurs Sous Réseaux locaux qui puissent communiquer les uns avec les autres librement et non masqués, nous devons nous assurer qu'aucun paquet ne soit pas rejetés entre ces Sous Réseaux et ne soit pas masqués. Avec la ancienne configuration, ceci êtait fait en les indiquant dans TRUSTED_NETS. Dans la nouvelle configuration, nous ajoutons simplement une variable ou bien la modifie si elle est disponible.

Supposons, les Sous Réseaux suivants IP_NET_1 192.168.6.0 /24 et IP_NET_2 192.168.7.0 /24 et le protocole pppoe pour DSL qui est utilisé. La configuration ressemblerait alors à ce qui suit:

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='4'
    FORWARD_LIST_1='IP_NET_1 IP_NET_2 ACCEPT BIDIRECTIONAL'
    FORWARD_LIST_2='tmpl:samba DROP'
    FORWARD_LIST_3='IP_NET_1 ACCEPT'
    FORWARD_LIST_4='IP_NET_2 ACCEPT'

    POSTROUTING_LIST_N='3'
    POSTROUTING_LIST_1='IP_NET_1 IP_NET_2 ACCEPT BIDIRECTIONAL'
    POSTROUTING_LIST_2='IP_NET_1 MASQUERADE'
    POSTROUTING_LIST_3='IP_NET_2 MASQUERADE'  

La première variable FORWARD_LIST_1 s'assure que les paquets entre les Sous Réseaux sont expédiés sans vérification. La troisième et la quatrième variable s'assurent que les deux Sous Réseaux peut accéder à Internet. La première variable POSTROUTING_LIST_1 s'assure que la communication entre les Sous Réseaux ne sera pas masquée. Si l'on veut, on peut alléger les deux dernières variables pour définir que tous les paquets sortants par l'interface du protocole pppoe devront être masqués:

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_1='if:any:pppoe MASQUERADE'

De la même manière avec la variable FORWARD_LIST_1, le filtrage des ports pourrait été limité par le protocole pppoe. cela ressemblerait à ceci:

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='2'
    FORWARD_LIST_1='if:any:pppoe tmpl:samba DROP'
    FORWARD_LIST_2='192.168.6.0/23 ACCEPT'

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_1='if:any:pppoe MASQUERADE'

Les paquets qui partent par le protocole pppoe et qui sont adressés aux ports 137-139 udp ainsi que 139 et 445 tcp sont rejetés (variable 1), tout les autres paquets du Sous Réseau 192.168.6.0 /23 seront expédiés (variable 2).

4.14.5.3 Route Network

Si nous ajoutons un réseau 10.0.0.0 /24 (par exemple communiquer avec le réseau non masqué et les ports 137-139 udp 139 und 445 tcp qui doivent être rejetés. Cela ressemblerait à ceci :

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='4'
    FORWARD_LIST_1='IP_NET_1 IP_NET_2 ACCEPT BIDIRECTIONAL'
    FORWARD_LIST_2='tmpl:samba DROP'
    FORWARD_LIST_3='192.168.6.0/23 ACCEPT'
    FORWARD_LIST_4='10.0.0.0/24 ACCEPT'

    POSTROUTING_LIST_N='2'
    POSTROUTING_LIST_1='10.0.0.0/24 ACCEPT BIDIRECTIONAL'
    POSTROUTING_LIST_2='192.168.6.0/23 MASQUERADE'

On pourrait écrire une autre variante:

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_1='if:any:pppoe MASQUERADE'

Seulement les paquets qui sortent de l'interface pppoe sont masqués.

4.14.5.4 Blacklists, Whitelists

Blacklists (ou listes noires) (on refuse aux ordinateurs de cette liste "de faire quelque chose") et Whitelists (ou liste blanches) (on permet aux ordinateurs de cette liste "de faire quelque chose") sont traduit en principe de la même façon. Les règles qui sont écrites au début de la liste sont très spécifiques et deviennent de plus en plus le générales vers la fin de la liste. Quand vous utilisez une Blacklists (liste noire) vous devez écrire la variable au début de la liste, quand vous utilisez une Whitelists (liste blanche) vous devez écrire la variable à la fin de la liste. Un exemple: On permet à tous les ordinateurs du Sous Réseau 192.168.6.0 /24 d'accéder à Internet, mais on interdi à l'ordinateur avec l'IP 192.168.6.12 d'accéder, on rejette toujours les ports 137-139 udp 139 et 445 tcp:

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='3'
    FORWARD_LIST_1='192.168.6.12 DROP'
    FORWARD_LIST_2='tmpl:samba DROP'
    FORWARD_LIST_3='192.168.6.0/23 ACCEPT'

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_2='192.168.6.0/24 MASQUERADE'

On permet seulement à l'ordinateur x.x.x.12 d'accéder à Internet (mais pas sur les ports…), tous les autres ne peuvent communiquer que localement avec un autre sous-réseau:

    FORWARD_POLICY='REJECT'
    FORWARD_ACCEPT_DEF='yes'
    FORWARD_LOG='no'
    FORWARD_LIST_N='3'
    FORWARD_LIST_1='192.168.6.0/24 192.168.7.0/24 ACCEPT BIDIRECTIONAL'
    FORWARD_LIST_2='tmpl:samba DROP'
    FORWARD_LIST_3='192.168.6.12 ACCEPT'

    POSTROUTING_LIST_N='1'
    POSTROUTING_LIST_1='if:any:pppoe MASQUERADE'

4.14.6 Configuration standard

4.14.6.1 Simple Routeur masquant un réseau local (une carte réseau)

ORIG_FW_CONFIG='no'
NEW_FW_CONFIG='yes'

#
# Accès sur Routeur
#
INPUT_POLICY='REJECT'
INPUT_ACCEPT_DEF='yes'
INPUT_LOG='no'
INPUT_LIST_N='1'
INPUT_LIST_1='IP_NET_1 ACCEPT'  # tous les hôtes du réseau local
                               # peuvent communiquer avec le router 
# Accés à "Internet" #
FORWARD_POLICY='REJECT'
FORWARD_ACCEPT_DEF='yes'
FORWARD_LOG='no'

FORWARD_LIST_N='2'
FORWARD_LIST_1='tmpl:samba DROP'  # les paquets samba (ports)qui peuvent
                                 # sortir du réseau sont rejetés
FORWARD_LIST_2='IP_NET_1 ACCEPT'  # tous les paquets du réseau local
                                 # peuvent sortir

#
# Masque du réseau local
#
POSTROUTING_LIST_N='1'
POSTROUTING_LIST_1='IP_NET_1 MASQUERADE'  # masquerade traffic leaving
                                         # the subnet

4.14.6.2 Simple Routeur masquant deux réseaux locaux (deux cartes réseaux)

ORIG_FW_CONFIG='no'
NEW_FW_CONFIG='yes'

#
# Accès sur le Routeur
#
INPUT_POLICY='REJECT'
INPUT_ACCEPT_DEF='yes'
INPUT_LOG='no'
INPUT_LIST_N='2'
INPUT_LIST_1='IP_NET_1 ACCEPT'  # tous les hôtes du réseau local
                               # peuvent communiquer avec le router
INPUT_LIST_2='IP_NET_2 ACCEPT'  # tous les hôtes du réseau local
                               # peuvent communiquer avec le router

#
# Accés à "Internet" #
FORWARD_POLICY='REJECT'
FORWARD_ACCEPT_DEF='yes'
FORWARD_LOG='no'

#
# Aucun communication entre les deux réseaux locaux
#
FORWARD_LIST_N='3'
FORWARD_LIST_1='tmpl:samba DROP'  # les paquets samba (ports)qui peuvent
                                 # sortir du réseau sont rejetés
FORWARD_LIST_2='IP_NET_1 ACCEPT'  # tous les paquets du réseau local
                                 # peuvent sortir
FORWARD_LIST_3='IP_NET_2 ACCEPT'  # tous les paquets du réseau local
                                 # peuvent sortir
# # Communication libre entre les deux réseaux locaux # FORWARD_LIST_N='4' FORWARD_LIST_1='IP_NET_1 IP_NET_2 ACCEPT BIDIRECTIONAL' FORWARD_LIST_2='tmpl:samba DROP' # les paquets samba (ports)qui peuvent # sortir du réseau sont rejetés FORWARD_LIST_3='IP_NET_1 ACCEPT' # tous les paquets du réseau local # peuvent sortir FORWARD_LIST_4='IP_NET_2 ACCEPT' # tous les paquets du réseau local # peuvent sortir # # Entre les réseaux locaux non masqués et les deux # sous réseaux masqués pour Internet # POSTROUTING_LIST_N='3' POSTROUTING_LIST_1'IP_NET_1 IP_NET_2 ACCEPT BIDIRECTIONAL' POSTROUTING_LIST_2='IP_NET_1 MASQUERADE' # masquerade traffic leaving #the subnet POSTROUTING_LIST_3='IP_NET_2 MASQUERADE' # masquerade traffic leaving # the subnet

4.14.6.3 Routeur-DSL masquant deux réseaux locaux avec un accés ssh/http pour Internet

ORIG_FW_CONFIG='no'
NEW_FW_CONFIG='yes'

#
# Accès sur le Routeur
#
INPUT_POLICY='REJECT'
INPUT_ACCEPT_DEF='yes'
INPUT_LOG='no'
INPUT_LIST_N='4'
INPUT_LIST_1='IP_NET_1 ACCEPT'  # tous les hôtes du réseau local
                               # peuvent communiquer avec le router
INPUT_LIST_2='IP_NET_2 ACCEPT'  # tous les hôtes du réseau local
                               # peuvent communiquer avec le router
INPUT_LIST_3='tmpl:ssh ACCEPT'  # permets d'accéder au service ssh
                               # de partout
INPUT_LIST_4='tmpl:http 1.2.3.4/24 ACCEPT'  # permets au ordinateurs du
                                           # sous réseau déterminé
                                           # d'accéder au service http


#
# Accés à "Internet" #
FORWARD_POLICY='REJECT'
FORWARD_ACCEPT_DEF='yes'
FORWARD_LOG='no'

#
# Aucune communication entre les deux réseaux, les deux réseaux peuvent aller 
# Sur Internet, les paquets Samba sont rejetés # FORWARD_LIST_N='2' FORWARD_LIST_1='tmpl:samba if:any:pppoe DROP' # les paquets samba (ports)qui peuvent # sortir du réseau sont rejetés FORWARD_LIST_2='if:any:pppoe ACCEPT' # tous les paquets du réseau # local peuvent sortir # # Masque le réseau local, communication non masquée entre les # deux Réseaux # POSTROUTING_LIST_N='1' POSTROUTING_LIST_1='if:any:pppoe MASQUERADE' # masquerade traffic leaving # the subnet

4.14.6.4 Portforwarding

Au lieu de l'ancienne Configuration avec Portforwarding on veut utiliser la nouvelle, cela pourait être traduit comme ceci:

TARGET='<port>'
NEW_TARGET='<ip>'
PROTOCOL='<proto>'
PREROUTING_LIST_x='prot:<proto> dynamic:<port> DNAT:<ip>' TARGET='<port1>-<port2>' NEW_TARGET='<ip>' PROTOCOL='<proto>'
PREROUTING_LIST_x='prot:<proto> dynamic:<port1>-<port2> DNAT:<ip>' TARGET='<ip>:<port-a>' NEW_TARGET='<ip>:<port-b>' PROTOCOL='<proto>'
PREROUTING_LIST_x='prot:<proto> <ip>:<port-a> DNAT:<ip>:<port-b>'

4.14.6.5 Proxy Transparent

Si on  permet certains accès à Internet à travers un serveur un Proxy, on peut imposer cela à l'aide des variables Pre/Postrouting, sans que le Client ne remarque quelque chose.

En principe, trois étapes sont nécessaires:

  1. Les requêtes de port http, qui viennent du proxy sont détournées dans (PREROUTING).
  2. Les paquets ainsi détournés du serveur proxy arrivent sur le routeur, on pense que les paquets viennent du routeur, puis il sont renvoyés (POSTROUTING).
  3. La chaîne Forward laisse passer les paquets, si la régle existe dans la variable FORWARD_LIST_x='IP_NET_1 ACCEPT'.

1. Dans cet exemple: nous n'avons qu'un réseau IP_NET_1, un ordinateur a le Nom "proxy" sur lequel Squid fonctionne pour pouvoir diriger totalement Traffic http. Le Squid écoute sur le port 3128. Pour simplifier nous appellerons l'hôte "@proxy" et nous l'enregistrerons dans la variable HOST_1_NAME='proxy' (cf. Configuration Domaine)

Voici l'ensemble des paramètres:


PREROUTING_LIST_x='@proxy ACCEPT'
                   # les paquets du proxy ne doivent pas être déviés

PREROUTING_LIST_x='prot:tcp IP_NET_1 any:80 DNAT:@proxy:3128'
                   # les paquet http de IP_NET_1 sont transmis
                   # destination de @proxy sur le Port 3128

POSTROUTING_LIST_x='any @proxy:3128 SNAT:IP_NET_1_IPADDR'
   # tous les paquets venant du Proxy par Port 3128 vont sur(IP_NET_1_IPADDR)
   # comme s'ils venaient du routeur fli4l  FORWARD_LIST_x='prot:tcp @proxy 80 ACCEPT'
   # Proxy laisse passer les paquets http par la chaîne Forward (au besoin)
FORWARD_LIST_x='prot:tcp @proxy 80 ACCEPT'
   # la chaîne Forward laisse passer les paquet http du Proxy (si nécessaire)

S'il y a plusieurs réseaux, un conflit potentiel peut arriver avec d'autres Portforwarding (ce ne sont rien d'autre que des régles DNAT), on doit peut-être formuler encore plus étroitement les règles.

2. Exemple: Notre Proxy au nom de "proxy" se trouve dans IP_NET_1, écoute sur le port 3128 et doit être efficace seulement pour des clients IP_NET_1 et est accessible sur IP_NET_1_DEV. Les paquets des réseaux supplémentaires ne doivent pas être pris en considération.


PREROUTING_LIST_x='if:ip_net_1_dev:any !@proxy 80 DNAT:@proxy:3128'
 # Anfragen an den http Port, die nicht vom proxy aber über ein
 # internes Interface (ip_net_1_dev) kommen, an den Proxy Port umleiten
 # An dieser Stelle ist es wichtig, mit if:ip_net_1_dev:any zu
 # überprüfen ob die Pakete von innen kommen da sonst auch Pakete von außen
 # umgeleitet werden würden (Sicherheitslücke)

POSTROUTING_LIST_x='prot:tcp IP_NET_1 @proxy:3128 SNAT:IP_NET_1_IPADDR'
 # tous les paquets venant du Proxy par Port 3128 vont sur(IP_NET_1_IPADDR)
 # comme si ils venaient du routeur fli4l  FORWARD_LIST_x='prot:tcp @proxy 80 ACCEPT'
 # Proxy laisse passer les paquets http par la chaîne Forward (au besoin)

3. Exemple: Pour se faciliter la vie et utiliser plus facilement les variables appropriées tmpl:http, on peut utiliser des "Templates" (cf. Templates im Paketfilter), .

tmpl:http devient 'prot:tcp any any:80' et on peut écrire la variable 'tmpl:http IP_NET_1 DNAT:@proxy:3128' 'prot:tcp IP_NET_1 80 DNAT:@proxy:3128'

IP_NET_1 et IP_NET_2 doivent être transparents et déviées par le Proxy. On pourrait  écrire simplement:


PREROUTING_LIST_x='tmpl:http @proxy ACCEPT'
                   # les paquets http ne doivent pas être déviés
PREROUTING_LIST_x='tmpl:http IP_NET_1 DNAT:@proxy:3128'
                   # les paquets http de IP_NET_1 doivent être déviés
PREROUTING_LIST_x='tmpl:http IP_NET_2 DNAT:@proxy:3128'
                   # les paquets http de IP_NET_2 doivent être déviés

POSTROUTING_LIST_x='IP_NET_1 @proxy:3128 SNAT:IP_NET_1_IPADDR'

FORWARD_LIST_x='tmpl:http @proxy ACCEPT'

On pourrait continué à l'infini…


4.14.7 DMZ - Zone Démilitarisée

Fli4l permet aussi la construction d'une simple DMZ. La condition est, que sur le Routeur il y ait trois interfaces, une pour WAN (interface rouge), une pour la DMZ (interface orange) et une pour le réseau local (interface verte). La configuration de la DMZ est décrite ci-après.

4.14.7.1 Communication entre Interface Vert et Rouge

Cette communication est tout à fait ordinaire la configuration est décrite ci-dessus.

4.14.7.2 Communication entre Interface Vert et Orange

Des réseaux verts peuvent communiquer librement avec des ordinateurs du réseau orange. Les ordinateurs du réseau orange ne doivent rien voir de la structure du réseaux verts les connexions semblent toutes partir de l'interface orange du Routeur (SNAT).

Les ordinateurs du sous réseau orange ne peuvent pas établir de connexion à l'intérieur des réseaux verts. Seuls les paquets qui font partie des ordinateurs du réseau vert peuvent se connecter et passer.

4.14.7.3 Communication entre Interface Rouge et Orange

Les connexions de l'interface rouge au réseau orange peuvent être installées par Portforwarding. Les services qui y seront mentionnés seront accessibles par WAN (Wide Area Network). Les paquets qui font partie d'une telle connexion, sortirons du réseau orange en direction du net masqués, l'interface rouge reçevras les Adresses IP de celle-ci.

Les autres paquets quittant le Sous réseau orange, doivent être configurés dans la variable DMZ_ORANGE_RED_x.

4.14.7.4 Communication entre Interface Orange et le Routeur

Les ordinateurs du réseau orange peuvent utiliser les services choisis sur le Router ils seront configurés dans la variable DMZ_ORANGE_ROUTER_x.

4.14.7.5 Configuration d'une DMZ

Les types de sous-réseaux sont décrits par leur couleur. La variable IP_NET_x_TYPE sera rajoutée juste en dessous de la variable IP_NET_1_DEV. Les autres paramètres sont définis dans les variable DMZ_*.

OPT_DMZ

Si la configuration DMZ est active.

IP_NET_x_TYPE

Définit aux types de Subnetz. Les valeurs permises sont 'green' et 'orange'. Si cette variable est vide, le réseau est ignoré sur la configuration DMZ.

DMZ_RED_DEV

Interface pour accéder à Internet.Ils peuvent être indiqué: pppoe pour une interface dsl , ppp <index> pour ppp-Device, ippp + pour des interfaces isdn, IP_NET_x_DEV ou ETHx pour les interfaces réseaux.

DMZ_NAT

Si dans la DMZ on utilise des adresses IP privées, Routeur doit masquer ceci par DMZ_NAT ='yes' active le masquerade.

DMZ_ORANGE_RED_N DMZ_ORANGE_RED_x

Définit les relations qui peuvent être développées sur le sous-réseau orange. La syntaxe correspond à la syntaxe du filtrage dse paquets.

DMZ_ORANGE_ROUTER_N DMZ_ORANGE_ROUTER_x

Définit les services du Routeur qui peuvent être demandés par le sous-réseau orange. La syntaxe correspond à la syntaxe du filtrage de paquets.

DMZ_LOG

Enregistre les paquets rejetés dans un fichier log (ou journal).

Un petit exemple avec un Serveur Web (http), un serveur Mail (smpt) et un Web-Proxy dans la DMZ, il pourrait ressembler à ceci:

IP_NET_N='3'
IP_NET_1_DEV='eth0'
IP_NET_1='192.168.6.1/24'
IP_NET_1_TYPE='green'
IP_NET_2_DEV='eth1'
IP_NET_2='192.168.7.1/24'
IP_NET_2_TYPE='green'
IP_NET_3_DEV='eth3'
IP_NET_3='192.168.8.1/24'
IP_NET_3_TYPE='orange'

OPT_DMZ='yes'
DMZ_NAT='yes'
DMZ_LOG='yes'
DMZ_RED_DEV='ppp0'
DMZ_ORANGE_RED_N='2'
DMZ_ORANGE_RED_1='prot:tcp 80 ACCEPT' # allow access to http
DMZ_ORANGE_RED_2='prot:tcp 25 ACCEPT' # allow access to smtp
DMZ_ORANGE_ROUTER_N='1'
DMZ_ORANGE_ROUTER_1='53 ACCEPT'       # accept dns requests

PORTFW_N='2'
PORTFW_1_TARGET='80'                 # forward http
PORTFW_1_NEW_TARGET='192.168.8.2'    # ...to dmz host 192.168.8.2
PORTFW_1_PROTOCOL='tcp'              # ...using tcp
PORTFW_2_TARGET='25'                 # forward smtp
PORTFW_2_NEW_TARGET='192.168.8.3'    # ...to dmz host 192.168.8.3
PORTFW_2_PROTOCOL='tcp'              # ...using tcp


4.14.8 Port-Forwarding

Pour certain protocole Internet, il est parfois nécessaire de réorienter une connexion réseau externe (internet) vers un ordinateur du réseau interne. Si le réseau est masqué vers l'extérieur avec (IP-Masquerading), c-à-d. qu'il y ait seulement une Adresse IP officielle disponible pour le réseau local, les ports déterminés ou des protocoles doivent être accessibles de l'extérieur par un ordinateur interne déterminé. On appelle ceci du Port-Forwarding (ou redirection de port) (plus généralement Tranlation d'Adresse Réseau de Destination, DNAT). Le caractère problématique du port forwarding est déjà décrite dans la variable MASQ_MODULE_N.

Souvent avec les jeux, ftp, irc, peer-to-peer, des communications téléphoniques par Internet, ces ports doivent être librement ouverts. On ne peut pas résoudre ce problème avec le Module Masquerade, mais on peut configurer soi-même les directions des Ports.

PORTFW_N

On indique ici, le nombre de Port à transmettre. ils seront définis dans ces variables PORTFW_x_TARGET, PORTFW_x_NEW_TARGET et PORTFW_x_PROTOCOL .

PORTFW_x_TARGET

Les paquets sont dirigés vers une destination déterminée (normalement une Adresse IP et un port) et appartiennent à un protocole spécifique. Cette destination est derrière le routeur donc le réseau est masqué les paquets doivent lui être expédiés.

On indique le port dans cette variable PORTFW_x_TARGET les paquets qui arrivent sur le routeur par ce numéro de port seront transmis à son destinataire.

On configure toujours la source par une Adresse IP on peut y rajouter le Port et éventuellement un protocole. Les Routeur qui on un adressage IP Dynamique ne peut pas être configuré car leur IP est inconnue. Port Forwarding est seulement configuré aprés le démarrage et la connexion du routeur.si l'Adresse IP du Routeur est connu, les paquets arrivent toujours sur le routeur, puis ils sont adressés à IP Dynamique attribués.

Contrairement à la chaîne Forwarding l'adresse IP déjà connue au boot (ou démarrage).


Important: les Routeurs avec une Adresse IP statique doivent être indiquée ici, autrement le Port-Forwarding ne sera pas réglé correctement et aura un problème d'accés.

Les formats suivants sont possibles:

PORTFW_x_TARGET='<port>'

Tous les paquets (d'internet) qui arrivent sur le port <port> sont transmis à un autre ordinateur du réseau local

PORTFW_x_TARGET='<port1>-<port2>'

Tous les paquets (d'internet) qui arrivent sur l'ensemble de ports <port1> et <port2> sont transmis à un autre ordinateur du réseau local

PORTFW_x_TARGET='<ip>:<port>' ou PORTFW_x_TARGET='<ip>:<port1>-<port2>'

Tous les paquets (d'internet) qui arrivent de l'Adresse IP <IP> et avec le port <port> ou sur l'ensemble des ports <port1> et <port2> sont transmis à un autre ordinateur local. L'Adresse IP locale peut être écrite avec le Nom qui est indiqué de ces variables HOST_x_NAME / HOST_x_ALIAS_x ou référencé dans IP_NET_x (avec cette variable le réseau est entier) ou dans IP_NET_x_IPADDR (IP contenus ici est unique IP du routeur).

PORTFW_x_TARGET='<circuit>:<port>'

Tous les paquets (d'internet) qui arrivent du Circuit <circuit> et avec le port <port> sont transmis à un autre ordinateur du réseau local. Le <circuit> est le numéro du circuit RNIS (ou ISDN) ou "pppoe" pour une connexion DSL (voir le paquetage DSL).

PORTFW_x_TARGET='none'

Pas de restriction sur la source. Tous les paquets qui arrivent sur le Routeur et qui font partie du protocole indiqué dans la variable PORTFW_x_PROTOCO sont transmis à un autre ordinateur du réseau local.

PORTFW_x_TARGET='<ip>:none'

Tous les paquets (d'internet) qui arrivent de IP <IP> , sans restriction sur la source sur le Routeur et qui font partie du protocole indiqué dans la variable PORTFW_x_PROTOCO sont transmis à un autre ordinateur du réseau local.

PORTFW_x_NEW_TARGET

Cette variable indique la destination d'un Port-Forwardings. Cela est généralement un autre ordinateur dans le réseau interne (ou local). Les formats sont les suivants:

PORTFW_x_NEW_TARGET='<ip>'

Transmet les paquets reçus dans le routeur à l'Adresse IP <IP> de l'ordinateur du réseau local. IP  locale peut être indiqué avec le nom de ces variables HOST_x_NAME / HOST_x_ALIAS_x ou référencé dans IP_NET_x (avec cette variable le réseau est entier) ou dans IP_NET_x_IPADDR (IP contenus ici est unique IP du routeur).

PORTFW_x_NEW_TARGET='<ip>:<port>'

Transmet les paquets reçus dans le routeur à l'Adresse IP <IP> et au Port <port> à l'ordinateur du réseau local, dans cette variable on ne peut pas utiliser un ensemble de port <port1>-<port2> IP local peut être indiqué avec le nom de ces variables HOST_x_NAME / HOST_x_ALIAS_x ou référencé dans IP_NET_x (avec cette variable le réseau est entier) ou dans IP_NET_x_IPADDR (IP contenus ici est unique IP du routeur).

PORTFW_x_PROTOCOL

Dans cette variable les protocoles utilisés sont "tcp", "udp", "gre" plus les numéros de protocole autorisés voir la liste des numéros de protocole de IANA ici http://www.iana.org/assignments/protocol-number .

La possibilité de placer vos propres règles dans un Script spécial existe dans les anciennes versions. Cette possibilité n'existe plus depuis la version fli4l 2.1.0, parce que le Script interférerait avec les variables construites dans Port-Forwarding en plus on aurait aucune garanti de fonctionnement

J'ai placé un Script sur ma page d'accueil qui convertit les règles au format de configuration de fli4l. Par exemple les Port-Forwarding-Scripts de l'ancienne versions fli4l peuvent ainsi être transformés en nouveau format:

http://portfolio16.de/fli4l/portfw.pl

Maintenant avec le Client imonc de Windows ou avec le service web httpd, il est possible de modifier les variables ports Forwarding pendant le fonctionnement du Routeur et d'envoyer les variables sur celui-ci en arrière plan.


4.14.9 Module Masquerading

L'avantage de l'IP Masquerade est que plusieurs ordinateurs peuvent se connecter à internet avec une Adresse IP officielle fournie par votre FAI (Fournisseur Accé Internet) mais il y a également des inconvénients.

Par exemple le plus gros problème est qu'aucun ordinateur externe (internet) ne pourra accéder à un ordinateur du réseau local. C'est un phénomène qui est catégoriquement voulu pour des raisons de sécurité, mais certains protocoles ne fonctionnent plus, parce qu'ils dépendent des connexions extérieures.

Un exemple classique est le serveur ftp. En plus d'une voie de transmission qui est utilisée pour les échanges de commandes, un autre canal (sous la forme d'un port IP) est utilisé, pour expédier les données réelles. FLI4L utilise les modules masquerading spécifiques pour alimenter les ports qui sont employés dans ce genre de connexion "ad hoc" ces ports sont seulement permis si des données doivent être envoyées à l'ordinateur LAN (réseau interne). Pourtant le module masquerading écoute les flux de données pour savoir si un port supplémentaire est nécessaire.

Les demandes typiques des modules masquerading sont des protocoles pour des sites de discussion (chat) et pour les jeux sur Internet.

MASQ_MODULE_N MASQ_MODULE_x MASQ_MODULE_x_OPTION

Jusqu'ici le module masquerading de ftp est chargé automatiquement dans fli4l. Il y a d'autre modules additionnels disponibles. Ils peuvent être utilisés avec des options supplémentaires dans MASQ_MODULE_OPTION. Cela est nécessaire par exemple lorsqu'un serveur FTP doit être appelé avec un port autre que le 21. Ici un aperçu des modules avec leurs paramètres standard, les valeurs par défaut sont fixées à l'avance:

ftp
File Transfer Protocol
Paramètre:
ports=21
Indique le port dont le module doit surveiller. Si un Serveur FTP doit être appelé sur un autre p.ex le port 2021, on doit paramètrer "ports=21,2021" .

irc
Internet Relay Chat
Paramètre:
ports=6667
Indique le port, sur lesquel un Serveur IRC, voudrait se connecter.
 
Remarque: La configuration standart est fausse si bien  qu'il ne collabore pas avec ce module. Pour régler correctement mIRC, on procéde de la manière suivante (La connexion au serveur IRC séparent seulement) Dans "Options" => "connect" et "Local Info" ici effacer les deux champs (au cas où ils se sont cochés) mettre alors "Lookup Method" sur Normale.


Un maximum de 12 ports peuvent être paramètrés dans la liste de ports.

Naturellement vous ne pouvez pas programmer un module masquerading pour chaque protocole qui utilise des ports supplémentaires. Par conséquent, il y a une autre possibilité pour expédier de nouveaux ports à un ordinateur LAN (réseau interne). Voir la description au sujet du Port Forwarding ici PORTFW_N. Ou ici: http://www.fli4l.de FAQ au sujet du Port Forwarding.

Configuration des variables:

MASQ_MODULE_N nombre de variable masquerading à charger. MASQ_MODULE_x variable masquerading "x" unité de module à chargé. Dans la variable MASQ_MODULE_x_OPTION on indique les paramètres optionnels. Les paramètres décrits plus haut, peuvent être indiqués séparément.

Par défaut MASQ_MODULE_N est à "1" . Cela signifie: que la première variable masquerading "ftp" sera chargée. Si vous voulez charger plus de variables, vous devrez incrémenter MASQ_MODULE_N. La configuration dans le fichier config/base.txt est uniquement mentionné comme exemple. Vous pouvez la modifier selon vos besoins personnels.

Exemple:

    MASQ_MODULE_N='1'
    MASQ_MODULE_1='ftp'
    MASQ_MODULE_1_OPTION='ports=21,2121'
    MASQ_MODULE_2='irc'
    MASQ_MODULE_2_OPTION=''

Le contenu supplémentaire de MASQ_MODULE_x sera simplement ignoré.

Dans cet exemple le Module FTP est paramétré.

Das Fli4l-Team
24 decembre 2006