Installation de filtres sur un routeur Windows 2000 Server

Le routeur et accès distant a une fonction filtres/pare-feu intégré.
Pour la mise en œuvre des filtres il suffit de suivre ces captures d'écrans.

ATTENTION quand même, une erreur de configuration peut entraîner une indisponibilité
de l'accès total à Internet, il faut comprendre ce que l'on fait avant de se lancer.

Cette page indique comment installer un filtre en entrée ou en sortie de votre routeur, je n'ai
pas montré volontairement tous les filtres à poser, cela dépend de la configuration du serveur,
du réseau local et du besoin des utilisateurs. Pour savoir quels sont les ports a filtrer ou
à laisser passer on peut utiliser l'excellent outil TCPVIEW.EXE gratuit téléchargeable sur
http://www.sysinternals.com/

Pour accéder à la fonction "Filtres" il suffit de cliquer avec le bouton de droit de votre
souris pour faire apparaître le menu contextuel de votre Routeur Distant et sélectionner
Propriétés du lien à filtrer.

Dans la fenêtre "Propriétés" > onglet "Général", deux boutons, "Filtres d'entrée..." et "Filtres de sortie..."
nous intéresse.

Sélectionner "Filtres d'entrée..." pour tous les filtres que vous souhaitez poser venant de l'extérieur et
allant vers l'intérieur. Plusieurs paramètres peuvent être définis, Adresse source(pour l'entrée adresse IP
distante), masque de source, si vous souhaitez n'interdire qu'une adresse comme par exemple www.google.fr
66.102.11.99 il faut mettre le masque à 255.255.255.255. Dans les adresses de destination si vous ne mettez
rien ce filtre sera effectif pour toutes les adresses IP de votre réseau mais vous pouvez définir une ou plusieurs
adresses avec un masque associé. Le raisonnement sera inverse pour les filtres en sortie.

Dans mon cas, je souhaite poser un filtre sur tous les paquets ICMP (ping) provenant de toutes les adresses
extérieures et allant vers toutes les adresses de mon réseau privé.

Il en sera de même pour le protocole ICMP (ping) en sortie, aucune station de mon réseau privé ne
pourra faire de ping sur le réseau privé, ce qui économisera sérieusement les connexions "intempestives"
si vous vous connectez sur le réseau public à l'aide d'une liaison "routeur RNIS" et que vous payez les
communications.

Voici dans un interpréteur de commande le résultat d'un ping après avoir installer un filtre
ICMP en sortie et le résultat d'un autre ping après l'avoir supprimé, nous n'obtenons plus
de réponse du site www.google.fr si l'on retire le filtre, nous obtenons une réponses.

Vous pouvez aussi poser vos filtres en utilisant un fichier script de type bat ou cmd a l'aide de la commande netsh.
Voici un exemple son mon lien ADSL


monipfilter.cmd

Rem fermeture du port Telnet 23 en entrée
netsh routing ip add filter name="ADSL" filtertype=input srcaddr=0.0.0.0 srcmask=0.0.0.0 dstaddr=0.0.0.0 dstmask=0.0.0.0 proto=tcp srcport=0 dstport=23
Rem fermeture du port Telnet 23 en sortie
netsh routing ip add filter name="ADSL" filtertype=output srcaddr=0.0.0.0 srcmask=0.0.0.0 dstaddr=0.0.0.0 dstmask=0.0.0.0 proto=tcp srcport=0 dstport=23

Dans la définition d'un filtre en entrée "input" srcaddr est l'adresse source et dont l'adresse qui vient
de l'extérieur, l'adresse dstaddr étant l'adresse destination et donc l'adresse intérieure, les masques
suivent la même règle, les ports scrport et dstport suivant aussi la même règle.
Dans le cas de l'exemple j'ai posé un filtre sur le port 23 (telnet). De l'exterieur toute requête destinée
au port 23 sera rejetée, et il en sera de même pour une station de travail souhaitant utiliser le port 23
en sortie "output".

Ce parefeu peut fonctionner de deux manières différentes :

"Transmettre tous les paquets sauf ...."
ou
"Rejeter tous les paquets sauf ....
"

Le premier choix étant "J'accepte tout et je rejette ce qui me dérange".
Le deuxième choix étant, "Je refuse tout, sauf ce que l'autorise".

C'est à vous de choisir ce qui vous parait important de faire.

Pour plus de détails sur la commande en ligne netsh :

C:\>netsh /?

Utilisation : netsh [-a Fichier_alias] [-c Contexte] [-r Ordinateur_distant]
[-u [Nom_domaine\]Nom_utilisateur] [-p Mot_passe | *]
[Commande | -f Fichier_script]

Les commandes suivantes sont disponibles :

Commandes dans ce contexte :
? - Affiche une liste de commandes.
aaaa - Modifications pour le contexte `netsh aaaa'.
add - Ajoute une entrée de configuration à une liste d'entrées.
delete - Supprime une entrée de configuration d'une liste d'entrées.
dhcp - Modifications pour le contexte `netsh dhcp'.
diag - Modifications pour le contexte `netsh diag'.
dump - Affiche un script de configuration.
exec - Exécute un fichier script.
help - Affiche une liste de commandes.
interface - Modifications pour le contexte `netsh interface'.
ipsec - Modifications pour le contexte `netsh ipsec'.
ras - Modifications pour le contexte `netsh ras'.
routing - Modifications pour le contexte `netsh routing'.
rpc - Modifications pour le contexte `netsh rpc'.
set - Met à jour les paramètres de configuration.
show - Affiche les informations.
wins - Modifications pour le contexte `netsh wins'.

Les sous-contextes suivants sont disponibles :
aaaa dhcp diag interface ipsec ras routing rpc wins

Pour consulter l'aide d'une commande, entrez la commande, suivie par un
espace, et ensuite entrez ?.


Référence sur le site Microsoft :
http://technet2.microsoft.com/WindowsServer/en/Library/327de2ff-75fe-402e-923c-eb5a803731111033.mspx

Et plus particulièrement sur sur netsh routing ip add :

C:\>netsh routing ip add ?

Les commandes suivantes sont disponibles :

Commandes dans ce contexte :
add boundary - Ajoute une limite d'étendue de multidiffusion à une interface
add filter - Ajoute un filtre de paquets à une interface spécifiée.
add interface - Active le transfert IP sur une interface.
add persistentroute - Ajoute un itinéraire statique persistant.
add preferenceforprotocol - Ajoute un niveau de préférence pour un protocole d
routage.
add rtmroute - Ajoute un itinéraire non persistant (NetMgmt).
add scope - Ajoute une étendue de multidiffusion.

C:\>netsh routing ip add filter /?

Utilisation : add filter [name=]<chaîne> [filtertype=]{INPUT|OUTPUT|DIAL}
[srcaddr=]<adresse IP> [srcmask=]<masque sous-réseau IP>
[dstaddr=]<adresse IP> [dstmask=]<masque sous-réseau IP>
{ [proto=] ANY |
[proto=]{TCP|TCP-EST|UDP} [srcport=]<entier>
[dstport=]entier> |
[proto=] ICMP [type=]<entier> [code=]<entier> }


Paramètres :

Paramètre Valeur
name - Nom de l'interface à laquelle le paquet doit être
ajouté.
filtertype - L'une des valeurs suivantes :
input : Si le filtre modifié est un filtre en entrée
output : Si le filtre modifié est un filtre en sortie
dial : Si le filtre modifié est un filtre d'interface
de numérotation en entrée qui est connectée
srcaddr - Champ de l'adresse source du paquet devant être
filtré.
srcmask - Masque d'adresse source du paquet devant être filtré.
Une adresse et un masque ne contenant que des 0
indique TOUS.
dstaddr - Champ de l'adresse de destination du paquet devant
être filtré.
dstmask - Masque de l'adresse de destination du paquet devant
être filtré.
proto - Le type de protocole du paquet devant être filtré.
srcport - Champ du port source du paquet devant être filtré.
Une valeur de 0 indique TOUS.
dstport - Champ du port de destination du paquet devant être
filtré.
Une valeur de 0 indique TOUS.
type - Champ du type ICMP du paquet devant être filtré.
Une valeur de 255 indique TOUS.
code - Champ du code ICMP du paquet devant être filtré.
Une valeur de 255 indique TOUS.
Remarques : Ajoute un filtre de paquet à l'interface spécifiée.

Exemples :

add filter name="Connexion privée virtuelle" filtertype=input
srcaddr=0.0.0.0 srcmask=255.255.255.255 dstaddr=169.254.0.0
dstmask=255.255.0.0 proto=any

add filter "Connexion privée virtuelle" input 0.0.0.0 0.0.0.0
169.254.0.0 255.255.0.0 any
 

Simple, basique et efficace, comme iptables sous Linux.

Retour