Мы слышали, что хорошей практикой обеспечения безопасности является сброс всех настроек виртуального хоста так, чтобы ничего не было разрешено, а затем добавление еще одной директивы для разрешения определенного доступа — что-то вроде этого:
<VirtualHost *:80>
DocumentRoot /home/example/public_html
<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
<Directory /home/example/public_html >
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
Это в какой-то степени имеет смысл, но мы не уверены, поэтому хотели бы услышать несколько мнений о том, как лучше всего все организовать.
решение1
Если вы действительно используете <Directory />
директиву так, как она написана, вы ничего не меняете для этого виртуального хоста, но вместо этого вы снова и снова объявляете одни и те же переопределения для каталога /
.
Таким образом, эти параметры ничего не делали или, в лучшем случае, <Directory />
применялся только последний встреченный раздел:
https://httpd.apache.org/docs/current/sections.html#merging
Если этот раздел выглядит одинаково для каждого виртуального хоста, это не вызовет проблем, но если некоторые виртуальные хосты отличаются и количество виртуальных хостов меняется со временем, будет сложно понять, какая из <Directory />
директив была применена.
Я бы удалил этот <Directory />
раздел со всех виртуальных хостов и объявил бы его один раз, в глобальной конфигурации.