Mis cambios de IP hacen una clase D diferente, por lo que quiero establecer un rango:
123.123.123.xxx donde el último segmento puede ser 0-255.
En este momento, Apache dice:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Mis cambios de IP hacen una clase D diferente, por lo que quiero establecer un rango:
123.123.123.xxx donde el último segmento puede ser 0-255.
En este momento, Apache dice:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Respuestas:
En primer lugar, voy a suponer que te refieres a Apache 2.4 a pesar de la etiqueta "apache-2.2" ya que la sintaxis que has publicado es de 2.4.
De la documentación de Apache:
ip.address es una dirección IP, una dirección IP parcial, un par de red / máscara de red o una especificación CIDR de red / nnn.
Supongo que quiere decir que desea permitir un / 24 ya que la Clase D son direcciones de multidifusión, y las redes con clase murieron en los años 90. Para permitir un / 24, puede usar cualquiera de los siguientes:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
Personalmente, creo que el último es menos ambiguo que el primero y más fácil de leer que el segundo.
Puede encontrar útil esta sección de la documentación: http://httpd.apache.org/docs/2.4/howto/access.html#host
Require
tiene un soporte limitado en Apache 2.2, Apache 2.2 no es compatible con cualquiera de los dos Require ip
o <RequireAny>
. Como se señaló en la Descripción general de las nuevas características en Apache HTTP Server 2.4 , "La lógica de autorización avanzada ahora se puede especificar utilizando la Require
directiva y las directivas de contenedor relacionadas, como <RequireAll>
". Las primeras se encuentran entre las mejoras agregadas a Apache 2.4.
En Apache 2.2 y versiones posteriores, puede trabajar con:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
en su .htacess, directamente en el nivel base (no dentro de ninguno <directive>
).
A partir de Apache 2.4 y superior, aquí tienes:
<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>
(todos los números son ficticios, no te preocupes ;-).
Lo uso desde hace muchos años, para proteger mis carpetas de back-end contra el 99% de los usuarios potenciales. (Funciona muy bien, a menos que sea un ávido blogger mientras viaja. Si es un usuario de gmail: "última actividad de la cuenta" El enlace en la parte inferior es una manera cómoda de descubrir sus propios "hábitos IP").
Require ip 2a02:4126:2aa4::/48
y Require ip 2a02:4126:2aa4::
? Ambos no producen errores de sintaxis para mí, pero solo el primero funciona.
Tomando nota de que ahora se haya confirmado utilizando Apache 2.2 , Apache 2.2 no es compatible con cualquiera Require ip
o <RequireAny>
. Como se señaló en la Descripción general de las nuevas características en Apache HTTP Server 2.4 , "La lógica de autorización avanzada ahora se puede especificar utilizando la Require
directiva y las directivas de contenedor relacionadas, como <RequireAll>
". Las primeras se encuentran entre las mejoras agregadas a Apache 2.4.
Para lidiar con esto en Apache 2.2, probablemente deba hacer algo como:
Order allow,deny
Allow from 123.123.123
que obtendrá todo el rango especificado.
Nota: estoy dejando esto aquí ya que otros podrían beneficiarse de él; No es una respuesta directa a la pregunta.
Por ejemplo:
Requerir ip 192.168.100.0/22
funciona, mientras
Requerir ip 192.168.100.0/22 #localnetwork
falla!
Reinicio de salidas httpd:
El trabajo para httpd.service falló porque el proceso de control salió con el código de error. Consulte "estado de systemctl httpd.service" y "journalctl -xe" para más detalles.
Entonces, parece que no se permiten comentarios en esa línea .
La directiva Requerir de Apache se usa durante la fase de autorización para garantizar que un usuario tenga permiso o no acceso a un recurso. mod_authz_host extiende los tipos de autorización con ip, host, forward-dns y local. También se pueden usar otros tipos de autorización, pero pueden requerir que se carguen módulos de autorización adicionales.
Estos proveedores de autorización afectan qué hosts pueden acceder a un área del servidor. El acceso puede controlarse por nombre de host, dirección IP o rango de direcciones IP.
Desde v2.4.8, las expresiones admitidas en el host requieren directivas. Requerir ip
El proveedor de ip permite controlar el acceso al servidor en función de la dirección IP del cliente remoto. Cuando se especifica Requerir dirección IP IP, entonces se permite el acceso a la solicitud si la dirección IP coincide.
Una dirección IP completa:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
Una dirección IP de un host con acceso permitido
Una dirección IP parcial:
Require ip 10.1
Require ip 10 172.20 192.168.2
Los primeros 1 a 3 bytes de una dirección IP, para restricción de subred.
Un par de red / máscara de red:
Require ip 10.1.0.0/255.255.0.0
Una red abcd y una máscara de red wxyz Para una restricción de subred más precisa.
Una especificación de red / nnn CIDR:
Require ip 10.1.0.0/16
Similar al caso anterior, excepto que la máscara de red consiste en nnn 1 bits de orden superior.
Tenga en cuenta que los últimos tres ejemplos anteriores coinciden exactamente con el mismo conjunto de hosts.
Las direcciones IPv6 y las subredes IPv6 se pueden especificar como se muestra a continuación:
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
Nota: Como las direcciones IP se analizan al inicio, las expresiones no se evalúan en el momento de la solicitud.
Fuente: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html