Re: [P2P & iptables]

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: Guilde Linux
Subject: Re: [P2P & iptables]
    Hello,

> Tu vas en reconnaitre des morceaux... :-)


    Oui, cela me dit quelque chose en effet !


<snip>
    Il y a en effet un problème ci-dessous :


> ###############################################################################
> # Règles ajoutées par NRG, pour mldonkey
> ###############################################################################
> echo "+ Règles pour mldonkey"
>
> echo "  + edonkey       : tcp4662, udp4666"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 4662 -j ACCEPT
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp --dport 4666 -j ACCEPT

>
> echo "  + overnet       : tcp13104, udp13104"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 13104 -j ACCEPT
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p udp --dport 13104 -j ACCEPT

>
> echo "  + bittorrent    : tcp6882"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 6882 -j ACCEPT

>
> echo "  + fasttrack     : tcp1214"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 1214 -j ACCEPT

>
> echo "  + gnutella      : tcp6346"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 6346 -j ACCEPT

>
> echo "  + soulseek      : tcp2234"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 2234 -j ACCEPT

>
> echo "  + opennap       : tcp9999"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 9999 -j ACCEPT

>
> echo " + directconnect : tcp4444"
> iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --dport 4444 -j ACCEPT


    Tu indiques que tu acceptes des connexions entrantes, c'est très bien 
(enfin, pour résoudre ce problème la. Pour le reste, c'est autre 
chose... :=)). Mais, les réponses de ta machine elles passent comment ? 
Il n'y a ici que des règles en INPUT, et donc ton Nerfilter va bloquer 
les paquets envoyés en réponse, et ceux-ci vont se retrouver dans ton 
log... :=)


    En plus de cela, tu n'utilises pas le "conntrack" pour faire ton suivit 
de connexion. Ce n'est pas trop grave en soit, mais on peut réduire un 
peu les risques sur tes demons P2P, en en mettant un minimum.


    Bon, je vais te ré écrire les règles pour "edonkey" et "bittorent", 
pour le reste c'est similaire :


# Rêgle INPUT edonkey + biitorent en TCP
iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP
-p tcp --dport 4662,6882 -m state --state ! INVALID -j ACCEPT

# Rêgle INPUT edonkey + biitorent en UDP
iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP
-p udp --dport 4666,6882 -j ACCEPT

# Rêgle OUTPUT edonkey + bittorent en TCP
iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d
$WAN_NETWORK -p tcp --sport 4662,6882 -m state --state
RELATED,ESTABLISHED -j ACCEPT

# Rêgle OUTPUT edonkey + bittorent en UDP
iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d
$WAN_NETWORK -p udp --sport 4666,6882 -m state --state
RELATED,ESTABLISHED -j ACCEPT

    Tu remarques que j'ai fusionné certaines règles de tes P2P, en 
utilisant une virgule (",") dans le "--sport" et "--dport", afin de 
limiter le nombre de règles (a toi de rajouter les autres ports pour les 
autres P2P). Ainsi, ton netfilter sera un peu plus réactif, et ta 
connexion un poil optimlisé. L'inconvéniant, c'est que dans tes states 
("iptables -L -n -v") tu ne verras plus la séparation entre le volume 
échangés pour chaque soft de P2P. Mais est-ce que tu utilses déjà cette 
informations ?


    Par contre, tu parles de paquets ICMP. Cela est à mon avis un autre 
problème. Je ne connais pas spécialement les softs de P2P, tant serveurs 
que client, mais je ne vois pas de raison pour que les clients P2P 
utilisent de l'ICMP dans leurs connexions. Pour moi, un soft n'a pas 
besoin de faire un ping. Tu peux si tu veux accepter de répondre aux 
ping (voir mon script "netfilter_cfg" pour cela), mais ce n'est, à mon 
avis, pas nécéssaire.


    Par contre, que ces ping soient envoyés par les client P2P parce que 
tes serveurs P2P ne répondaient pas (à cause du manque des règles 
"OUTPUT"), oui cela peut-être normal.



    Dernière remarque au passage : Vu le nombre de softs qui tournent en 
temps que serveur dessus, ta machine peut-être une cible de choix pour 
toute intrusion réseau. J'espère pour toi que chacun de tes softs de P2P 
tournent sur le compte d'un utilisateur bien distinct, et dans un chroot 
quand s'est possible... Sinon, et bien... il faut avoir confiance dans 
la qualité des developpements !!! ;=)


    Pour info, lis ceci : 
http://olivieraj.free.fr/fr/linux/information/firewall/fw-02-04.html


                    Olivier