Acabo de actualizar Apache de su versión 2003, a una nueva versión 2.4.1 impecablemente limpia. Todo parece bastante bueno, excepto por una cosa deslumbrante:
En mi archivo httpd.conf tengo lo siguiente:
<Directory />
AllowOverride none
Options FollowSymLinks
AuthType Basic
AuthName "Enter Password"
AuthUserFile /var/www/.htpasswd
Require valid-user
</Directory>
Esto debería permitir que solo los usuarios en el archivo de autenticación especificado accedan al servidor, tal como lo había hecho con la versión anterior de Apache. (¿Derecho?)
Sin embargo, no está funcionando. Las solicitudes se otorgan sin autenticación proporcionada. Cuando cambio el registro a LogLevel Debug, para los accesos, dice:
[Sat Mar 24 21:32:00.585139 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of Require all granted: granted
[Sat Mar 24 21:32:00.585446 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of <RequireAny>: granted
Realmente no sé lo que esto significa, y yo (a mi leal saber y entender) no tengo ninguna declaración de "Requerir todo otorgado" o "" en ninguno de mis archivos.
¿Alguna idea de por qué esto no funciona o dónde depurar?
ACTUALIZAR:
Tengo un host virtual en el puerto SSL que permite la representación. Cuando pongo las mismas entradas dentro del
<proxy *>
cláusula en la configuración de virtualhost, funciona . No parece funcionar en el
<Directory>
cláusula. Luego intenté poner otras cláusulas de directorio (específicas para otros directorios) y tampoco funcionó.
ADEMÁS
De las preguntas de Shane a continuación: intenté duplicar el bloque raíz "/" en un directorio "/ tmp". ¡El directorio / tmp funciona CORRECTAMENTE! Entonces, ¿este problema es específico solo del directorio raíz?
fuente
<Directory>
bloques tiene para aplicar a las solicitudes que no funcionan?<Directory>
bloque más específico en otra parte de su configuración de Apache que tiene prioridad sobre el que ha establecido/
.Respuestas:
Tuve un problema similar con la autenticación Digest en una nueva instalación 2.4. Mirando de cerca la documentación en el sitio de Apache, parece que las directivas de autenticación deben estar en una
<Location>
etiqueta en lugar de una<Directory>
etiqueta. Consulte la documentación de la directiva AuthBasicProvider .fuente
Me enfrenté al mismo problema, y nada de esta publicación me ha ayudado, así que agregaré mis 2 centavos. En mi caso (apache 2.4) el problema estaba en las directivas Requerir secuenciales .
De manera predeterminada, si tiene más de una directiva Requerir , se consideran como
<RequireAny>
En mi
<Directory>
he tenidoPor lo tanto, la solicitud de autenticación no apareció si la IP era correcta. He tenido que cambiar Requerir lógica de
<RequireAny>
a<RequireAll>
y parece que ahora todo funciona correctamente.fuente
La respuesta de jscott es incorrecta. Apache 2.4 con toda seguridad lo hace permitir que las directivas de autenticación en
<Directory>
contenedores. Además, esta es la única forma segura de implementar la autenticación, ya<Location>
que se puede acceder a los contenedores de diferentes maneras, lo que permite evitar su autenticación si no tiene cuidado. En aras de la referencia, aquí hay un contenedor de muestra que estoy usando en un sistema de producción:<Directory "/srv/http/my_domain.org/html/secret-stuff"> Options Indexes Multiviews FollowSymLinks AuthType Digest AuthName "staff" AuthUserFile /etc/httpd/private/secret-stuff.htaccess Require valid-user </Directory>
fuente
Parece que le falta un proveedor para AuthBasic. Intenta agregar una línea como:
Una vez que tenga esto funcionando, es posible que desee ver la
Satisfy
directiva. Esto se puede usar para permitir el acceso local sin contraseña, mientras se requiere una contraseña para acceder a Internet.EDITAR: utilizo un archivo de inclusión para BasicAuth para permitir el acceso remoto basado en contraseña al contenido que normalmente no está disponible en Internet. Es posible que no desee la
Satisfy
directiva. Este es mi/etc/apache2/basicauth.conf
archivo:También tengo un
/etc/apache2/allow_local.conf
archivo de inclusión para autenticación basada en IP.Para habilitarlos utilizo estos incluye.
Es posible que desee intentar agregar a la especificación de autorización. Esto funciona con mi configuración de prueba.
fuente
Tuve el mismo problema y es probable que sea un error de Apache; en mi caso, el problema apareció después de una actualización y desapareció después de una actualización posterior, pero tuve que agregar esto en la parte inferior:
Da miedo que Apache pueda abrir agujeros de seguridad como este :(
fuente
Deny from all
es una configuración de apache 2.2. httpd.apache.org/docs/2.4/upgrading.html#run-timeTratar:
<Directory "/"> ... </Directory>
En lugar de:
<Directory /> ... </Directory>
Significado: encapsular el símbolo raíz con comillas dobles. De lo contrario, podría estar cerrando la etiqueta con esa barra inclinada.
fuente
También verifique si accidentalmente no hay otro
en otro lugar en la misma configuración de Directorio. puede estar anulando su
fuente