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

20

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>
user281497
la source

Réponses:

22

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 que le dernier est 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

fukawi2
la source
Donc, cela ne fonctionnera pas sur Apache 2.2? phpMyAdmin fonctionne à la fois sur 2.2 et 2.4 et je viens de vérifier pour voir ce que ce serveur fonctionnait et c'est 2.2
user281497
À moins que quelque chose n'ait été rétroporté pour l'activer, je n'ai jamais vu cette syntaxe dans les fichiers de configuration 2.2.
fukawi2
@ fukawi2 - Oui, vous avez bien sûr raison. Pour user281497: Tout Requirea un soutien limité dans Apache 2.2, Apache 2.2 ne supporte pas non plus Require ipou <RequireAny>. Comme indiqué dans la vue d'ensemble 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 Requiredirective et des directives de conteneur associées, telles que <RequireAll>." Les premiers font partie des améliorations ajoutées à Apache 2.4.
Colt
14

Dans Apache 2.2 et versions antérieures, 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 aucun <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: le lien "dernière activité du compte" tout en bas est un moyen confortable de comprendre vos propres "habbits IP").

Frank Nocke
la source
Quelle est la différence entre Require ip 2a02:4126:2aa4::/48et Require ip 2a02:4126:2aa4::? Les deux ne produisent pas d'erreurs de syntaxe pour moi, mais seulement les travaux précédents.
Geremia
3
Est-ce parce que 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, alors que 2a02: 4126: 2aa4 :: / 48 correspond à toutes les adresses commençant par 2a02: 4126: 2aa4?
Geremia
1

Notant que vous avez maintenant confirmé en utilisant Apache 2.2 , Apache 2.2 ne supporte pas non plus Require ipou <RequireAny>. Comme indiqué dans la vue d'ensemble 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 Requiredirective 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.

Poulain
la source
1

Remarque: je laisse ceci 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

Nécessite l'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 qu'aucun commentaire ne soit autorisé sur cette ligne .

Sorin Negulescu
la source
1
Les commentaires ne sont autorisés nulle part à l'intérieur d'une ligne de configuration, voir httpd.apache.org/docs/2.4/configuring.html : "Les lignes commençant par le caractère de hachage" # "sont considérées comme des commentaires et sont ignorées. Les commentaires peuvent ne pas être inclus sur la même ligne qu'une directive de configuration. "
Patrick Mevzek
0

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, les expressions sont prises en charge dans l'hôte nécessitent des directives. 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 abcd et un masque de réseau wxyz 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

mohsen nazari
la source
5
Veuillez ne pas simplement copier et coller le travail d'autres personnes. C'est ce qu'on appelle le plagiat.
Gerald Schneider