Назад | Перейти на главную страницу

Как сделать error_log недоступным для Интернета?

Я использую 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>

тогда любой клиент, запросивший этот файл, будет отклонен.