Accès internet/Iptables

Bonjour à tous,

je sollicite votre aide a la suite d’un essai de mise en place d’un firewall.
j’ai déjà posté sur le forum DD-WRT pour avoir des renseignements, sans succès.

Voici mon soucis :
nous avons mis en place 2 résaeux IP, par exemple :
192.168.1.200/28 et 192.168.1.210/28

Je souhaiterais mettre en place des règles de firewall permettant au premier réseau d’accéder au web et au deuxième d’accéder uniquement au TSE (le deuxième ne doit pas accéder au web)

j’ai essayé les règles suivantes :

iptables -I FORWARD 1 -s 192.168.1.200/28 -p tcp -m multiport --dports 80,443 -j ACCEPT iptables -I FORWARD 2 -s 192.168.1.210/28 -p tcp -m multiport --dports 3389 -j ACCEPT iptables -I FORWARD 3 -j DROP

Cependant les règles ne semblent pas s’appliquer sur aucun de mes 2 réseaux.

Auriez vous une idée d’où peut venir mon problème?

Cordialement

Alex

Ces notations de réseaux sont erronées : 200 et 210 ne sont pas divisibles par 16.
“Physiquement”, où se situent les deux réseaux, “le web” et “TSE” par rapport au pare-feu ?

Pourquoi utiliser -I plutôt que -A ? Il y a déjà d’autres règles dans la chaîne FORWARD ?
Ces règles ne sont pas suffisantes car elles n’autorisent pas les paquets retour. Il manque la classique règle de suivi de connexion [mono]-m state --state ESTABLISHED,RELATED -j ACCEPT[/mono].
Il peut aussi être nécessaire d’autoriser le trafic DNS s’il doit traverser le firewall.

Mais encore ? Que se passe-t-il exactement ?

Merci pour votre réponse.

Alors pour faire le topo, nous avons des postes derrière un routeur DDWRT. ces postes sont connectés en WIFI. Le serveur TSE est derrière le routeur également mais sur une patte LAN. Ce serveur fait également office de DHCP et de DNS.

Les règles avec -I ne fonctionnaient pas mieux. Il n’y a pas d’autres règles de forwarding.

Les règles ne s’appliquent pas du tout, c’est à dire que notre routeur fait simplement son role de routeur en natant tout ce qui arrive vers l’extérieur sans aucun filtrage, ce qui fait que n’importe quel poste en wifi derrière le routeur a accès à la fois au serveur TSE ainsi qu’à internet

Si je comprends bien, les deux réseaux clients sont dans le même réseau wifi sans autre séparation ?
Où est “le web” ?
La patte LAN (je suppose que tu veux dire “ethernet”) est-elle dans le même réseau que la patte wifi ? C’est assez courant que les deux soient pontées ensemble pour ne faire qu’un seul réseau. Dans ce cas les règles iptables ne s’appliquent au paquets retransmis entre les deux pattes que si la fonction bridge-netfilter du noyau est activée.
Qu’affichent

iptables-save ip addr # ou ifconfig -a si commande non présente

oui les 2 réseaux wifis sont dans le même réseau.

Voici ce que donne la commande ip addr

[quote]1: lo: <LOOPBACK,MULTICAST,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: teql0: mtu 1500 qdisc noop
link/void
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast
link/ether 00:16:01:ed:ed:3a brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast
link/ether 00:16:01:ed:ed:3c brd ff:ff:ff:ff:ff:ff
5: vlan0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc noqueue
link/ether 00:16:01:ed:ed:3a brd ff:ff:ff:ff:ff:ff
6: vlan1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 00:16:01:ed:ed:3b brd ff:ff:ff:ff:ff:ff
7: br0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 00:16:01:ed:ed:3a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
8: etherip0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 9e:4f:8c:59:a8:26 brd ff:ff:ff:ff:ff:ff[/quote]

Oui en effet il me semble que les pattes LAN sont bridgées avec la WLAN (interface br0).
ci-joint un schéma de l’architecture pour mieux comprendre le besoin.

Le réseau 192.168.1.192/28 doit pouvoir accéder au net sans soucis, là où le réseau 192.168.1.208/28 ne doit accéder qu’au TSE. tout le reste étant donc naturellement dropé

Il y a un paquet d’interfaces ! Mais seule br0 (le pont) a une adresse IP. Techniquement on n’est pas obligé d’avoir une adresse sur chaque interface (non pontée), mais je me demande néanmoins si toutes les interface ne seraient pas pontées ensemble, même celle connectée à la passerelle. Dans ce cas, voir ma réponse précédente concernant iptables et le pontage.
Qu’affiche [mono]brctl show[/mono] ?

Quelle est l’adresse IP de la passerelle montrée sur ton schéma ? Si tous les segments du réseau sont pontés ensemble, alors elle est dans 192.168.1.0/24 comme br0.
Quelle est l’adresse de passerelle définie sur les postes ?

la commande brctl show me retourne le résultat suivant :

[quote]bridge name br0
bridge id 8000.001601eded3a
STP enabled no
interfaces vlan0 eth1
[/quote]

Il me semble de mémoire, que toutes les interfaces physiques du LAN font partie du même VLAN.
la passerelle est définie par le DHCP, il s’agit de 192.168.1.254 car le DHCP du routeur est désactivé (le DDWRT est en mode routeur bien évidemment)

Si tous les ports ethernet sont dans le même VLAN et l’adresse de passerelle définie par le DHCP est celle de la passerelle à l’entrée du réseau, alors il est clair que le firewall DD-WRT ne sert pas de routeur mais de simple pont.

Tu as trois options :

a) Faire du filtrage des paquets ethernet pontés avec ebtables, s’il est disponible dans DD-WRT. Mais il n’offre pas toutes les possibilités de filtrage IP d’iptables, notamment pour le suivi de connexion.

b) Activer bridge-netfilter s’il est présent dans le noyau pour les paquets IP pontés en mettant /proc/sys/net/bridge/bridge-nf-call-iptables à 1, ce qui permet d’appliquer les règles iptables aux paquets IP pontés.

c) Séparer les réseaux pour faire du routage entre les différents segments et appliquer les règles iptables aux paquets IP routés. Cela implique :

  • mettre le port du switch interne connecté à la passerelle dans un VLAN distinct de vlan0,
  • ne plus ponter le VLAN du port connecté au serveur (vlan0) et l’interface connectée au wifi (eth1),
  • changer l’adressage IP de deux des réseaux puisqu’ils sont maintenant séparés
  • réactiver un serveur DHCP sur le routeur.
    Et j’en oublie peut-être.

Je pense opter pour la deuxième solution, si le DDWRT le permet.

Je teste ça dans le week end. je ferais un retour au plus vite.

Merci beaucoup

Evidemment ce serait le plus simple. Mais je suis dubitatif car sur un noyau standard cette fonctionnalité est activée par défaut quand elle est présente, ce qui peut perturber les utilisateurs qui n’en sont pas conscients (ceux qui veulent qu’iptables ne s’applique qu’au routage et pas au pontage). Donc si iptables ne s’applique pas aux paquets pontés, c’est probablement parce que la fonctionnalité est absente. C’est facile à vérifier, il suffit de regarder si /proc/sys/net/bridge/bridge-nf-call-* existent. Sinon, il faut changer ou recompiler le noyau avec l’option CONFIG_BRIDGE_NETFILTER=1.

Au hasard voir du coté d’IPCOP : ipcop.org/ :006

D’après le site, IPCop n’est disponible que pour x86, pas pour les petites bestioles qui font tourner DD-WRT.

Comme quoi le temps passe … en 2011 notre formateur Linux faisait une fixette . @+ et bonne année pascal :008
NB: sinon il y a pfsense … à moins …