Веб-сервер Apache может отображать содержимое каталогов для пользователей, если в них нет стандартного индексного файла (например, index.html). Этой функцией управляет модуль mod_autoindex. Когда функция отображения каталогов включена, если пользователь обращается к каталогу без индексного файла, он увидит список файлов и папок в этом каталоге.
Обычные индексные файлы по умолчанию включают:index.html, index.htm, index.php и welcome.html. Они могут быть настроены в директиве DirectoryIndex в конфигурационном файле Apache.
Хотя листинг каталогов может быть полезен для открытого обмена файлами, он может случайно раскрыть конфиденциальные файлы или структуру каталогов сервера. Для повышения безопасности рекомендуется отключить эту функцию. В этом руководстве мы рассмотрим три основных метода, позволяющих добиться этого в Apache.
Отключение листинга каталогов Apache путем отключения модуля autoindex
Прямым способом является отключение модуля mod_autoindex. Обратите внимание, что это повлияет на все сайты, размещенные на сервере.
Запустите выбранное вами терминальное приложение.
Отключите модуль autoindex для Apache.
1 | sudo a2dismod --force autoindex |
- Дистрибутивы с поддержкой a2dismod могут просто выполнить приведенную выше команду без необходимости вручную отключать необходимые модули.
- Директива LoadModule для соответствующего модуля autoindex должна быть отключена вручную путем удаления или комментирования (добавлением # в начале) строки в конфигурационном файле.
Опции | Debian, Ubuntu | openSUSE и SLES | Fedora Core, CentOS, RHEL | macOS | homebrew | xampp |
Поддержка a2dismod | Да | Да | нет | нет | нет | нет |
Модули для деинсталляции | отсутствует | |||||
Имя модуля | н/а | autoindex | ||||
Директива Loadmodule | н/а | #LoadModule autoindex_module <module_locations>/mod_autoindex.so |
Перезапустите Apache, чтобы изменения вступили в силу.
Запрет листинга каталогов Apache с помощью директивы Directory's Options
Вы можете специально запретить листинг каталогов, добавив -Indexes к директиве Options в конфигурационном файле Apache.
Откройте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/other/mysite.conf |
Конфигурация может быть задана глобально или из конфигурации VirtualHost.
Найдите строку Options в блоке Directory.
1 2 3 | <Directory /var/www/mysite> Options Indexes FollowSymLinks </Directory> |
Удалите опцию Indexes или добавьте -Indexes к директиве Options.
1 2 3 | <Directory /var/www/mysite> Options -Indexes FollowSymLinks </Directory> |
Обратите внимание, что это -Indexes, а не +Indexes
Сохраните и выйдите из редактора.
Перезапустите службу Apache, чтобы применить изменения.
Отключите листинг каталогов Apache с помощью .htaccess
Если у вас нет прав root или вы предпочитаете контролировать листинг каталогов для определенных директорий, воспользуйтесь файлом .htaccess:
Перейдите в каталог, в котором вы хотите отключить вывод списка каталогов.
Откройте или создайте файл .htaccess в каталоге, используя предпочтительный текст
1 | sudo nano /var/www/mysite/.htaccess |
Добавьте директиву -Indexes к директиве Options в файле .htaccess.
1 | Options -Indexes |
Убедитесь, что конфигурация Apache позволяет использовать файлы .htaccess, проверив, что для директивы AllowOverride установлено значение All или, по крайней мере, Options для соответствующего каталога.
Сохраните и выйдите из редактора.
Перезапустите Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |