Limiter les connexions par IP

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Messagepar ONC » 06 Mai 2003 21:01

Quelqu'un saurait-il comment limiter le nombre de connexions possible par adresse IP ? <BR> <BR>En plus clair, j'ai un serveur web en DMZ. <BR>Comme ma bande passante est limité, j'ai fixé une limite de bande passante par connexion (avec mod_bandwidth) <BR> <BR>Mais des "petits malins" ouvrent jusqu'a une dizaine de connexion pour télécharger un même fichier et donc outrepassent la limite... <BR> <BR>J'aurais donc voulu empecher plus de 2 connexions (par exemple) par adresse IP sur le port 80... <BR> <BR>Apache ne me permet pas ce genre de config et je n'ai pas trouvé de module pour le faire. <BR> <BR>La solution aurait sans doute été d'utiliser xinetd avec le serveur web, seulement ce serveur web tourne sous une redHat 6.2 et je n'arrive pas à trouver une version d'xinetd qui tourne sur un linux aussi vieux :'( <BR> <BR>Et je suis obligé d'avoir cette distrib et pas une autre pour de multiples raisons... <BR>(notamment c'est la seule que j'ai trouvé dont le prg d'install reconnait ma carte réseau intégrée (portable) et n'a pas besoin de plus de 48Mo de RAM) <BR> <BR>Donc je me tourne vers IPCop.... et vers les pros des regles en tout genre <IMG SRC="images/smiles/icon_smile.gif"> <BR> <BR> <BR>
Avatar de l’utilisateur
ONC
Major
Major
 
Messages: 89
Inscrit le: 16 Oct 2002 00:00
Localisation: Toulouse

Messagepar Sorg » 06 Mai 2003 21:56

J'ai une solution pour toi: Limiter la bande passante globale attribuée au serveur web grâce à la QOS. <BR>il te faudra par contre IPCOP 1.3 . <BR> <BR> <BR>Crée un petit script comme çà: <BR>/bin/qos <BR> <BR> <BR>#!/bin/bash <BR># Wonder Shaper <BR># please read the README before filling out these values <BR># <BR># Set the following values to somewhat less than your actual download <BR># and uplink speed. In kilobits. Also set the device that is to be shaped. <BR> <BR>DOWNLINK=500 <BR>UPLINK=100 <BR>DEV=ppp0 <BR>SERVERLIMIT= cequetuveux <BR> <BR># low priority OUTGOING traffic - you can leave this blank if you want <BR># low priority source netmasks <BR>NOPRIOHOSTSRC= <BR> <BR># low priority destination netmasks <BR>NOPRIOHOSTDST= <BR> <BR># low priority source ports <BR>NOPRIOPORTSRC= <BR> <BR># low priority destination ports <BR>NOPRIOPORTDST="80 21" <BR> <BR> <BR># Now remove the following two lines <IMG SRC="images/smiles/icon_smile.gif"> <BR> <BR> <BR>if [ "$1" = "status" ] <BR>then <BR> tc -s qdisc ls dev $DEV <BR> tc -s class ls dev $DEV <BR> exit <BR>fi <BR> <BR> <BR># clean existing down- and uplink qdiscs, hide errors <BR>tc qdisc del dev $DEV root 2> /dev/null > /dev/null <BR>tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null <BR> <BR>if [ "$1" = "stop" ] <BR>then <BR> exit <BR>fi <BR> <BR> <BR>###### uplink <BR> <BR># install root HTB, point default traffic to 1:20: <BR> <BR>tc qdisc add dev $DEV root handle 1: htb default 20 <BR> <BR># shape everything at $UPLINK speed - this prevents huge queues in your <BR># DSL modem which destroy latency: <BR> <BR>tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k <BR> <BR># high prio class 1:10: <BR> <BR>tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit <BR> burst 6k prio 1 <BR> <BR># bulk & default class 1:20 - gets slightly less traffic, <BR># and a lower priority: <BR> <BR>tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[9*$UPLINK/10]kbit <BR> burst 6k prio 2 <BR> <BR>tc class add dev $DEV parent 1:1 classid 1:30 htb rate ${SERVERLIMIT}kbit <BR> burst 6k prio 2 <BR> <BR># all get Stochastic Fairness: <BR>tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10 <BR>tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 <BR>tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10 <BR> <BR># TOS Minimum Delay (ssh, NOT scp) in 1:10: <BR> <BR>tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 <BR> match ip tos 0x10 0xff flowid 1:10 <BR> <BR># ICMP (ip protocol 1) in the interactive class 1:10 so we <BR># can do measurements & impress our friends: <BR>tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 <BR> match ip protocol 1 0xff flowid 1:10 <BR> <BR># To speed up downloads while an upload is going on, put ACK packets in <BR># the interactive class: <BR> <BR>tc filter add dev $DEV parent 1: protocol ip prio 10 u32 <BR> match ip protocol 6 0xff <BR> match u8 0x05 0x0f at 0 <BR> match u16 0x0000 0xffc0 at 2 <BR> match u8 0x10 0xff at 33 <BR> flowid 1:10 <BR> <BR># rest is 'non-interactive' ie 'bulk' and ends up in 1:20 <BR> <BR># some traffic however suffers a worse fate <BR>for a in $NOPRIOPORTDST <BR>do <BR> tc filter add dev $DEV parent 1: protocol ip prio 14 u32 <BR> match ip dport $a 0xffff flowid 1:30 <BR>done <BR> <BR>for a in $NOPRIOPORTSRC <BR>do <BR> tc filter add dev $DEV parent 1: protocol ip prio 15 u32 <BR> match ip sport $a 0xffff flowid 1:30 <BR>done <BR> <BR>for a in $NOPRIOHOSTSRC <BR>do <BR> tc filter add dev $DEV parent 1: protocol ip prio 16 u32 <BR> match ip src $a flowid 1:30 <BR>done <BR> <BR>for a in $NOPRIOHOSTDST <BR>do <BR> tc filter add dev $DEV parent 1: protocol ip prio 17 u32 <BR> match ip dst $a flowid 1:30 <BR>done <BR> <BR># rest is 'non-interactive' ie 'bulk' and ends up in 1:20 <BR> <BR>tc filter add dev $DEV parent 1: protocol ip prio 18 u32 <BR> match ip dst 0.0.0.0/0 flowid 1:20 <BR> <BR> <BR>########## downlink ############# <BR># slow downloads down to somewhat less than the real speed to prevent <BR># queuing at our ISP. Tune to see how high you can set it. <BR># ISPs tend to have *huge* queues to make sure big downloads are fast <BR># <BR># attach ingress policer: <BR> <BR>tc qdisc add dev $DEV handle ffff: ingress <BR> <BR># filter *everything* to it (0.0.0.0/0), drop everything that's <BR># coming in too fast: <BR> <BR>tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src <BR> 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1 <BR> <BR>Adapte çà à tes besoins , et fais en sortes que le script ce lance à chaque reconnection. <BR>
Avatar de l’utilisateur
Sorg
Contre-Amiral
Contre-Amiral
 
Messages: 488
Inscrit le: 22 Fév 2002 01:00
Localisation: Toulouse

Messagepar ONC » 07 Mai 2003 09:31

Merci pour le QOS, mais la bande passante globale du serveur est déjà limitée. <BR> <BR>Ce que j'aimerai limiter, c'est la bande passante par utilisateur parcequ'actuellement quand qqu'un lance un téléchargement avec 10 connexions, les autres sont d'autant plus ralentis... <BR>Avec une vingtaine de connexion (2 utilisateurs de 10 connexions), le site est horriblement ralenti... <BR> <BR>J'aimerai donc empecher plus de 2 ou 3 connexions par utilisateur... donc par IP... <BR> <BR>
Avatar de l’utilisateur
ONC
Major
Major
 
Messages: 89
Inscrit le: 16 Oct 2002 00:00
Localisation: Toulouse

Messagepar Sorg » 07 Mai 2003 09:34

La QOS doit te permettre de faire çà. Mais là on sort de son utilisation "traditionelle" ... A toi de potasser les documentations imbitables sur le sujet!
Avatar de l’utilisateur
Sorg
Contre-Amiral
Contre-Amiral
 
Messages: 488
Inscrit le: 22 Fév 2002 01:00
Localisation: Toulouse

Messagepar nemesis » 07 Mai 2003 09:38

kestion ils télécharge via du ftp ou via apache?
ce n'est pas parce qu'il n'y a pas de preuve qu'une chose existe qu'elle ne peut pas exister
Avatar de l’utilisateur
nemesis
Amiral
Amiral
 
Messages: 1954
Inscrit le: 01 Jan 2003 01:00
Localisation: 75

Messagepar Sorg » 07 Mai 2003 10:11

apache, je crois il a parlé de l'utilisation de mod_bandwith
Avatar de l’utilisateur
Sorg
Contre-Amiral
Contre-Amiral
 
Messages: 488
Inscrit le: 22 Fév 2002 01:00
Localisation: Toulouse

Messagepar ONC » 07 Mai 2003 10:23

Le téléchargement se fait via apache... <BR> <BR>Le serveur FTP aurait sans doute permis de limiter le nombre de connexion par IP mais je ne veux pas d'acces anonyme à mon serveur FTP qui est plein de faille de sécurité... (vieux wu_ftpd) <BR> <BR> <BR> <BR>
Avatar de l’utilisateur
ONC
Major
Major
 
Messages: 89
Inscrit le: 16 Oct 2002 00:00
Localisation: Toulouse


Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron