Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: jojodeparis

Salut à tous,

Comment puis-je faire pour bloquer le trafic peer to peer sur un reseau. ça me bouffe toute la bande.

je boss sous linux et j'ai mis en place un firewall : Netfilter avec iptable.

Bloquer les ports utiliser par les logiciels de peer to peer ??? Il va falloir dabord que j'arrive a identifier tous ces ports et ensuite j'ai lu quelque part que ces logiciel peuvent negocier eux meme le port a utliser et qu'il n'avait pas de standart.

Alors comment puis-je faire ??? Quelqu'un a t'il déjà reussi a bloquer une fois ce genre de trafic???

merci d'avance.

Poste le Wednesday 18 October 2006 14:23:37
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: chromosome

Tu dois prendre le probleme dans l'autre sens, et te dire qu'est-ce que j'ai besoin comme port vers Internet ?
Tu auras 53/udp (dns), 80/tcp, 443/tcp, 25/tcp, 110/tcp (et encore les derniers pas forcement de toutes les machines).

Ensuite tu ouvres ce que tu connais et que tu as besoin.

Sinon pour ton info, les systemes peer2peer doivent au moins dans un premier temps se connecter pour pouvoir echanger le port dynamique, si ils ne savent pas faire le premier step, ils n'iront pas beaucoup plus loin.

Sinon tu peux toujours soit lancer tcpdump et voir ce qui passe, ou mettre dans LOG a ton firewall, et la aussi regarde, et ce que tu connais pas crack dedans, tu lui coupes.


Poste le Wednesday 18 October 2006 15:45:40
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: jojodeparis

Merci,

Mais j'ai un problème. Comment autoriser les yahoo ou msn messenger par exemple?

Il utilise des port entre 1024 et 65535. et c'est dans cette etendu de port que j'ai aussi par exemple le port par default de emule (4662 ou 4672).

J'aimerais savoir aussi comment mettre des log sur iptable et ou les observer après.

merci.

Poste le Thursday 19 October 2006 02:17:30
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: yse

Il existe des règles spécifiques au p2p pour iptables. Voir man iptables...

Poste le Thursday 19 October 2006 07:17:18
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: chromosome

Mettre des logs, rien de plus simple

iptables -A FORWARD -j LOG --log-prefix "Log du forward"

Et sinon effectivement il existe des modules pour iptables pour certains protocole p2p. Et dans ce cas tu ne dois pas ouvrir tout le range mais seulement le port d'initialisation, et le module mettra automatiquement les regles sur les ports dynamiques.

Poste le Thursday 19 October 2006 07:58:53
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: jojodeparis

Salut,

Je viens d'essayer de revoir mes règles de firewall pour interdire tout au niveau des règles par defaut de INPUT, FORWARD et OUTPUT et après autoriser le trafic dont j'ai besoin.

Je suis confronter a deux problème:
1) Pour que yahoo et msn messenger fonctionne, il me faut ouvrir certain port (5000: 65353) et surtout mettre la ligne (- m state --state ..etc) pour autoriser les connexion déjà etablie de passer. Mais malheureussment avec ça, j'arrive pas à bloquer emule.

2) j'ai constacter les serveurs sur lequel se connecte emule sont nombreux et utilise la plus part du temps des ports different. Ce qui fait que si un des serveur utilise par exemple un port qui n'est pas bloquer au niveau du firewall, la connexion s'etablie.

Par exemple, j'etais obliger d'ouvrir les ports 5000 à 65535 pour que yahoo messenger fonctionne, il se fait que dans la listes des serveurs de emule, il y a un serveur qui ecoute sur le port 7777 et dans ce cas, ça marche, on se connecte sans problème.

Je peux pas enumérer tous les ports utiliser par chaque serveurs se trouvant dans la listes des serveurs emule etant donner qu'il en a assez et qu'on peut mettre a jour cette liste pour prendre en compte de nouveau serveurs. Je sais plus quoi faire, j'aurai besoin d'un petit aide.

Vous aviez dis qu'iptable disposait des modules pour interdire ce genre de trafic? Pourriez vous me dire lesquel et comment dois je proceder svp.

Merci.

Poste le Monday 23 October 2006 04:51:26
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: chromosome

Tu ne dois pas mettre une ligne state pour chacunes des lignes, mais une fois au debut.

Maintenant si tu trouves un module msn pour iptables alors tu ne devras ouvrir plus qu'un port (celui de base d'MSN)

Poste le Tuesday 24 October 2006 00:12:04
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: jojodeparis

Oui j'ai mis qu'un seul -m state

Il n'existe pas un script ou un petit logiciel qui le fait? Je sais que chez certain fournisseur d'accès Internet, ces ports sont bloquer. ça se passe comment alors?

Poste le Tuesday 24 October 2006 01:31:25
Répondre     Citer    
Re: Comment bloquer le trafic peer to peer sur un reseau ???
Envoyé par: panthere noire

en fait si tu veux un petit scripte qui tourne sur mes 2 machine, certes il est fait par un débutant donc soyer indulgent car je le modifie encore souvent.

tout d'abords la version d'iptable n'est pas la même partout. ensuite il y a le patch p-o-m (pom).
donc moi je suis en debian testing:
la version d'iptables: iptables -V iptables v1.3.5
pour un tuto complet sur iptables voici un lien qui ma beaucoup aider et fort bien détailler
[www.linux-france.org]

ensuite les regle de base pour un par feux:

1.- on bloque tout ce que l'on ne connais pas.
2.- ensuite on ouvre ce dont on a besoin si possible par utilisateur, donc root ne doit pas sortir sauf pour quelque port en local.
3 si <<on ne sais pas vraiment>> ce qui rentre on sais par contre ce qui sore!
4.- on log le reste si besoin est

4 voici un script schell adapter a mes besoin , il te faudra lire la doc sur le patch pom si tu veux pouvoir t'en servir et s'il est intergrer a ton noyaux

ce script ne gère pas la nat, car il est deja assez restrictif comme cela smiling smiley

voila amuse toi bien pour l'adapter a tes besoin.

#!/bin/sh
PATH=/usr/eth0cal/sbin:/usr/eth0cal/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin/iptables
DAEMON=/etc/init.d/fw
NAME=fw
ID=$$
DESC="Par Feux 1.09"
FAMOPTS="-T 0"

#Section variable
#on raccourci le texte
#id = autorisation de l'utilisateur
#idroot= autorisation du root
AC=" -j ACCEPT"
DP=" -j DROP"
DPR=" -j REJECT tcp-reset"
id="1002"
idroot="0"
ip="127.0.0.1"
ip1="192.168.1.80"
ip2="192.168.1.81"
ip3="192.168.1.255"
rip1="192.168.1.80-192.168.1.81"
rip2="192.168.1.81-192.168.1.80"
i="iptables -A INPUT"
o="iptables -A OUTPUT"
portp2p2="6969,6881,4661,4662,4665,4672,57692,16349"
Moduleid=" -m owner --uid-owner "
banip="82.121.61.101"
banip1="80.239.200.102"
bs="$i -i eth0 -m iprange --src-range"
bd="$i -i eth0 -m iprange --dst-range"
rootudp137="$i -o eth0 -p udp -m iprange --src-range $rip1 --dst-range $ip3 $AC"
rootudp138="$i -i eth0 -p tcp -m iprange --src-range $rip1 --dst-range $ip3 $AC"
ipineth0tcpsport="$i -i eth0 -p tcp -m multiport --source-ports "
ipintcpsport="$i -p tcp -m multiport --source-ports"
ipinudpsport="$i -p udp -m multiport --source-ports "
ipinudpdport="$i -p udp -m multiport --destination-port "
serv4="$i -i eth0 -s $ip1 -d $ip2 $AC"
serv5="$i -i eth0 -s $ip2 -d $ip1 $AC"
suivi=" -m state --state ESTABLISHED,RELATED -j ACCEPT"
newsuivi=" -m state --state ESTABLISHED,NEW"
newpure="-m state --state NEW"
loopack="$i -i lo -j ACCEPT"
limiteflood=" -m limit --limit 1/s --limit-burst 2 -j LOG --log-prefix "
gnomein1="$i -p tcp -s $ip -d $ip --dport 111 -m state --state ESTABLISHED,NEW -j ACCEPT"
gnomein2="$i -p tcp -s $ip -d $ip --sport 111 -m state --state ESTABLISHED,NEW -j ACCEPT"
LOGALLIN="$i -i lo -j LOG --log-prefix=""<LOOPACKIN> "" --log-level debug"
surfin="$i -p udp -m multiport --source-ports 53,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT "
surfin2="$i -p tcp -m multiport --source-ports 81,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"
limituid="-m owner --uid-owner $id"
irc="$i -p tcp --sport 6667"
ircin="$i -p udp --sport 53"
ircone="$i -p udp --dport 138 --sport 138 -m iprange --src-range $ip2 --dst-range $ip3 "
icpmonip1="$i -p icmp -m iprange --src-range $ip1 --dst-range 192.168.1.1 -j ACCEPT"
icpmonip2="$i -p icmp -m iprange --src-range $ip2 --dst-range 192.168.1.1 -j ACCEPT"
dnswww3="$i -p udp -d $ip2 -s 192.168.1.1 --sport 53 -j ACCEPT"
dnswww4="$i -p udp -d $ip2 -s 212.147.0.0/16 --sport 53 -j ACCEPT"
p2p3="$i -p tcp -m multiport --source-ports $portp2p2 $AC"
p2p4="$i -p udp -m multiport --source-ports $portp2p2 $AC"
p2p5="$i -p tcp -m multiport --destination-port $portp2p2 $AC"
p2p26="$i -p udp -m multiport --destination-port $portp2p2 $AC"

ipdropoutudpdport="$o -p udp -m multiport --destination-port "
loopackout="$o -o lo -j ACCEPT"
LOGALLOUT="$o -o lo -j LOG --log-prefix=""<LOOPACK> "" --log-level debug"
ircout="$o -p tcp $Moduleid $id --dport 6667"
ipouttcpdport="$o -p tcp -m multiport --destination-port "
ipouttcpsport="$o -p tcp $Moduleid $id -m multiport --source-ports "
ipoutudpsport="$o -p udp $Moduleid $id -m multiport --source-ports "
surfout="$o -m owner --uid-owner $id -p udp -m multiport --destination-port 53,80,81 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"
surfout2="$o -m owner --uid-owner $id -p tcp -m multiport --destination-port 81,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"
surfout3="$o -p tcp --dport 53 $AC"
surfout4="$o -p tcp --sport 53 $AC"
surfout5="$o -p udp --dport 53 $AC"
surfout6="$o -p udp --sport 53 $AC"
serv="$o -o eth0 -s $ip2 -d $ip3 $Moduleid $id $AC"
serv1="$o -o eth0 -s $ip1 -d $ip3 $Moduleid $id $AC"
serv2="$o -o eth0 -s $ip2 -d $ip1 $Moduleid $id $AC"
serv3="$o -o eth0 -s $ip1 -d $ip2 $Moduleid $id $AC"
p2p="$o -p tcp -m multiport --source-ports $portp2p2 $limituid $AC"
p2p2="$o -p udp -m multiport --source-ports $portp2p2 $limituid $AC"
gnomeout1="$o -p tcp -s $ip -d $ip --dport 111 -m state --state ESTABLISHED,NEW -j ACCEPT"
gnomeout2="$o -p tcp -s $ip -d $ip --sport 111 -m state --state ESTABLISHED,NEW -j ACCEPT"
p2p7="$o -p tcp -m multiport --destination-port $portp2p2 $limituid $AC"
p2p8="$o -p udp -m multiport --destination-port $portp2p2 $limituid $AC"
roottcp="$o -o eth0 -p tcp -s 192.168.1.81 -d 192.168.1.1 --dport 53 $Moduleid $idroot $AC"
rootudp="$o -o eth0 -p udp -s 192.168.1.81 -d 192.168.1.1 --dport 53 $Moduleid $idroot $AC"
roottcpip2="$o -o eth0 -p tcp -s $ip1 -d 192.168.1.1 --dport 53 $Moduleid $idroot $AC"
rootudpip2="$o -o eth0 -p udp -s $ip1 -d 192.168.1.1 --dport 53 $Moduleid $idroot $AC"
rootudpip3="$o -o eth0 -p udp -m iprange --src-range $ip1 --dst-range 212.147.10.0-212.147.10.250 --dport 53 $Moduleid $idroot $AC"
rootudpip4="$o -o eth0 -p udp -m iprange --src-range $rip2 --dst-range 212.147.10.0-212.147.10.255 --dport 53 $Moduleid $idroot $AC"
rootudp137="$o -o eth0 -p udp -m iprange --src-range $rip1 --dst-range $ip3 $Moduleid $idroot $AC"
rootudp138="$i -i eth0 -p udp -m iprange --src-range $rip1 --dst-range 192.168.1.255 $AC"

invalidelog="$o -p tcp -m state --state INVALID -j LOG --log-prefix=""----->syn: "" --log-level debug"
invalidelog="$o -p tcp -m state --state INVALID -j REJECT --reject-with tcp-reset"
# port en language plus parlant============================================================
msn="1863"
msn2="443"
filemsn="6891"
mailentranpop="110"
mailsortansmtp="25"
# Port FERMER==========================================================================
c22="22"
c68="68"
c111="111"
c113="113"
c162="162"
c6000="6000"
#string interdi note c est risquer !===========================================================================
stringInput="iptables -A INPUT -i eth0 -m string --string" # autre paramettre de --algo kmp
stringOutput="iptables -A OUTPUT -o eth0 -m string --string"
stringInputEndDrop="--algo bm -j DROP"
stringTexteCokie="cookie"
stringTextegay="gay"
stringTextegays="gays"
stringTextepopup="thumbzilla"
StringW1="pornstarfinder"
StringW2="moviesgold"
StringW3="vidsvidsvids"
StringW4="hanksgalleries"
StringW5="spewie"
StringW6="vx23855"
StringW7="elephantlist"

set -e

case "$1" in
start)
echo "Starting $DESC"
#============================================================================================
# Astuces
# lsof -ni
#============================================================================================
iptables -P INPUT DROP
$ipinudpdport $c162 $DP
$bs $banip $DP
$bd $banip $DP
$bs $banip1 $DP
$bd $banip1 $DP
$p2p3
$p2p4
$p2p5
$p2p26
$stringInput $stringTextegay $stringInputEndDrop
$stringInput $stringTextegays $stringInputEndDrop
$stringInput $stringTextepopup $stringInputEndDrop
$stringInput $StringW1 $stringInputEndDrop
$stringInput $StringW2 $stringInputEndDrop
$stringInput $StringW3 $stringInputEndDrop
$stringInput $StringW4 $stringInputEndDrop
$stringInput $StringW5 $stringInputEndDrop
$stringInput $StringW6 $stringInputEndDrop
$stringInput $StringW7 $stringInputEndDrop
$ipineth0tcpsport $c22 $DP
$ipineth0tcpsport $c68 $DP
$ipineth0tcpsport $c111 $DP
$ipineth0tcpsport $c113 $DP
$ipineth0tcpsport $c6000 $DP
$gnomein1
$gnomein2
$rootudp138
$loopack
$icpmonip1
$icpmonip2
$irc $suivi
$ircin $suivi
$ircone $suivi
$ipintcpsport $msn $suivi
$ipintcpsport $msn2 $AC
$ipintcpsport $filemsn $suivi
$surfin
$surfin2
$ipintcpsport $mailentranpop $suivi
$ipintcpsport $mailsortansmtp $suivi
$serv4
$serv5
#iptables -A INPUT -i eth0 -m string --string "lol" --algo bm -j REJECT # autre paramettre de --algo kmp
iptables -A INPUT -i eth0 -m limit --limit 1/d --limit-burst 1 -j LOG --log-prefix="IN Drop Final: " --log-level debug
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A FORWARD -p tcp -j REJECT --reject-with tcp-reset
#============================================================================================
# policy defaut
iptables -P OUTPUT DROP
#============================================================================================
#iptables -A OUTPUT -o lo -j ACCEPT
#============================================================================================
#iptables -A OUTPUT -o eth0 -m string --string "lol" --algo bm -j DROP # autre paramettre de --algo kmp
$invalidelog
$p2p2
$p2p
$p2p7
$p2p8
$gnomeout1
$gnomeout2
$ipouttcpdport $c111 $DP
$loopackout
$surfout
$surfout2
$ircout $newsuivi $AC
$ipouttcpdport $msn $limituid $AC
$ipouttcpdport $msn2 $limituid $AC
$ipouttcpdport $filemsn $limituid $AC
$ipouttcpdport $mailentranpop $limituid $AC
$ipouttcpdport $mailsortansmtp $limituid $AC
$serv
$serv1
$serv2
$serv3
$roottcp
$rootudp
$roottcpip2
$rootudpip2
$rootudpip3
#$rootudpip4
$rootudp137
iptables -A OUTPUT -o eth0 -m limit --limit 1/d --limit-burst 1 -j LOG --log-prefix="OUT Drop final: " --log-level debug
iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
#iptables -A OUTPUT -o eth0 -j ACCEPT
#============================================================================================
iptables -P FORWARD ACCEPT
#============================================================================================
#Close port critique
#============================================================================================
#==================================END=======================================================
#echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
#
# On remet la police par défaut à ACCEPT
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

#
# On remet les polices par défaut pour la table NAT
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

#
# On vide (flush) toutes les règles existantes
#
iptables -F
iptables -t nat -F

#
# Et enfin, on efface toutes les chaînes qui ne
# sont pas à defaut dans la table filter et nat

iptables -X
iptables -t nat -X


echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: /etc/init.d/fw {start|stop} " $DAEMON >&2
exit 1
;;
esac

exit 0

Poste le Tuesday 24 October 2006 09:35:46
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Comment bloquer le trafic peer to peer sur un reseau ???
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons