Iptables sur 3 cartes reseaux

je te mets l’iptables.sh car je ne sais plus où j’en suis

[code]#reinitialisation

Reset counters

iptables -Z
iptables -Z -t mangle
iptables -Z -t nat

Flush rules

iptables -F
iptables -F -t nat
iptables -F -t mangle

#je bloque tout
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/ip_forward

#accepte connex lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.20

#Pour la premiere carte vers eth0
iptables -A FORWARD -i eth1 -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Pour la seconde carte vers eth0
iptables -A FORWARD -i eth2 -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -o eth2 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.223.42 -o eth0 -j MASQUERADE

ssh

iptables -A INPUT -p tcp -m tcp -s 192.168.223.42 --dport 22 -j ACCEPT

on ouvre le port tcp/22 (ssh) pour une ip

#iptables -A INPUT -m state --state NEW -p tcp -s 192.168.223.42/255.255.255.255 --sport 1024: --dport 22 -j ACCEPT
#iptables -A INPUT -i eth1 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -i eth1 -m state --state NEW,ESTABLISHED -p tcp --sport 22 -j ACCEPT

[/code]

etc/network/interfaces :

[code]# The loopback network interface
auto lo
iface lo inet loopback

The primary network interface

auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.223.119
netmask 255.255.252.0
network 192.168.220.0
broadcast 192.168.223.255

auto eth2
iface eth2 inet static
address 10.17.27.119
netmask 255.255.255.128[/code]

resolv.conf = nameserver 192.168.1.1 (neufbox)

tu me parle de matcher , comment on voit ça ?

les trucs qui marchent :

acces internet depuis les postes branchés sur eth1 et eth2

les trucs qui marchent pas :

tres long pour se connecter en ssh sur le serveur , mais je me connect

depuis le serveur , avec putty , impossible de se connecter sur internet
tres genant pour installer ou mettre à jour

merci

Je parlais d’une incohérence avec la table de routage mais non cela colle, je devais pas avoir les yeux dans les trous, j’ai confondu 255.255.252.0 avec 255.255.255.0. soit un /22 avec un /24.

[quote=“bellad”]je te mets l’iptables.sh car je ne sais plus où j’en suis

[code]#reinitialisation

Reset counters

iptables -Z
iptables -Z -t mangle
iptables -Z -t nat

Flush rules

iptables -F
iptables -F -t nat
iptables -F -t mangle

#je bloque tout
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/ip_forward

#accepte connex lo
iptables -A INPUT -i lo -j ACCEPT
[/code]
[/quote]

Tu as une politique par défaut en ACCEPT pour la chaine OUTPUT, donc il n’est pas nécessaire d’ajouter la ligne suivante :

iptables -A OUTPUT -o lo -j ACCEPT

La première ligne avec MASQUERADE est utilisée dans la configuration où ta machine à une ip dynamique ; cela permet de récupérer cette ip à chaque fois pour faire la me chose que la ligne suivante. Par conséquent, la ligne 1 est plus gourmande en ressources que la ligne 2, et de ce fait, il est inutile d’écrire ces deux lignes. La dernière est suffisante car ton ip est statique sur l’interface eth0.

Cela signifie que toutes les machines situées sur le réseau déservit par l’interface eth1, ont un accès entier à l’internet au travers de ta gateway (SSH, FTP, HTTP …)
Par contre, toute tentative de connexion depuis l’extérieur n’est pas autorisée à moins d’avoir au préalable été initialisée par une machine de ton réseau sur eth1.

Idem mais pour eth2
Il y a de la redondance sur les etats ESTABLISHED et RELATED pour la chaîne FORWARD. Pourquoi ne veux tu pas autoriser tout le traffic pour les états RELATED et ESTABLISHED pour toute la chaîne FORWARD., et simplement autoriser les état NEW que tu souhaites ? (C’est ce que je t’avais proposé, mais tu n’as pas l’air d’y adhérer, bien que tu ne me donnes aucune explication)

Quel est l’intérêt d’une telle règle sachant que tu as déjà créé une règle pour la chaîne POSTROUTING pour faire la même chose pour n’importe quelle source ?

Seuls les états NEW et ESTABLISHED devraient être nécessaires pour la chaîne INPUT.

Je te l’ai déja dis, si tu effectues une commande iptables -L -v tu auras quelque chose comme cela :

sid:/home/thialme/download# iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
99948   23M ACCEPT     0    --  lo     any     anywhere             anywhere            
  449 49802 inputs_new  0    --  any    any     anywhere             anywhere            state NEW 
    8   448 inputs_related  0    --  any    any     anywhere             anywhere            state RELATED 
 200K  181M ACCEPT     0    --  any    any     anywhere             anywhere            state ESTABLISHED 
    1   464 DROP       0    --  any    any     anywhere             anywhere            state INVALID 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   13   780 forwards_new  0    --  bond0  eth2    etch.toystory.lan    anywhere            state NEW 
  881  479K ACCEPT     0    --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    0     0 DROP       0    --  any    any     anywhere             anywhere            state INVALID 

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
99948   23M ACCEPT     0    --  any    lo      anywhere             anywhere            
 9631  648K outputs_new  0    --  any    any     anywhere             anywhere            state NEW 
 142K   25M ACCEPT     0    --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    6   312 DROP       0    --  any    any     anywhere             anywhere            state INVALID 

Ceci est une partie du résultat que j’obtiens chez moi. On peux ainsi constater que 13 paquets ont matché dans la chaîne FORWARD comme étant de type NEW vers Internet (eth2) Ces paquets s’appliquent à la règle.

Oui, cela correspond bien a ce que je disais au dessus.

Ta chaîne INPUT ne travaille que sur le port 22, il faudrait penser à autoriser tous les ports > 1024 en RELATED et ESTABLISHED, voir aussi le port 80, 21 dans les chaines INPUT pour l’état NEW.

Je crois que je n’ai rien oublié.

bon j’ai rectifié ce que tu m’a dit

[code]#!/bin/sh

#reinitialisation

Reset counters

iptables -Z
iptables -Z -t mangle
iptables -Z -t nat

Flush rules

iptables -F
iptables -F -t nat
iptables -F -t mangle

#je bloque tout
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/ip_forward

#accepte connex lo
iptables -A INPUT -i lo -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.20

#Filtrer les arrivées d’internet
iptables -A INPUT -i eth0 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT

#Pour la premiere carte vers eth0
iptables -A FORWARD -i eth1 -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Pour la seconde carte vers eth0
iptables -A FORWARD -i eth2 -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -o eth2 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

ssh

iptables -A INPUT -p tcp -m tcp -s 192.168.223.42 --dport 22 -j ACCEPT
[/code]
quand tu dis :

parce que la ligne iptables -A INPUT -p tcp -m tcp -s 192.168.223.42 --dport 22 -j ACCEPT
c’est pour que mon poste accede au ssh du serveur

est ce que c’est ça ?

#Filtrer les arrivées d'internet iptables -A INPUT -i eth0 --protocol tcp --source-port 22 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -L -v

[code]Chain INPUT (policy DROP 45 packets, 5279 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT 0 – lo any anywhere anywhere
0 0 ACCEPT tcp – eth0 any anywhere anywhere tcp spt:ftp state ESTABLISHED
365 20550 ACCEPT tcp – any any 192.168.223.42 anywhere tcp dpt:ssh

Chain FORWARD (policy DROP 5 packets, 6008 bytes)
pkts bytes target prot opt in out source destination
49368 38M ACCEPT 0 – eth1 eth0 anywhere anywhere state NEW,RELATED,ESTABLISHED,UNTRACKED
42757 23M ACCEPT 0 – eth0 eth1 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT 0 – eth2 eth0 anywhere anywhere state NEW,RELATED,ESTABLISHED,UNTRACKED
0 0 ACCEPT 0 – eth0 eth2 anywhere anywhere state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 483 packets, 105K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp – any eth0 anywhere anywhere tcp dpt:ftp state NEW,ESTABLISHED[/code]

mais je n’arrive toujours pas à sortir , par exemple:
depuis le serveur à aller sur ftp.fr.debian avec aptitude

@+

[quote]quand tu dis :

[quote]Ta chaîne INPUT ne travaille que sur le port 22, il faudrait penser à autoriser tous les ports > 1024 en RELATED et ESTABLISHED, voir aussi le port 80, 21 dans les chaines INPUT pour l’état NEW
[/quote]
[/quote]

Ca y est je commence à dire des betises : t’occupe pas du port 80 et 21 sur la chaine INPUT.

Si tu t’occupais du port 80 en INPUT cela signifierait que tu as un serveur web, et un serveur ftp pour le port 21 (mais la cela se complique)

Je vais procéder autrement, car il me semble que tu ne comprends pas bien les règles iptables.

Comment autoriser ton serveur à aller sur Internet ? impact sur la chaine INPUT et OUTPUT, si tu arrives a trouver ça, cela devrait rouler tout seul.

chouette j’vais avoir ma reponse

ben non

j’ai essayé ça mais nada
donc c’est pas ça

iptables -A INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

Cela commence à m’énerver, je t’ai donné plein d’indices avec le nombre de messages postés, mais tu ne tiens pas compte de toutes mes remarques, et au final je pense que tu n’as pas compris ce que tu as mis pour la chaîne FORWARD. Tu veux filtrer toute la chaîne INPUT en prenant en compte tous les états de connexions pour chaque protocole, cela ne tient qu’à toi, mais on dirait qu’il te manque certaines bases. Voila pourquoi je ne donne plus mon script iptables car beaucoup trop de gens ne prennent pas la peine de comprendre quoi que ce soit.
C’est quoi un état NEW, ESTABLISHED, RELATED, INVALID, l’envoie d’une requête sur un serveur web se fait avec quel port source et quel port destination, quel sont les états de connexions engendrés par le handshake ? Tout un tas de questions à se poser. Pour aller sur le net, il faut dans un premier temps faire la résolution de nom inverse et obtenir par exemple l’adresse ip associé à example.com (c’est un protocole à mettre en oeuvre), ensuite il faut lui envoyer des données et les recevoir. Il n’y a rien de sorcier. Je t’ai dis comment faire pour matcher tes règles simplement sans mettre en place de log, et ensuite si tu ne vois vraiment pas pourquoi rien ne passe au travers de ton firewall, tu peux utiliser un sniffer pour espionner les trames et découvrir ce que tu avais oublié.

Donc voila la doc :
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
Normalement, il y a des exemples.

Si tu ne veux pas te poser toutes ces questions en passant des heures à comprendre comment tout cela s’enchaîne, soit quelqu’un sur le forum voudra bien te les expliquer, soit il faut changer de coin et aller voire du côté d’un firewall avec tout plein de beaux graphiques et de belles icones. A toi de choisir ton camps.

Désolé, mais je manque de patiente, malgré le fait que j’aime bien aidé les gens pour qu’ils comprennent.

bon laisse tombe
tout le monde ne connait pas comme toi iptables
chacun à ses connaissances sur certaines choses
les forum sont fait pour ça
je ne voudrais pas que tu passe un mauvais week end a cause de moi
je trouverai , ailleurs , des personnes plus patiente
bonne nuit

merci quand meme