Apache: cliente denegado por la configuración del servidor


150

estoy obteniendo

[Mar 24 de abril 12:12:55 2012] [error] [cliente 127.0.0.1] cliente denegado por la configuración del servidor: / labs / Projects / Nebula / bin /

La estructura de mi directorio se ve así (estoy usando Symfony 2, debería ser una estructura similar para otros marcos web)

ingrese la descripción de la imagen aquí

Tengo una configuración de vhosts como:

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

Me pregunto cuál es el problema y cómo lo soluciono.


1
@JiewMeng: Probablemente deberías aceptar la respuesta de Phil. Parece ser el problema con la mayoría de las instalaciones de Apache hoy (Apache 2.4). Gracias.
dotancohen

Respuestas:


396

Apache 2.4.3 (o quizás un poco antes) agregó una nueva característica de seguridad que a menudo resulta en este error. También verá un mensaje de registro con la forma "cliente denegado por la configuración del servidor". La función requiere una identidad de usuario autorizada para acceder a un directorio. DEFAULT lo activa en httpd.conf que se incluye con Apache. Puede ver la habilitación de la función con la directiva

Require all denied

Esto básicamente dice que denegar el acceso a todos los usuarios. Para solucionar este problema, elimine la directiva denegada (o mucho mejor) agregue la siguiente directiva a los directorios a los que desea otorgar acceso:

Require all granted

como en

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

9
también podría ser necesario agregar Satisfy Anydespués de laRequire all granted
MarkHu

@ MarkHu: ¿puede explicar la posible necesidad de Satisfy anyen este contexto? Lo pregunto porque estaba tirando de mi cabello aquí, y agregando esto, todo funcionó para mí. Lo extraño es que la aplicación estaba trabajando con la entrada vhost existente hasta una reciente actualización de Apache 2.4.9. Una vez más extraño, es que está funcionando bien en otro servidor con la misma aplicación / vhost y versiones de Apache / PHP. Sin embargo, diferentes servidores: AWS Linux y Ubuntu 14.10 respectivamente. Extraño ... supongo que necesito comparar los httpd.confarchivos de cada servidor para ver si hay una diferencia de configuración allí ...
Darragh Enright

Comprueba también htaccessen el camino al que estás intentando acceder
Ujjwal Singh,

Mi entorno no funcionaba hasta que decidí utilizar la solución @MarkHu Satisfy Any. ¡¡¡Gracias!!!
Neonigma

incluso después de cambiar para requerir todo lo otorgado, muestra el mismo error Acceso denegado.
Deepak

10

OK, estoy usando la sintaxis incorrecta, debería estar usando

Allow from 127.0.0.1
Allow from ::1
...

1
Para apache> 2.4, esto solo no podría funcionar para mí. Pero funcionó cuando se combinó con Require all granted, como lo sugirió @ Phil-L
Mugoma J. Okomba

5

En Apache 2.4, la antigua sintaxis de autorización de acceso ha quedado en desuso y ha sido reemplazada por un nuevo sistema que utiliza Requerir .

Lo que quieres es algo como lo siguiente:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

Esto permitirá que las conexiones que se originan ya sea desde el host local o desde direcciones IP que comienzan con "192.168.1".

También hay un nuevo módulo disponible que hace que Apache 2.4 reconozca la sintaxis anterior si no desea actualizar su configuración de inmediato:

sudo a2enmod access_compat

1

¿Puede intentar cambiar "Permitir de 127.0.0 192.168.1 :: 1 localhost" a "Permitir de todos"? Si eso soluciona su problema, debe ser menos restrictivo sobre dónde se puede solicitar contenido


1

Aquí está mi archivo de host virtual Symfony 1.4 en Debian, que funciona bien.

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

Si no desea restringir el acceso a un rango de IP específico, por ejemplo, localhost use esto:

Allow from 127.0.0.0/8

El mod_authz_host se encarga de filtrar rangos de IP. Puedes buscar cosas detalladas allí.

Pero tal vez el problema podría estar relacionado con algún tipo de configuración incorrecta en su "apache2.conf".

¿En qué sistema operativo se está ejecutando el apache?


1

si tienes el

Allow from All

en httpd.conf luego asegúrese de que tengamos

index.php

como en la línea de abajo en httpd.conf

DirectoryIndex index.html index.php

1

Tuve este problema usando Vesta CP y para mí, el truco fue eliminar .htaccess e intentar acceder a cualquier archivo nuevamente.

Eso resultó en la regeneración del archivo .htaccess y luego pude acceder a mis archivos.



-3

Este código funcionó para mí ...

 <Location />
Allow from all
Order Deny,Allow
</Location> 

Espero que esto ayude a otros


1
Esto no debería ser alentado a agregar a una configuración de apache.
Ricky Mutschlechner

Esto permite que apache acceda a todos los archivos de la computadora. Muy malo para la seguridad.
Deleet
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.