web-dev-qa-db-fra.com

Comment demander une plage IP au lieu d'une IP?

Mes modifications IP font une classe D différente, donc je veux définir une plage:

123.123.123.xxx où le dernier segment peut être 0-255.

À l'heure actuelle, Apache dit:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>
22
user281497

Tout d'abord, je vais supposer que vous voulez dire Apache 2.4 malgré la balise "Apache-2.2" puisque la syntaxe que vous avez publiée est de 2.4.

De la documentation Apache:

ip.address est une adresse IP, une adresse IP partielle, une paire réseau/masque de réseau ou une spécification CIDR réseau/nnn.

Je suppose que vous voulez autoriser un/24 car la classe D est des adresses de multidiffusion et le réseautage avec classe est mort dans les années 90. Pour autoriser un/24, vous pouvez utiliser l'une des options suivantes:

Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24

Personnellement, je trouve le dernier moins ambigu que le premier et plus facile à lire que le second.

Vous pouvez trouver cette section de la documentation utile: http://httpd.Apache.org/docs/2.4/howto/access.html#Host

23
fukawi2

Dans Apache 2.2 et inférieur, vous pouvez travailler avec:

Order deny,allow
Deny from all
Allow from 24.18    # allow access from home
Allow from 162.12   # allow access from work

dans votre .htacess, directement au niveau de base (pas dans un <directive>).

À partir d'Apache 2.4 et supérieur, c'est parti:

<RequireAny>
    #IPv4 range at my work
    Require ip 207.100
    #IPv4 range I usually get through my mobile provider
    Require ip 29.11
    #IPv6 from home
    Require ip 2a02:4126:2aa4::/48  
</RequireAny>

(tous les chiffres sont fictifs, pas de soucis; -).

J'utilise cela depuis de nombreuses années maintenant, pour protéger mes dossiers backend contre 99% des utilisateurs potentiels. (Fonctionne très bien, sauf si vous êtes un blogueur passionné en voyage. Si vous êtes un utilisateur de Gmail: "Dernière activité du compte" Le lien tout en bas est un moyen confortable de comprendre vos propres "habbits IP").

15
Frank Nocke

Remarque: je laisse cela ici car d'autres pourraient en bénéficier; ce n'est pas une réponse directe à la question.

Par exemple:

Nécessite l'ip 192.168.100.0/22

fonctionne, tandis que

Requiert ip 192.168.100.0/22 ​​#localnetwork

échoue!

Redémarrage des sorties httpd:

Le travail pour httpd.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status httpd.service" et "journalctl -xe" pour plus de détails.

Il semble donc que aucun commentaire ne soit autorisé sur cette ligne .

1
Sorin Negulescu

Notant que vous avez maintenant confirmé l'utilisation d'Apache 2.2, Apache 2.2 ne prend pas en charge non plus Require ip ou <RequireAny>. Comme indiqué dans Présentation des nouvelles fonctionnalités d'Apache HTTP Server 2.4 , "La logique d'autorisation avancée peut désormais être spécifiée à l'aide de la directive Require et des directives de conteneur associées, telles que <RequireAll>. "Les premiers font partie des améliorations ajoutées à Apache 2.4.

Pour gérer cela dans Apache 2.2, vous devrez probablement faire quelque chose comme:

Order allow,deny
Allow from 123.123.123    

qui obtiendra toute la plage spécifiée.

1
Colt

La directive Require d'Apache est utilisée pendant la phase d'autorisation pour garantir qu'un utilisateur est autorisé ou refusé l'accès à une ressource. mod_authz_Host étend les types d'autorisation avec ip, Host, forward-dns et local. D'autres types d'autorisation peuvent également être utilisés mais peuvent nécessiter le chargement de modules d'autorisation supplémentaires.

Ces fournisseurs d'autorisation affectent les hôtes qui peuvent accéder à une zone du serveur. L'accès peut être contrôlé par le nom d'hôte, l'adresse IP ou la plage d'adresses IP.

Depuis la v2.4.8, expressions sont prises en charge dans les directives require de l'hôte. Exiger ip

Le fournisseur ip permet de contrôler l'accès au serveur en fonction de l'adresse IP du client distant. Lorsque Exiger ip ip-address est spécifié, la demande est autorisée à accéder si l'adresse IP correspond.

Une adresse IP complète:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

Une adresse IP d'un hôte autorisé à accéder

Une adresse IP partielle:

Require ip 10.1
Require ip 10 172.20 192.168.2

Les 1 à 3 premiers octets d'une adresse IP, pour la restriction de sous-réseau.

Une paire réseau/masque de réseau:

Require ip 10.1.0.0/255.255.0.0

Un réseau a.b.c.d, et un masque de réseau w.x.y.z. Pour une restriction de sous-réseau plus fine.

Une spécification CIDR réseau/nnn:

Require ip 10.1.0.0/16

Similaire au cas précédent, sauf que le masque de réseau se compose de nnn bits de poids fort 1.

Notez que les trois derniers exemples ci-dessus correspondent exactement au même ensemble d'hôtes.

Les adresses IPv6 et les sous-réseaux IPv6 peuvent être spécifiés comme indiqué ci-dessous:

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48

Remarque: Comme les adresses IP sont analysées au démarrage, les expressions ne sont pas évaluées au moment de la demande.

Source: https://httpd.Apache.org/docs/trunk/mod/mod_authz_Host.html

0
mohsen nazari