¿Cómo necesito un rango de IP en lugar de 1 IP?


20

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:


22

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


¿Entonces esto no funcionará en Apache 2.2? phpMyAdmin funciona tanto en 2.2 como en 2.4 y solo verifiqué para ver qué estaba ejecutando este servidor y es 2.2
user281497

A menos que se haya respaldado algo para habilitarlo, nunca he visto esa sintaxis en los archivos de configuración 2.2.
fukawi2

@ fukawi2 - Sí, por supuesto que tienes razón. Para user281497: Mientras que Requiretiene un soporte limitado en Apache 2.2, Apache 2.2 no es compatible con cualquiera de los dos Require ipo <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 Requiredirectiva y las directivas de contenedor relacionadas, como <RequireAll>". Las primeras se encuentran entre las mejoras agregadas a Apache 2.4.
Potro

14

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").


¿Cuál es la diferencia entre Require ip 2a02:4126:2aa4::/48y Require ip 2a02:4126:2aa4::? Ambos no producen errores de sintaxis para mí, pero solo el primero funciona.
Geremia

3
¿Es porque 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, mientras que 2a02: 4126: 2aa4 :: / 48 coincide con todas las direcciones que comienzan con 2a02: 4126: 2aa4?
Geremia

1

Tomando nota de que ahora se haya confirmado utilizando Apache 2.2 , Apache 2.2 no es compatible con cualquiera Require ipo <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 Requiredirectiva 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.


1

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 .


1
No se permiten comentarios en ningún lugar dentro de una línea de configuración, consulte httpd.apache.org/docs/2.4/configuring.html : "Las líneas que comienzan con el carácter hash" # "se consideran comentarios y se ignoran. Los comentarios no se pueden incluir en la misma línea que una directiva de configuración. "
Patrick Mevzek

0

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


55
Por favor, no solo copie y pegue el trabajo de otras personas. Esto se llama plagio.
Gerald Schneider
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.