Estoy ejecutando CentOS 5.5 con el stock Apache httpd-2.2.3.
He habilitado mod_status en Location / server-status. Me gustaría permitir el acceso a esta ubicación única de la siguiente manera:
- Negar todo
- Permitir desde la subred 192.168.16.0/24
- Negar desde un IP 192.168.16.100, que está dentro de la subred 192.168.16.0/24.
1 y 2 son fáciles. Sin embargo, dado que "Permitir desde 192.168.16.0/24", ¿es posible Denegar desde 192.168.16.100?
Intenté agregar una declaración de denegación para 192.168.16.100 pero no funciona. Aquí está la configuración relevante:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
O:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Sin embargo, esto no impide el acceso a esta página en particular, como se demuestra en los registros de acceso:
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
De acuerdo con el manual de mod_authz_host :
Permiten negar
Primero, se evalúan todas las directivas Permitir; al menos uno debe coincidir, o la solicitud es rechazada. A continuación, se evalúan todas las directivas de denegación. Si alguno coincide, la solicitud es rechazada
La dirección IP coincide con la directiva Denegar, ¿no debería rechazarse la solicitud?
De acuerdo con la tabla en la página mod_authz_host, esta dirección IP debería "coincidir con Permitir y Denegar" y, por lo tanto, debería aplicarse la regla "Controles de coincidencia final: Denegado".
Coincidir Permitir, Negar resultado Negar, Permitir resultado Coincidencia Permitir solo Solicitud permitida Solicitud permitida Solo denegar coincidencia Solicitud denegada Solicitud denegada Sin coincidencia Predeterminado a segunda directiva: denegado Predeterminado a segunda directiva: permitido Coincide con Permitir y denegar Controles de coincidencia final: denegados Controles de coincidencia final: permitidos
fuente
Allow from 192.168.16.0/24
. Según tengo entendido la documentación, cualquier IP solicitante en la red 192.168.16.0/24 coincidirá con esta declaración Permitir, la solicitud está permitida.Respuestas:
No lo he probado, pero creo que ya casi estás allí.
Deny from all
no es necesario. De hecho, se arruinará porque todo coincidiráall
y, por lo tanto , se lo negará (y creo que Apache está tratando de ser inteligente y hacer algo estúpido). Siempre he encontrado ApacheOrder
,Allow
yDeny
directrices complicadas, por lo que siempre visualizar las cosas en una tabla (tomado de los documentos ):Con la configuración anterior:
fuente
Probablemente también miraría agregar reglas de IPTables para que esto denegue el host único en el puerto 80, lo niegue de todos y permita la subred.
No debería tener problemas para configurar una regla de denegación desde una dirección específica después de haber permitido la subred. Solo hazlo en ese orden.
fuente
¿Puedes usar php? Si es así, agregue una instrucción php para salir / redirigir para esa dirección IP específica
Ejemplo:
$ deny = array ("111.111.111", "222.222.222", "333.333.333");
if (in_array ($ _SERVER ['REMOTE_ADDR'], $ deny))
{header ("ubicación: http://www.google.com/ ");
salida();
Referencia: http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-php/
fuente