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>
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>
Réponses:
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
Require
a un soutien limité dans Apache 2.2, Apache 2.2 ne supporte pas non plus Require ip
ou <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 Require
directive et des directives de conteneur associées, telles que <RequireAll>
." Les premiers font partie des améliorations ajoutées à Apache 2.4.
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").
Require ip 2a02:4126:2aa4::/48
et Require ip 2a02:4126:2aa4::
? Les deux ne produisent pas d'erreurs de syntaxe pour moi, mais seulement les travaux précédents.
Notant que vous avez maintenant confirmé en utilisant Apache 2.2 , Apache 2.2 ne supporte pas non plus Require ip
ou <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 Require
directive 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.
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 .
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