[NEWBY] Simple question d'IpTables

Le
Fauberteau Frédéric
Malgré avoir lu en détail la page man et l'article de léa linux, je n'ai
pas réussi à configurer correctement mes iptables, je n'ai pas de page
qui s'affiche dans mon navigateur :-(
Pourriez-vous m'aider à comprendre ce qui ne va pas dans ce script ?
sachant que mon PC est connecté au net par ppp0 et qu'un autre PC est
connecté au mien par eth0
J'utilise une Mandrake 9.2 avec noyau 2.4.22 et iptables 1.2.8
Merci d'avance pour votre aide.

#!/bin/sh
#
# Script de démarrage du firewall

echo 1 > /proc/sys/net/ipv4/ip_forward

# Bloquer le spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi

# Bloquer ICMP

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Chargement des modules
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc

# Nettoyage des règles
iptables --flush
iptables --delete-chain

# Gestion des logs
iptables --new-chain LOG_DROP
iptables --append LOG_DROP --jump LOG --log-prefix '[IPTABLES DROP] : '
iptables --append LOG_DROP --jump DROP

iptables --new-chain LOG_ACCEPT
iptables --append LOG_ACCEPT --jump LOG --log-prefix '[IPTABLES ACCEPT] : '
iptables --append LOG_ACCEPT --jump ACCEPT

# Cible par défaut (rejet)
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

# Autoriser la boucle locale
iptables --append INPUT --in-interface lo --jump ACCEPT
iptables --append OUTPUT --out-interface lo --jump ACCEPT

# Connexion internet
iptables --append INPUT --in-interface ppp0 --match state
--state ESTABLISHED --protocol tcp --source-port 80 --jump ACCEPT
iptables --append OUTPUT --out-interface ppp0 --match state
--state NEW,ESTABLISHED --protocol tcp --source-port 80 --jump ACCEPT

# Accepter le forwarding
iptables --append FORWARD --in-interface ppp0 --out-interface eth0
--destination 192.168.13.2
--protocol tcp --source-port 80 --match state --state NEW,ESTABLISHED
--jump ACCEPT
iptables --append FORWARD --in-interface eth0 --out-interface ppp0
--source 192.168.13.2
--protocol tcp --source-port 80 --match state --state ESTABLISHED
--jump ACCEPT

# Masquerading
iptables --table nat --append POSTROUTING --source 192.168.13.0/24
--jump MASQUERADE

# Le reste
iptables --append INPUT --jump LOG_DROP
iptables --append OUTPUT --jump LOG_DROP
iptables --append FORWARD --jump LOG_DROP
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TiChou
Le #1045515
Dans le message *Fauberteau Frédéric* tapota sur f.c.o.l.configuration :

Malgré avoir lu en détail la page man et l'article de léa linux, je n'ai
pas réussi à configurer correctement mes iptables, je n'ai pas de page
qui s'affiche dans mon navigateur :-(
Pourriez-vous m'aider à comprendre ce qui ne va pas dans ce script ?
sachant que mon PC est connecté au net par ppp0 et qu'un autre PC est
connecté au mien par eth0 ...
J'utilise une Mandrake 9.2 avec noyau 2.4.22 et iptables 1.2.8

#!/bin/sh
#
# Script de démarrage du firewall

echo 1 > /proc/sys/net/ipv4/ip_forward

# Bloquer le spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi


Quand je vois ce bout de script que l'on retrouve dans de nombreux scripts
iptables et dans de nombreux dictatitiels, ça me fait penser à un UUOC.

[ -f /proc/sys/net/ipv4/conf/all/rp_filter ]
&& echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Bloquer ICMP

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Chargement des modules
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc



Si j'ai un conseil à vous donner, c'est d'écrire vos règles iptables en
utilisant le format court des options, c'est dans la très grande majorité
des cas que ce format est utilisé, donc si vous en faites de même, vous
règles seront lues avec plus de facilité.

# Nettoyage des règles
iptables --flush
iptables --delete-chain


Ici vous ne nettoyez que la table filter. Il faut penser aussi à nettoyer la
table nat puisque vous l'utilisez.

iptables -t nat -F
iptables -t nat -X

Il peut être aussi utile de remettre les compteurs à zéro.

iptables -t filter -Z
iptables -t nat -Z

# Gestion des logs
iptables --new-chain LOG_DROP
iptables --append LOG_DROP --jump LOG --log-prefix '[IPTABLES DROP] : '
iptables --append LOG_DROP --jump DROP

iptables --new-chain LOG_ACCEPT
iptables --append LOG_ACCEPT --jump LOG --log-prefix '[IPTABLES ACCEPT] :
' iptables --append LOG_ACCEPT --jump ACCEPT


Cette chaine utilisateur n'est utilisée nulle part.

# Cible par défaut (rejet)
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP


On peut aussi définir la politique par défaut à appliquer sur les chaines de
la table nat.

# Autoriser la boucle locale
iptables --append INPUT --in-interface lo --jump ACCEPT
iptables --append OUTPUT --out-interface lo --jump ACCEPT

# Connexion internet
iptables --append INPUT --in-interface ppp0 --match state
--state ESTABLISHED --protocol tcp --source-port 80 --jump ACCEPT
iptables --append OUTPUT --out-interface ppp0 --match state
--state NEW,ESTABLISHED --protocol tcp --source-port 80 --jump ACCEPT


Ici, si le but est d'autoriser la machine à faire du trafic sur des sites
Web, alors votre règle sur la chaîne OUTPUT est erronée, le port 80 est le
port de destination, pas le port source.

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

# Accepter le forwarding
iptables --append FORWARD --in-interface ppp0 --out-interface eth0
--destination 192.168.13.2
--protocol tcp --source-port 80 --match state --state NEW,ESTABLISHED
--jump ACCEPT
iptables --append FORWARD --in-interface eth0 --out-interface ppp0
--source 192.168.13.2
--protocol tcp --source-port 80 --match state --state ESTABLISHED
--jump ACCEPT


Idem.

iptables -A FORWARD -o ppp0 -i eth0 -p tcp --dport 80 -s 192.168.13.2
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --sport 80 -d 192.168.13.2
-m state --state ESTABLISHED -j ACCEPT

# Masquerading
iptables --table nat --append POSTROUTING --source 192.168.13.0/24
--jump MASQUERADE


On peut préciser l'interface d'entrée et limiter à la seule machine
raccordée.

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


Il manque les règles sur le trafic DNS et sur le trafic icmp utile.

# DNS
iptables -A OUTPUT -o ppp0 -p udp --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 53
-m state --state ESTABLISHED -j ACCEPT


iptables -A FORWARD -o ppp0 -i eth0 -p udp --dport 53 -s 192.168.13.2
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -p udp --sport 53 -d 192.168.13.2
-m state --state ESTABLISHED -j ACCEPT

# ICMP
iptables -A INPUT -i ppp0 -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -A INPUT -i ppp0 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp --icmp-type parameter-problem -j ACCEPT

iptables -A OUTPUT -o ppp0 -p icmp -m state RELATED -j ACCEPT



iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type destination-unreachable -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type source-quench -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type time-exceeded -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type parameter-problem -j ACCEPT

iptables -A FORWARD -o ppp0 -i eth0 -p icmp -m state RELATED -j ACCEPT


# Le reste ...
iptables --append INPUT --jump LOG_DROP
iptables --append OUTPUT --jump LOG_DROP
iptables --append FORWARD --jump LOG_DROP


En reprenant l'ensemble des règles et en supprimant les règles redondantes
cela donnerait au final :

#!/bin/sh
#
# Script de démarrage du firewall

echo 1 > /proc/sys/net/ipv4/ip_forward


# Bloquer le spoofing

[ -f /proc/sys/net/ipv4/conf/all/rp_filter ]
&& echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


# Bloquer ICMP

echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts


# Chargement des modules

modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc


# Nettoyage des règles

iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z

iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z


# Gestion des logs

iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
iptables -A LOG_DROP -j DROP

iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : '
iptables -A LOG_ACCEPT -j ACCEPT


# Cible par défaut (rejet)

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


# Autoriser la boucle locale

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Connexion internet

iptables -A OUTPUT -o ppp0 -p tcp --dport 80
-m state --state NEW -j LOG_ACCEPT


# Accepter le forwarding

iptables -A FORWARD -o ppp0 -i eth0 -p tcp --dport 80 -s 192.168.13.2
-m state --state NEW -j LOG_ACCEPT


# Masquerading

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


# DNS

iptables -A OUTPUT -o ppp0 -p udp --dport 53
-m state --state NEW -j LOG_ACCEPT

iptables -A FORWARD -o ppp0 -i eth0 -p udp --dport 53 -s 192.168.13.2
-m state --state NEW -j LOG_ACCEPT

# ICMP

iptables -A INPUT -i ppp0 -p icmp
--icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp
--icmp-type source-quench -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp
--icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp
--icmp-type parameter-problem -j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type destination-unreachable -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type source-quench -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type time-exceeded -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp
--icmp-type parameter-problem -j ACCEPT


# Trafic établi et suivi

iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT
iptables -A OUTPUT -o ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -i eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT


# Le reste ...

iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP
iptables -A FORWARD -j LOG_DROP

Merci d'avance pour votre aide.


De rien et j'espère n'avoir rien oublié et n'avoir fait aucune faute
syntaxique.

--
TiChou

Fauberteau Frédéric
Le #1526267
Merci beaucoup, je comprends mieux mes erreurs (et celles présentes sur
lea-linux). ICMP, qu'est-ce ? Parce que si je comprends bien, dans votre
script, on le bloque au début (comme de le mien), puis on l'autorise à
la fin. Ou peut-être y a-t-il une nuance ...
Encore merci ;-)

--
Pour me joindre : mangeur_de_code |at| hotmail |dot| com
TiChou
Le #1046682
Dans le message *Fauberteau Frédéric* tapota sur f.c.o.l.configuration :

Merci beaucoup,


Pas de quoi.

je comprends mieux mes erreurs (et celles présentes sur lea-linux).

ICMP, qu'est-ce ?


C'est le protocole Internet qui permet d'émettre et de recevoir des messages
informatifs et d'erreur sur l'état d'une connexion, d'un réseau, etc.

Parce que si je comprends bien, dans votre
script, on le bloque au début (comme de le mien),


L'icmp est très souvent assimilé au ping alors que celui ci n'est qu'un des
types de messages de ce protocole. Le ping utilise l'icmp echo/reply et
c'est celui ci qui a été bloqué par les lignes :

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

ce que d'ailleurs je ne recommande pas de faire. Si on veut limiter les
nuisances possibles avec l'icmp echo, il suffit alors d'utiliser le match
limit dans une règle iptables.
Par exemple :

iptables -A INPUT -p icmp --icmp-type echo-request
-m length --length 0:92
-m limit --limit 60/minute -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

puis on l'autorise à la fin.


Le trafic icmp qui est autorisé, est celui que je qualifie de trafic icmp
utile et qu'il est vivement recommandé de ne pas filtrer car ces icmp
permettent, par exemple, d'informer immédiatement une machine cliente qui
tente de se connecter à un serveur Web distant qui serait temporairement
inaccessible, que la connexion à ce serveur ne peut justement pas avoir
lieu. Si l'icmp était filtré, la machine cliente attenderait indéfiniment
que la connexion s'établisse sans savoir qu'elle ne pourra pas au final
aboutir.

Ou peut-être y a-t-il une nuance ...


Pour mieux comprendre ce protocole et son utilité je vous invite à lire les
très bonnes documentations suivantes :

http://www.commentcamarche.net/internet/icmp.php3

et l'incontournable site de Christian CALECA :

http://christian.caleca.free.fr/

http://christian.caleca.free.fr/tcpip/les_protocoles.htm

Encore merci ;-)


De rien. :)

--
TiChou

Fauberteau Frédéric
Le #1526241
j'ai supprimé ces lignes, car ne pas pouvoir utiliser ping dans un
réseau est bien gênant :
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

J'ai remplacé OUTPUT par FORWARD à la 4ème ligne dans ceci :
# Trafic établi et suivi
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT
iptables -A OUTPUT -o ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -i eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT
Je pense qu'il y avait une erreur.

Cela marche bien pour ma machine principale, mais il y a encore quelques
petits soucis.
Le 2° PC connecté au 1° n'accède pas à internet. Le navigateur cherche
la page puis dis que le délai est dépassé. Pourtant, le 2° à l'IP du 1°
comme GATEWAY ...
J'ai voulu ouvrir le port 1863 (MSN), le serveur synchronise, mais ça
bloque au moment de l'envoi du mot de passe sous gaim ...

Savez-vous s'il y a un moyen de savoir ce que traffique un programme
lorsqu'il essaye de se connecter à quelquechose ?
Auriez-vous des idées pour mes problèmes ?
J'ai relu et relu le script et il me semble nickel pour que mon deuxième
PC puisse se connecter à internet via MASQUERADE ...
TiChou
Le #1526229
Dans le message *Fauberteau Frédéric* tapota sur f.c.o.l.configuration :

J'ai remplacé OUTPUT par FORWARD à la 4ème ligne dans ceci :
# Trafic établi et suivi
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT
iptables -A OUTPUT -o ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -i eth0
-m state --state ESTABLISHED,RELATED -j ACCEPT
Je pense qu'il y avait une erreur.


Non, c'était bien la chaîne FORWARD et je ne vois d'ailleurs pas ce qui a pu
vous faire croire que ma règle était erronée ou qu'il s'agissait de la
chaîne OUTPUT.
Par contre votre règle ne peut fonctionner car la chaîne OUTPUT n'accepte
pas l'option '-i interface', logique puisque cette chaîne filtre le trafic
sortant.

Mes deux règles FORWARD ont pour but d'autoriser à « forwarder » le trafic
entre vos machines derrière votre passerelle Linux et Internet sur des
connexions déjà établies et qui donc ont été autorisées auparavant à
s'établir (-m match --state NEW). Elles permettent aussi d'autoriser à «
forwarder » les nouvelles connexions en rapport avec des connexions déjà
établies (par exemple ftp, ou icmp).
Il y a une règle pour le sens Internet -> Machine et une autre pour le sens
Machine -> Internet.
On aurait d'ailleur pu se contenter d'une seule règle en ne spécifiant
aucune interface :

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Cela marche bien pour ma machine principale, mais il y a encore quelques
petits soucis.
Le 2° PC connecté au 1° n'accède pas à internet. Le navigateur cherche
la page puis dis que le délai est dépassé. Pourtant, le 2° à l'IP du 1°
comme GATEWAY ...


Je me rends compte que la règle de masquerading se réfère à la mauvaise
interface, eth0 aulieu de ppp0. Après correction :

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.13.2 -j MASQUERADE

J'ai voulu ouvrir le port 1863 (MSN), le serveur synchronise, mais ça
bloque au moment de l'envoi du mot de passe sous gaim ...


Normal, dans vos règles vous bloquez tout trafic sortant en dehors du Web.
Internet ne se limite pas au Web. Il faudrait changer la politique par
défaut de la chaîne OUTPUT, 'iptables -P OUTPUT ACCEPT' et supprimer la
règle 'iptables -A OUTPUT -j LOG_DROP' qui bloque le trafic non autorisé sur
cette chaîne.
Mais peut être aussi que je n'ai pas compris quel était le problème pour
votre connexion à MSN.

Savez-vous s'il y a un moyen de savoir ce que traffique un programme
lorsqu'il essaye de se connecter à quelquechose ?


Oui, avec des outils comme tcpdump, ethereal, iptraf ou même avec des règles
iptables en utilisant la cible LOG et en analysant les compteurs Netfilter.
Si vous débutez, ces outils ne vous seront peut être pas parlant.

Auriez-vous des idées pour mes problèmes ?


Oui, déjà la règle FORWARD que vous avez modifié et qui d'ailleurs, si vous
lancez votre script, provoquera une erreur sur la règle modifié. Ensuite
l'erreur d'interface dans votre règle de masquerading.
Ensuite, comme dans votre script vous loggez le trafic bloqué et le trafic
autorisé, alors une lecture des logs via la commande dmesg ou dans le
répertoire /var/log vous aidera sûrement à voir ce qui bloque.

J'ai relu et relu le script et il me semble nickel pour que mon deuxième
PC puisse se connecter à internet via MASQUERADE ...


Presque. ;-)

--
TiChou

Fauberteau Frédéric
Le #1047668
;-) ;-) ;-)

Je suis tout à fait d'accord pour le FORWARD, c'est vous qui aviez fait
une petite erreur de syntaxe dans votre première réponse. Rien de grave.
J'ai fais la modif pour le MASQUERADE, et magie, ça marche superbement bien.
Voici les règles que j'ai mise pour MSN :
iptables -A INPUT -i ppp0 -p tcp --sport 1863 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 1863 -j ACCEPT
J'accepte les entrées/sorties sur le port 1863 qu'utilise les serveurs
de Hotmail Messenger. Mais la connexion de mon client gaim se bloque à
l'envoie du mot de passe ... Voyez vous le problème ? Je vais essayer de
fouiner sur Google, et sinon, je retirerais la règle iptables -A OUTPUT
-j LOG_DROP, et mettrais ma OUTPUT policy à ACCEPT.

Je voyais iptables, ses tables, ses règles et le masquerading comme des
monstres tout droit sortis des comptes que l'on lit au petit
administrateur avant qu'ils s'endorment. Mais grâce à vous, je commence
à bien comprendre leur utilité, et je vais continuer mes recherches
là-dessus pour un jour, pouvoir me faire un petit serveur qui protègera
mes 2 PC.
Merci pour l'attention que vous avez apporté à mon problème :-)
TiChou
Le #1047666
Dans le message *Fauberteau Frédéric* tapota sur f.c.o.l.configuration :

;-) ;-) ;-)

Je suis tout à fait d'accord pour le FORWARD, c'est vous qui aviez fait
une petite erreur de syntaxe dans votre première réponse.


Au temps pour moi, je me flagerai avant de me coucher. :)
Et effectivement en vous relisant la remarque était très claire et ça prouve
que vous avez très bien compris la syntaxe de ces règles.

Rien de grave.


Un peu quand même parce que c'est vous qui aviez raison et j'ai remis en
cause ce que vous disiez de juste. :)

J'ai fais la modif pour le MASQUERADE, et magie, ça marche superbement
bien.


Bien.:)

Voici les règles que j'ai mise pour MSN :
iptables -A INPUT -i ppp0 -p tcp --sport 1863 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 1863 -j ACCEPT


Ces règles sont bien placées avant les dernières règles LOG_DROP ? A noter
que la première est inutile puisqu'elle est redondante avec la règle :

iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED
-j ACCEPT

J'accepte les entrées/sorties sur le port 1863 qu'utilise les serveurs
de Hotmail Messenger. Mais la connexion de mon client gaim se bloque à
l'envoie du mot de passe ... Voyez vous le problème ?


Sur quelle machine se situe votre client ? Sur la machine connectée à
Internet et qui partage la connexion ou bien sur l'autre machine ?
Dans le deuxième cas, il faut utiliser la chaîne FORWARD.

iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 1863
-m state --state NEW -j LOG_ACCEPT

Je vais essayer de
fouiner sur Google, et sinon, je retirerais la règle iptables -A OUTPUT
-j LOG_DROP, et mettrais ma OUTPUT policy à ACCEPT.


Avez-vous regardé les logs comme je vous le conseillais précédemment ? Si
une connexion est bloquée par vos règles, elle sera loggée et il sera alors
plus facile à résoudre le problème.

Je voyais iptables, ses tables, ses règles et le masquerading comme des
monstres tout droit sortis des comptes que l'on lit au petit
administrateur avant qu'ils s'endorment. Mais grâce à vous, je commence
à bien comprendre leur utilité, et je vais continuer mes recherches
là-dessus pour un jour, pouvoir me faire un petit serveur qui protègera
mes 2 PC.


Si vous voulez approfondir vos connaissances, une lecture des documentations
présentes sur les sites suivant devrait vous en apporter beaucoup :

http://christian.caleca.free.fr/netfilter/
http://olivieraj.free.fr/fr/linux/information/firewall/

et bien sûr :

http://www.netfilter.org/documentation/index.html


Merci pour l'attention que vous avez apporté à mon problème :-)


--
TiChou

Publicité
Poster une réponse
Anonyme