Bloquer une plage d'IP avec htaccess

3ul3r

WRInaute discret
Bonjour à tous.

Je chercher à bloquer une plage d'IP (de 41.207.192.0 à 41.207.199.255) avec mon fichier .htaccess.
Pour le moment j'ai mis :

Order Allow,Deny
Allow from all
Deny from 41.207.192.
Deny from 41.207.193.
Deny from 41.207.194.
Deny from 41.207.195.
Deny from 41.207.196.
Deny from 41.207.197.
Deny from 41.207.198.
Deny from 41.207.199.

Ca à l'air de marcher, mais ça prend beaucoup de ligne :?
J'ai lu qu'il y a la possibilité d'utiliser la syntaxe Deny from a.b.c.d/w.x.y.z (IP/masque), mais j'avoue ne pas savoir comment fonctionne les masques de sous-réseaux.
Pour bloquer la même plage d'IP que ci-dessus, par exemple, quel masque dois-je utiliser ?

Bonne journée
 

jcaron

WRInaute accro
Deny from 41.207.192.0/255.255.248.0

ou

Deny from 41.207.192.0/21

Explication: Une adresse IP est un nombre sur 32 bits. La notation a.b.c.d le décompose en quatre octets. Donc 41.207.192.0 donne en binaire:
00101001 11001111 11000000 00000000

Et 41.207.199.255:

00101001 11001111 11000111 11111111

Le masque, c'est un nombre de 32 bits avec que des 1 puis que des 0 (i.e. pas un mélange), tel que les bits correspondants aux "1" du masque ne changent pas pour toutes les adresses concernées. Donc le masque ici est:

11111111 11111111 11111000 00000000

Soit 255.255.248.0 (ce qui donne la première notation).

La deuxième notation, plus pratique à manipuler, consiste à compter le nombre de "1" (on appelle ça le "prefix-length", longeur de préfixe). Il y a 21 bits à 1 ici, d'où la deuxième notation.

Evidemment tout ça ne marche que si la plage d'adresse est correctement alignée (i.e. le début et la fin + 1 sont des multiples du complément du masque). Sinon il faut décomposer en plusieurs plages. Mais comme il s'agit ici d'une plage attribuée par un RIR (Afrinic) à un LIR (Avisonet), elle est forcément alignée.

Plus de détails ici: http://en.wikipedia.org/wiki/CIDR (désolé, la version française est nettement moins complète).

Et non, la syntaxe avec les regex n'est pas supportée dans les directives Allow ou Deny.

Jacques.
 

Nextgen

WRInaute discret
Bonjour,

Désolé de faire un gros déterrage mais je souhaiterais bannir une plage ip via mon htaccess mais je ne sais pas comment m'y prendre:
J'ai remarqué pleins d'ip sur cette base:
5.10.83.59

Je crois que la première est 5.10.83.0 et la dernière 5.10.83.255.

Quelqu'un sait comment je peux faire ?

Merci de votre aide
 

M&B Multimédia

WRInaute passionné
Cette méthode permet d'interdire l'accès au site à tous les visiteurs qui ont une adresse ip située entre 5.10.83.0 et 5.10.83.255, ni plus, ni moins.
 

Discussions similaires

Haut