Générateur d’extrait Require ip Apache
Générer des directives Require ip pour Apache
IP Addresses / CIDRs
Apache Configuration
Enter IP addresses to generate Apache config
Le Générateur de snippets Apache Require ip crée des directives de contrôle d'accès Apache 2.4+ correctement formatées à partir de listes d'adresses IP ou de blocs CIDR. Saisissez des adresses comme 192.168.1.0/24 et 10.0.0.0/8, choisissez le mode allowlist ou blocklist, et obtenez des blocs <RequireAny> ou <RequireAll> complets avec la syntaxe Require ip correcte, prêts à coller dans vos fichiers .htaccess, blocs <Directory> ou directives <Location>.
Comprendre le contrôle d'accès Apache 2.4
Apache 2.4 a introduit un système de contrôle d'accès entièrement nouveau qui a remplacé les directives Allow/Deny/Order utilisées dans Apache 2.2 et versions antérieures. Si vous écrivez encore Order deny,allow ou Allow from 192.168.1.0/24, vous utilisez une syntaxe dépréciée qui cessera de fonctionner lors de la mise à jour de votre serveur. L'approche moderne utilise des directives Require encadrées par des balises conteneurs comme <RequireAny> et <RequireAll>, et la logique est plus explicite et moins sujette aux erreurs une fois comprise.
L'ancien système Apache 2.2 était notoirement déroutant. La directive Order déterminait quel ensemble de règles était évalué en premier, et l'interaction entre Allow et Deny a conduit à d'innombrables serveurs mal configurés. Order deny,allow signifiait "refuser par défaut, puis appliquer les règles Allow" -- mais si vous écriviez accidentellement Order allow,deny, le comportement s'inversait et votre répertoire supposément restreint devenait grand ouvert. Apache 2.4 élimine cette ambiguïté avec des directives conteneurs qui rendent la logique explicite : <RequireAny> signifie "autoriser si une condition correspond" (logique OU), et <RequireAll> signifie "autoriser uniquement si toutes les conditions correspondent" (logique ET).
Ce générateur vous fait gagner du temps et prévient les erreurs de syntaxe en produisant des blocs de contrôle d'accès Apache 2.4 correctement structurés. Il gère les balises conteneurs, le formatage correct de Require ip, et l'utilisation appropriée de Require not ip pour le mode blocklist. Que vous migriez depuis Apache 2.2, depuis nginx, ou que vous construisiez de nouveaux contrôles d'accès de zéro, le générateur vous fournit une configuration prête au déploiement que vous pouvez coller directement dans vos fichiers de configuration Apache.
Comment générer des directives Apache Require ip
- Saisissez vos adresses IP ou blocs CIDR -- un par ligne ou séparés par des virgules.
- Sélectionnez le mode : allowlist (autoriser les IP listées, refuser tout le reste) ou blocklist (refuser les IP listées, autoriser tout le reste).
- Le générateur produit un bloc de directives Apache complet avec une structure de conteneur appropriée.
- Copiez la sortie dans votre fichier
.htaccess, votre bloc<Directory>ou votre bloc<Location>. - Redémarrez Apache ou rechargez la configuration pour appliquer les changements.
Exemples de sortie pour le contrôle d'accès Apache 2.4
Mode allowlist
Entrée :
192.168.1.0/24
10.0.0.0/8
203.0.113.50
Sortie :
<RequireAny>
Require ip 192.168.1.0/24
Require ip 10.0.0.0/8
Require ip 203.0.113.50
</RequireAny>
Mode blocklist
Entrée :
198.51.100.0/24
203.0.113.0/24
Sortie :
<RequireAll>
Require all granted
Require not ip 198.51.100.0/24
Require not ip 203.0.113.0/24
</RequireAll>
Utilisation dans un bloc Directory
<Directory "/var/www/html/admin">
<RequireAny>
Require ip 192.168.1.0/24
Require ip 10.10.0.0/16
</RequireAny>
</Directory>
Comparaison de la syntaxe Apache 2.2 vs Apache 2.4
| Fonctionnalité | Apache 2.2 (dépréciée) | Apache 2.4 (actuelle) |
|---|---|---|
| Autoriser une IP | Allow from 192.168.1.0/24 | Require ip 192.168.1.0/24 |
| Refuser une IP | Deny from 10.0.0.0/8 | Require not ip 10.0.0.0/8 |
| Refus par défaut | Order deny,allow / Deny from all | Require all denied |
| Autorisation par défaut | Order allow,deny / Allow from all | Require all granted |
| Conteneur | Non nécessaire | <RequireAny> ou <RequireAll> |
Quand utiliser le générateur Apache Require ip
- Migration d'Apache 2.2 vers 2.4 -- convertir les règles legacy
Allow/Denyen syntaxe moderneRequire iplors des mises à jour de serveur. - Protection de répertoires d'administration -- restreindre l'accès à
/admin,/phpmyadminou/server-statusaux seules IP de confiance. - Migration inter-plateformes -- convertir des règles nginx
allow/denyou des règles iptables au format Apache lors d'un changement de serveur web. - Déploiement via .htaccess -- générer des règles d'accès pour les configurations distribuées où les fichiers
.htaccesscontrôlent l'accès par répertoire. - Configurations multi-environnements -- créer des fichiers d'inclusion séparés pour les allowlists IP de développement, staging et production.
Fonctionnement du contrôle d'accès Apache 2.4
RequireAny vs RequireAll
Apache 2.4 utilise des directives de conteneur pour contrôler la relation logique entre les règles d'accès :
<RequireAny>-- l'accès est accordé si l'une des directives incluses correspond (logique OU). Utilisé pour les allowlists où toute IP listée doit être autorisée.<RequireAll>-- l'accès est accordé uniquement si toutes les directives incluses correspondent (logique ET). Utilisé pour les blocklists où le trafic doit satisfaire toutes les conditions.<RequireNone>-- l'accès est refusé si l'une des directives incluses correspond. Utile à l'intérieur de<RequireAll>pour les exceptions.
Emplacement des directives
Les directives de contrôle d'accès fonctionnent dans plusieurs contextes :
# Dans httpd.conf ou la configuration du vhost
<Location "/api/internal">
<RequireAny>
Require ip 10.0.0.0/8
</RequireAny>
</Location>
# Dans .htaccess (si AllowOverride AuthConfig est défini)
<RequireAny>
Require ip 192.168.1.0/24
</RequireAny>
Erreur courante : conteneur manquant
Une directive Require ip sans conteneur fonctionne mais se comporte différemment lorsqu'elle est combinée avec d'autres directives d'authentification. Encadrez toujours les règles d'accès dans <RequireAny> ou <RequireAll> pour un comportement prévisible :
# Fragile -- peut entrer en conflit avec d'autres modules d'authentification
Require ip 192.168.1.0/24
# Robuste -- définit explicitement la logique d'évaluation
<RequireAny>
Require ip 192.168.1.0/24
</RequireAny>
Combinaison de l'authentification par IP et par utilisateur
L'un des schémas les plus courants consiste à autoriser l'accès soit depuis une plage IP de confiance, soit avec des identifiants valides :
<RequireAny>
Require ip 10.0.0.0/8
Require valid-user
</RequireAny>
Cela signifie que les utilisateurs sur le réseau interne entrent automatiquement, tandis que les utilisateurs externes doivent s'authentifier. Le conteneur <RequireAny> rend cette logique OU explicite.
Conseils pratiques pour le contrôle d'accès Apache
La source de confusion la plus fréquente lors de la migration vers Apache 2.4 est que l'ancienne et la nouvelle syntaxe peuvent sembler fonctionner simultanément si le module mod_access_compat est chargé. Ce module assure la rétrocompatibilité pour les directives Allow/Deny/Order, donc votre ancienne configuration continue de fonctionner après une mise à jour -- mais mélanger l'ancienne et la nouvelle syntaxe dans le même bloc <Directory> crée un comportement imprévisible. Lors de la migration, convertissez soit tout d'un coup, soit assurez-vous que l'ancienne et la nouvelle syntaxe n'apparaissent jamais dans la même portée. Le générateur ne produit que de la syntaxe Apache 2.4, donc vérifiez que mod_access_compat n'interfère pas avant le déploiement.
Pour les déploiements via .htaccess, rappelez-vous que la configuration du serveur doit explicitement autoriser les surcharges de contrôle d'accès. La directive AllowOverride dans la configuration principale doit inclure AuthConfig (ou All) pour le répertoire en question. Si AllowOverride None est défini, Apache ignore silencieusement toutes les directives .htaccess, y compris vos règles Require ip soigneusement élaborées. C'est un piège courant sur l'hébergement mutualisé où l'administrateur du serveur contrôle AllowOverride.
Lorsque vous protégez des répertoires sensibles comme /phpmyadmin ou /server-status, envisagez de combiner les restrictions IP avec l'authentification. Le contrôle d'accès par IP seul est vulnérable à l'usurpation d'IP au niveau applicatif (headers X-Forwarded-For forgés) si Apache est derrière un reverse proxy. Configurez correctement RemoteIPHeader et RemoteIPTrustedProxy pour empêcher l'injection de headers, et ajoutez Require valid-user comme second facteur afin que même les attaquants sur votre réseau interne aient besoin d'identifiants pour accéder aux outils critiques.
Questions fréquentes
Pourquoi une erreur 500 apparaît-elle après l'ajout de directives Require ip ?
La cause la plus fréquente est l'utilisation de la syntaxe Apache 2.2 (Allow from, Deny from) sur un serveur Apache 2.4, ou l'inverse. Vérifiez votre version d'Apache avec httpd -v ou apache2 -v et utilisez la syntaxe correspondante. Le générateur produit exclusivement la syntaxe Apache 2.4+.
Peut-on combiner l'authentification par IP et l'authentification par utilisateur ?
Oui. Utilisez <RequireAny> pour autoriser l'accès si l'utilisateur provient d'une IP de confiance ou possède des identifiants valides :
<RequireAny>
Require ip 10.0.0.0/8
Require valid-user
</RequireAny>
Cela fonctionne-t-il avec les fichiers .htaccess ?
Oui, à condition que le paramètre AllowOverride du serveur inclue AuthConfig. Si AllowOverride None est défini dans la configuration du serveur, les directives .htaccess sont ignorées silencieusement.
Comment savoir si mon serveur utilise Apache 2.2 ou 2.4 ?
Exécutez httpd -v ou apache2 -v en ligne de commande. Si la version commence par 2.4, utilisez la syntaxe Require ip que ce générateur produit. Si elle commence par 2.2, vous avez besoin de l'ancienne syntaxe Allow/Deny -- mais vous devriez également planifier une mise à jour, car Apache 2.2 a atteint sa fin de vie en 2018.
Quelle est la différence entre Require all denied et Require not ip ?
Require all denied bloque tout le trafic sans condition. Require not ip 10.0.0.0/8 bloque le trafic d'une plage spécifique tout en autorisant le reste (lorsqu'il est utilisé dans <RequireAll> avec Require all granted). Utilisez Require all denied comme solution de repli pour les répertoires entièrement verrouillés, et Require not ip pour les blocklists ciblées.
Peut-on utiliser des noms d'hôte au lieu d'adresses IP ?
Oui, Apache supporte Require host example.com qui effectue une recherche DNS inverse. Cependant, c'est plus lent (le DNS ajoute de la latence à chaque requête), moins fiable (le DNS peut être usurpé) et non recommandé pour les configurations critiques en matière de sécurité. Utilisez des adresses IP ou des blocs CIDR pour le contrôle d'accès.
Outils associés
- CIDR Allow/Deny Snippet Generator (nginx) - Générer des directives allow/deny nginx à partir d'une liste CIDR
- Allowlist Builder - Construire une allowlist CIDR minimale à partir d'une liste d'IP
- Blocklist Builder - Construire une blocklist CIDR minimale à partir d'une liste d'IP
- iptables Rule Generator - Générer des règles iptables à partir d'un CSV
- IP:Port Allowlist Validator - Valider des entrées IP:port en masse