Правильно настроить виртуальные хосты Apache для нескольких пользователей.

15

Заранее благодарим за любую помощь, которую вы можете оказать. Я сам учил себя, используя linux (ubuntu), apache, виртуальные хосты и некоторые аспекты безопасности, хотя мне еще предстоит собрать все это без проблем.

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

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

Наш текущий сервер - версия 10.04, однако новый сервер - версия 12.04. Все файлы сайта настроены под

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

и т.д

Короче, я думаю, это то, что я после.

  1. Как правильно настроить виртуальный хост и пользователя, чтобы он имел доступ только к своим файлам, а не к любому другому виртуальному хосту на сервере. Например, если этот сайт эксплуатируется вредоносным кодом, он не может заразить другие сайты на сервере.

  2. Как бы я настроить пользователей так, чтобы они могли только ftp в свои файлы и не иметь доступа к другим сайтам

Как упоминалось ранее, есть множество статей, подробно описывающих, как выполнить любой из этих шагов, но нет ничего, что бы объединяло их.

Очень ценю помощь, которую может предложить каждый. Пожалуйста, не стесняйтесь спрашивать любую дополнительную информацию, которая может вам понадобиться, чтобы дать совет. В настоящее время я следую учебным пособиям по настройке chroot, однако боюсь, что я делаю это неправильно, так как я обнаружил несколько несоответствий по пути. Также расследую джейлкит.

user249729
источник

Ответы:

6

Поскольку вопрос является главным результатом поиска в Google, когда его спрашивают «отдельный пользователь виртуального хоста apache», я хотел бы дать более подробный ответ на основе этого ответа . Мой ответ не распространяется на сценарии использования PHP и CGI (вы бы использовали suPHP). Он ориентирован на PHP при использовании в качестве модуля Apache.

Вы можете использовать модуль apache apache2-mpm-itk . Он доступен для текущей версии apache 2.4. Это идет с директивой AssignUserID. Эта директива определяет пользователя и группу, с которой обрабатывается запрос виртуального хоста. Это пример конфигурации сайта Apache, с которой я закончил:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

Конечно, это только повышает безопасность, если отдельные DocumentRoots принадлежат их соответствующим пользователям и не доступны для группы. Для дальнейшей безопасности, связанной с PHP, скрипты заключены в тюрьму DocumentRootс ограничением open_basedir. Что касается доступа к внутреннему файлу, я предпочитаю SFTP с chroot .

Примечание: apache2-mpm-itk в настоящее время несовместим с модулем Apache http2.

Герман
источник
1

Я не считаю, что это ответ на ваш вопрос сам. Но так как я пока не могу комментировать, я должен написать в поле «ответ». Я сезонно занимаюсь веб-менеджментом, и один из способов, с помощью которого я могу протестировать и испытать все в безопасности, - это настроить тестовую среду на виртуальной машине (например, VirtualBox) или «старом» настольном компьютере. Одна из самых распространенных проблем начинающих администраторов веб-хостинга - понять, как работают программы веб-сервера. В этом случае я предполагаю, что вам нужно понять, как работает Apache, и хотя бы понять файлы конфигурации. Я считаю, что Webmin - очень полезный инструмент - для новичка - для управления Apache и другими сервисами. Вы должны потратить некоторое время, чтобы попробовать что-то в своей тестовой среде, чтобы вам стало понятнее.

Возвращаясь к вашему вопросу, я думаю, что ответом может быть учебная статья или небольшая книга. Проверьте эти статьи для начала:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/

biocyberman
источник
Спасибо биоцибермен. Это основные шаги, которые я выполняю и с которыми я хорошо знаком. Единственное отличие состоит в том, что я не назначил каждый веб-сайт другому пользователю, и это то, что я собираюсь попробовать позже, однако защищает ли это папки виртуальных хостов друг от друга? Jailkit, кажется, является частью решения, но я не уверен на 100%. Я играл с webmin в прошлом, поэтому еще раз вернусь к нему и посмотрим, поможет ли он с любым из моих вопросов.
user249729