Я использую Apache, CentOS 5.5, cPanel.
Я хочу заблокировать доступ к файлам error_log из Интернета, так как он показывает ошибки, которые могут выдавать данные, которые я не хочу отдавать.
Как я могу это сделать?
Ответ на этот вопрос заключается в том, что файл error_log вашего сервера не хранится в том же дереве каталогов, что и файлы содержимого вашего веб-сервера. Например, ваш веб-сервер обычно обслуживает файлы откуда-то вроде /var/www
, в то время как он записывает файлы журнала в /var/log/httpd
. Конфигурация веб-сервера такова, что он никогда не сможет получить доступ к файлам журнала и сделать их доступными в сети.
РЕДАКТИРОВАТЬ: ответ на комментарий о том, что журналы могут быть доступны веб-серверу для отправки клиентам. При просмотре httpd.conf это, безусловно, технически возможно. Если ваши DocumentRoot и ServerRoot указывают на одно и то же дерево файловой системы, я полагаю, что в конечном итоге вы сможете обслуживать error_log клиентам. Также, если вы используете абсолютный путь для ErrorLog, вы можете поместить его в свой DocumentRoot и снова сделать его доступным для клиентов.
В любом из этих случаев вы можете защитить свой error_log файлом .htaccess в том же каталоге с таким содержимым:
<files error_log>
order allow,deny
deny from all
</files>
тогда любой клиент, запросивший этот файл, будет отклонен.