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.

Jiew Meng
fuente
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>
Phil L
fuente
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
...
Jiew Meng
fuente
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
Chirrido
fuente
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

MauricioOtta
fuente
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?

cb0
fuente
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
Satya
fuente
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.

Guille Acosta
fuente
0

En mi caso la clave fue:

AllowOverride All

en vhost definición. Espero que esto ayude a alguien.

Kunegunda Gburia-Furia
fuente
-3

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

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

Espero que esto ayude a otros

santosh
fuente
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