Рейтинг:0

Apache 2.4: директива Require (например, все запрещено) не соблюдается

флаг mx

Я использую Apache 2.4.41 на Ubuntu 20.04 и не могу заставить директивы Require работать на моем VirtualHost. В качестве минимального рабочего примера мой файл VHost:

<VirtualHost *:80>
        ServerName my.domain.com
        DocumentRoot "/var/www/html/admin"

        <Directory /var/www/html/admin>
               Require all denied
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

предназначен для блокировки любого доступа, но журнал показывает:

[authz_core:debug] [pid 340724] mod_authz_core.c(735): [клиент ***.***.***.***:59008] AH01625: результат авторизации <RequireAny>: разрешено (директива ограничена другие методы)

Я не вижу никаких переопределений поведения Require в другом месте моего дерева конфигурации Apache. Например, /etc/apache2/apache.conf содержит:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
</Directory>

Мои загруженные модули:

Загруженные модули:
 core_module (статический)
 so_module (статический)
 watchdog_module (статический)
 http_module (статический)
 log_config_module (статический)
 logio_module (статический)
 version_module (статический)
 unixd_module (статический)
 access_compat_module (общий)
 alias_module (общий)
 auth_basic_module (общий)
 authn_core_module (общий)
 authn_file_module (общий)
 authz_core_module (общий)
 authz_host_module (общий)
 authz_user_module (общий)
 autoindex_module (общий)
 cgi_module (общий)
 deflate_module (общий)
 dir_module (общий)
 env_module (общий)
 filter_module (общий)
 headers_module (общий)
 mime_module (общий)
 mpm_prefork_module (общий)
 модуль переговоров (общий)
 php7_module (общий)
 proxy_module (общий)
 proxy_http_module (общий)
 remoteip_module (общий)
 reqtimeout_module (общий)
 rewrite_module (общий)
 setenvif_module (общий)
 socache_shmcb_module (общий)
 ssl_module (общий)
 status_module (общий)

апачектл -т и апачектл -S дать стандартный вывод.

Кто-нибудь какие-нибудь мысли о том, где я должен искать дальше?

(Напоминание: Apache 2.4, а не Apache 2.2, поэтому рекомендуется использовать текущую терминологию)

djdomi avatar
флаг za
Отвечает ли это на ваш вопрос? [Как запретить веб-доступ к некоторым файлам?] (https://serverfault.com/questions/22577/how-to-deny-the-web-access-to-some-files) ИМХО, вы, кажется, пропустили ` заказ `
MartinV avatar
флаг mx
Привет, спасибо, что нашли время, чтобы прокомментировать. К сожалению, связанная статья была для Apache 2.2, а не для Apache 2.4. Терминология устарела в более поздних версиях.
Рейтинг:0
флаг mx

Спасибо всем, кто прочитал мой вопрос - я нашел решение и решил поделиться им.

Я переместил свое дерево Apache2 в одну сторону и переустановил соответствующие пакеты из репозитория. Набор директив Require снова заработал, поэтому я сравнил старое и новое деревья, чтобы найти различия.

Я нашел непонятную директиву, содержащую команду Require all, которую я поместил в свой каталог с поддержкой conf, и это оказалось причиной проблемы.

Так что, если есть проблемы с директивами Apache, стоит проверить не только apache2.conf и каталог vhosts — поработайте и через каталоги conf и mods!

Ваше здоровье

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.