Demande D'avis sur IPtables

ok d’accord mais j’ai vraiment du mal a comprendre comment fonctionne bien iptables :frowning:

alors voici mon debut de code:


#lan= eth0
#net = eth1
iptables -F
iptables -X

#interface reseau
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#ssh
iptables -A INPUT -i eth1 -s 172.16.0.91 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 172.16.0.91 -m state --state ESTABLISHED -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

#rajout de route pour pourvoir sortir sur le NET
route del default
route del default
route add default gw 172.16.0.254

#Firewall Linux acces en HTTP (80&53)

iptables -A INPUT -i eth1 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth1 --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol udp --destination-port 53 -j ACCEPT
iptables -A INPUT -i eth1 --protocol tcp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol tcp --destination-port 53 -j ACCEPT


#LAN==>Dansguardian==>SQUID ==> NET
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP

Pour l’instant sur mon serveur j’ai acces en SSh , il fait de l’HTTP et resolution DNS.
J’ai mis en place le NAT pour que les postes lan est acces a internet mais cela ne passe pas , que me manquent il ?? j’ai mis en place le NAT.

MErci d’avance

guigui69

Bonjour a tous, je suis tjr sur iptables.


LAN= eth0
NET = eth1

iptables -A FORWARD -s 192.168.0.2 -p tcp --sport 53 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -p udp --sport 53 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 53 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 53 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -p tcp --sport 80 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 80 -i eth1 -o eth0 -j ACCEPT

Je suis arrivé (avec une machine de test) a la faire traversé le firwall ca marche(web ,dns, mail) mais maintenant car le but des machine qui passeront directement a travert le firewall ca sera mes serveur et je voudrait seulement les autorisé a acceder au net directement (80,443 et dns) en SMTP (notre serveur donne tou au smtp de notre FAI) et pop.

J’ai essayer avec la regle cité au dessus pour qu’il ai juste acces au net mais ca marche pas.

Ou est mon erreur ?
Quel parametre est en trop ?
Ou bien manque t-il des paramtres ?

Merci d’avance pour l’aide que vous m’apporter

guigui69

On va faire étape par étape…
Peux tu déjà donner un script minimal qui fasse juste le partage de ta connection: c’est tout, pas de filtrage, accés à tous les services pour l’instant.
Va z y je te corrige, et aprés on verrouillera/déverrouillera ce qu’il faut.


iptables -F
iptables -X

#interface reseau
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#ssh
iptables -A INPUT -i eth1 -s 172.16.0.91 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 172.16.0.91 -m state --state ESTABLISHED -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

#rajout de route pour pourvoir sortir sur le NET
route del default
route del default
route add default gw 172.16.0.254

#Firewall Linux acces en HTTP (80&53)

iptables -A INPUT -i eth1 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth1 --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol udp --destination-port 53 -j ACCEPT
iptables -A INPUT -i eth1 --protocol tcp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth1 --protocol tcp --destination-port 53 -j ACCEPT


#LAN==> NET
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A INPUT -i eth1 -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP


avec ce script ma machine client a le net en utilisant FORWARD. si je met que "iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE " le net ne passe pas.

J’ai dit minimal, pas de filtrage, pas de drop, uniquement un partage de connection et rien d’autre.
Tu sais faire ça déjà ?


iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward 

Comme ceci?
Ou est que je me suis trompé encore !! :frowning: