У меня общий вопрос о безопасности Apache DocumentRoot
, который исходит из заявления, которое я прочитал при установке Galaxy, биоинформатического веб-сервиса и инфраструктуры. В заявлении говорится
"Обратите внимание, что Galaxy никогда не должен располагаться на диске внутри DocumentRoot Apache.
По умолчанию это сделает всю Galaxy (включая наборы данных) доступными для всех в Интернете ".
Этот абзац скопирован из https://wiki.galaxyproject.org/Admin/Config/ApacheProxy
Итак, вопрос в том, в чем разница между помещением некоторого содержимого в DocumentRoot
против помещения в подкаталог DocumentRoot
? Даже если содержимое будет помещено в подкаталог, по умолчанию, будет ли все содержимое доступно для всех в Интернете?
Если я положу содержимое в DocumentRoot
из SSL
сервер, и разрешить доступ только аутентифицированным и авторизованным пользователям, решит ли это проблему доступа во всем мире?
Обновление: спасибо всем за вдумчивые ответы. Думаю, я получил ответы на все свои вопросы. Подвести итоги:
Подкаталог в DocumentRoot будет доступен всем, если для него не установлены другие разрешения.
SSL защищает только пакеты, передаваемые по сети, но не права доступа к файлам.
Аутентификация / авторизация ограничивают круг лиц, имеющих доступ к DocumentRoot.
Разрешения файлов Unix / Linux не влияют на доступ, поскольку все файлы должны быть доступны владельцу веб-сервера.
Подкаталог DocumentRoot по-прежнему считается внутри DocumentRoot.
Когда некоторые программные пакеты не рекомендуют размещать часть пакета внутри DocumentRoot, подразумевается, что она должна находиться за пределами DocumentRoot.
Так, например, если ваш DocumentRoot /var/www/example.com/html
вы можете захотеть поместить эти файлы в другое место, например, скажем /var/www/example.com/restricted
И нет, SSL не решает и даже не решает проблему, связанную с наличием конфиденциальных файлов конфигурации в корне документа!
Чтобы добавить к ответу Джо Снайдермана, размещение файлов вне корня документа делает их недоступными для пользователя, вводящего URL-адрес в своем браузере, но по-прежнему доступными для скриптов, работающих в корне документа.
Например, вы создаете отчет, который анонимизирует и объединяет данные для входа в систему. Вы помещаете скрипт в корень вашего документа как /var/www/example.com/html/report.php
чтобы другие могли увидеть, насколько популярен ваш сайт.
Ваш отчет должен использовать необработанные пользовательские данные, поэтому он ссылается на файл /var/www/example.com/restricted/login.log
в качестве источника. Этот файл не находится в корне документа и поэтому доступен только через report.php, который в любом случае анонимизирует данные. Вы не хотите, чтобы необработанные данные были общедоступными, поэтому храните конфиденциальные данные подальше от корня документа.
Все, что находится под DocumentRoot, считается частью веб-сайта и будет должным образом доставлено Apache, если вы знаете путь.
НО....
Защищать папку очень просто. Просто создайте вокруг него правило перезаписи, или контроль доступа, или что-то еще.
Но еще лучше разместить различные сценарии в другом месте. В других ответах есть такие строки:
/var/www/example.com/restricted
Но это не за пределами DocumentRoot. Это снаружи:
/var/www/example.com-scripts/
или:
/var/admin-code/example.com/
или где-нибудь еще в файловой системе. Все, что вам нужно, это программное обеспечение, которое ожидает, что его код будет жить в другом месте, и параметр конфигурации, в котором вы укажете ему, где находится папка.
Как уже упоминалось, SSL ничего не делает для вас, кроме как гарантировать, что хакер №2 не сможет подслушать, как хакер №1 читает пароли вашей базы данных.
Цитата
«Обратите внимание, что Galaxy никогда не должен располагаться на диске внутри DocumentRoot Apache. По умолчанию это сделает доступным все Galaxy (включая наборы данных) для всех пользователей Интернета».
применяется к КОНКРЕТНОМУ ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ и ожидаемым от него параметрам настройки!
Согласно вышесказанному. конфигурация Galaxy по умолчанию может означать, что что все файлы под ("внутри") DocumentRoot доступны.
Вот почему вы должны перемещать файлы, недоступные для доступа оттуда.
Это предположение может быть неверным при другой установке или нестандартной установке Galaxy. В частности, Directory
инструкции могут открывать или закрывать части файловой системы, Location
инструкции могут открывать или закрывать части дерева URI, Alias
Инструкция может отображать поддерево файловой системы на URI и разрешения на уровне файловой системы, а также принудительный контроль доступа (через SELinux или другую систему = может разрешать или предоставлять доступ к частям файловой системы процессу веб-сервера.
Пример для «выхода за пределы DocumentRoot»: