Безопасность файлов веб-приложений и паролей базы данных в среде общего хостинга Linux

471
jozxyqk

У меня есть веб-приложение на машине с виртуальным хостингом Linux. Допустим, у меня есть .htpasswdфайл, некоторые конфиги, которые хранят пароль базы данных и, как правило, не хотят, чтобы люди просматривали мой исходный код в поисках уязвимостей.

Веб-серверу (apache) необходим доступ на чтение (и в некоторых случаях запись) к указанным выше файлам. Однако я не хочу, чтобы другие люди на том же хосте имели доступ.

Я никогда не понимал, как это должно работать. Вопрос здесь аналогичен, но, похоже, больше указывает на то, что веб-приложение не может случайно разместить файл паролей.

AFAIK, все, с чем я должен работать - это базовые разрешения для Linux. На одном сервере я должен дать «другим» разрешения для apache. Затем удаление разрешений группы, в которые входят все остальные пользователи, лишает их доступа. Это кажется довольно окольным. На другом сервере установлена nobodyгруппа с установленными public_htmlтолько групповыми разрешениями.

Одна из проблем заключается в том, что если пользователь apache имеет доступ к моим файлам, простой сценарий может быть написан и выполнен для получения доступа другим пользователем:

<?php header("Content-Type: text/plain"); include $_GET['f']; ?> 

TLDR: мне нужен apache для доступа к исходным файлам и паролям, но не для других пользователей на той же машине (за исключением администраторов ofc).

Что такое общие настройки?

Смежные вопросы:

0
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он либо принадлежит WebApps SE, либо SuperUser. RoraΖ 9 лет назад 0
@raz ура. Я сделаю репост там. jozxyqk 9 лет назад 0
Модификаторы перенесут это для вас. RoraΖ 9 лет назад 0
@raz хорошо, тогда я подожду. jozxyqk 9 лет назад 0

1 ответ на вопрос

0
Alex Atkinson

Создайте группу, добавьте в нее apache / www-data. Затем:

chown -R apache: имя группы / var / www / mywebapp / && \ chmod -R 640 / var / www / mywebapp

Это предоставит владельцу права на чтение и запись (6) и права на чтение группы (4) для папки и всех подкаталогов и файлов. Пользователь apache сможет получить доступ к файлам, как и владелец, но другие не смогут. Вы должны убедиться, что они не могут su для пользователя apache.

Используйте блоки каталогов в конфигурации vhost, чтобы ограничить доступ на уровне папок. http://httpd.apache.org/docs/2.0/misc/security_tips.html # См. Защита файлов сервера http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host

Но что происходит, когда они правят короткий скрипт php, который пытается получить доступ к этим файлам? Он будет работать как пользователь apache и сразу все увидит. jozxyqk 9 лет назад 0
Я добавил ссылки на блоки каталогов. Скрипты в каталоге vhost клиентов не должны иметь доступа к другим каталогам на сервере общего хостинга. Alex Atkinson 9 лет назад 0
Благодарю. Я просматривал эти страницы, но я не видел (или, по крайней мере, не понял) ничего конкретного, что ограничивало бы доступ пользовательских сценариев к каталогам других пользователей. Не могли бы вы указать на это? jozxyqk 9 лет назад 0
Сделайте тестового хоста и тестового пользователя. Примените блоки директорий к конфигам vhost и протестируйте свой сценарий. Это единственный способ получить практическое понимание. Вы получите это. Alex Atkinson 9 лет назад 0

Похожие вопросы