января 18 2009 05:07 пп

Запуск виртуальных хостов Apache2 от разных пользователей

mobitv-failed-security-opens-gaping-hole.JPG

Допустим у вас есть 3 пользователя, и они имеют сайты на вашем сервере, но при стандартном веб сервере apache2 все они имеют привелегии пользователя www-data от которого запущен веб сервер. Допустим, пользователь user1 при помощи простого php скрипта может просмотреть файлы в директории пользователя user2, так же получить доступ к файлам конфигурации сайта и в итоге к паролям от баз данных. Есть несколько способов решения этой пролемы, такие как chroot или jail, или запуск виртуальных хостов от имени разных системных пользователей. Для этого нам потребуетс установить немного модифицированный apache, для операционных систем Debian и Ubuntu он уже включен в официальные репозитории, насчет остальных не знаю, подробнее вы сможете узнать на сайте разработчика по адресу http://mpm-itk.sesse.net В настройке нет ничего трудного и заумет это всего несколько минут.

И так, для начала заменим стандартный apache2 на модифицированный apache2-mpm-itk выполнив команду

Код:


apt-get install apache2-mpm-itk

Пакет при установке предложет удалить apache2, не пугайтесь, все настройки останутся неизменными, спокойно соглашайтесь.
Затем добавьте нужных пользолвателей в систему, от их имени будут работать виртуальные хосты нашего веб сервера.

Код:


useradd -s /bin/false -m -d /var/www/site1 -c "website1.ru" site1

Этой командой мы добавили юзера site1 с домашней директорией /var/www/site1 (подразумевается что там и будет распологаться сайт)
По аналогии добавьте других пользователей с домашними директориями в /var/www

Теперь надо подправить права на директории и сменить владельца.

Код:


chown -R site1:site1 /var/www/site1
cd /var/www/
find ./ -type d -exec chmod 4770 {} \;

Затем отредактируем конфигурационные файлы виртуальных хостов как показано в примере ниже, только заменив имена пользователя и его группу на реальные.

Код:


[....]
<IfModule mpm_itk_module>
AssignUserId site1 site1
</IfModule>
</VirtualHost>

Указывать имя и группу надо по порядку, сначала имя пользователя для виртуального хоста, затем группу.
После того как вы отредактировали ваши конфиги надо перезапустить apache

Код:


/etc/init.d/apache2 restart

После этого виртуальные хосты будут работать от пользователей которых вы указали в конфигах.
Удачи в работе!


Популярность: 55%

8 Комментариев »

1 звезда2 звезд3 звезд4 звезд5 звезд (3 голосов, средний: 5 из 5)
Загрузка ... Загрузка ...
Дай же, не жадничай!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

8 Responses to “Запуск виртуальных хостов Apache2 от разных пользователей”

  1. XoRe on 19 Янв 2009 at 17:15 #

    Так же могу посоветовать в папке пользователя создать папки data, tmp, files.
    И настроить папку data - корневой для его сайта.
    Это делается директивой:
    DocumentRoot “/var/www/site1/data”

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

    Так же могу посоветовать задействовать такие параметры:

    # Папка, выше которой php скрипты не полезут
    php_admin_value open_basedir “/var/www/site1″

    # Корневая папка
    php_admin_value doc_root “/var/www/site1″

    # Папка для загрузки временных файлов
    php_admin_value upload_tmp_dir “/var/www/site1/tmp/”

    # Папка для сохранения файлов сессий
    php_admin_value session_save_path “/var/www/site1/tmp/”
    php_admin_value session.save_path “/var/www/site1/tmp/”

    Тогда все файлы будут сохраняться в директории пользователя.
    А то php любит сохранять сессии или временные файлы в папках /tmp или /var/tmp.

    И ещё, прошу заметить, что параметру open_basedir можно передать несколько путей, разделенных двоеточием.
    Это может быть нужно для того, чтобы дать доступ скриптам к каким-то модулям.

    Например:
    php_admin_value open_basedir “/var/www/site1:/usr/local/share/pear”

    Без этого в свое время не хотел запускаться egroupware - не мог получить доступ к модулям с нужными функциями.

  2. Stepanoff on 19 Янв 2009 at 18:52 #

    Спасибо за полезные советы, возьму на заметку

  3. MrSlim on 21 Янв 2009 at 06:03 #

    Очень полезная статейка, давно искал способ как такое сделать без плясок с бубном. Спасибо :)

  4. zheka_gl on 20 Фев 2009 at 21:42 #

    Полезная статья. Только после установки столкнулся с проблемой suexec DOC_ROOT=”/var/www”
    И .htaccess в некоторых сайтах перестал работать. Права проставлены верно, конфигурация виртуальных хостов одинаковая. В одном работает, в другом- нет. Не подскажете, где копать?

  5. Stepanoff on 20 Фев 2009 at 22:12 #

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

  6. zheka_gl on 21 Фев 2009 at 20:18 #

    все проверил, все верно. Сайты работают, но с ошибками. Попробую директорию для suexec сменить.

  7. andrejt on 03 Фев 2010 at 14:09 #

    может быть кто то подскажет, как бы еще и nginx так же от разных пользователей запускать?

  8. Stepanoff on 03 Фев 2010 at 14:11 #

    Для nginx такого не видел, может реализуют в дальнейшем.

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


Самые популярные статьи

  • Установка почтового сервера Postfix + Dovecot + MYSQL и виртуальных доменов
  • Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO
  • Установка Samba сервера на Ubuntu или Debian за 5 минут
  • Подборка wide-screen обоев высокого разрешения
  • Mail.ru Агент в Linux
  • Установка и настройка DHCP сервера
  • Подробное руководство по настройке wifi соединения с шифрованием разных типов
  • Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH
  • Настройка ограничения и распределения канала (HTB Shaper)
  • Создание загрузочной флэшки с Ubuntu 8.04 Live или Server
  • Настройка маршрутизации в Ubuntu Linux для начинающих
  • Настройка вебкамер Genius и Acer Crystal Eye в Ubuntu 8.04
  • Редактирование текста при помощи SED
  • Сотня лучших полезных программ с открытым исходным кодом.
  • Небольшая подборка обоев "Linux like"
  • Установка VMware Server на Ubuntu 8.04
  • Блокировка нежелательных URL с помощью iptables
  • Запуск виртуальных хостов Apache2 от разных пользователей
  • Виртуализация с помощью Qemu
  • Вышел пакет PlayOnLinux 3.0 для запуска Windows игр в Linux
  • Установка драйвера MADWIFI для сетевого адаптера Atheros 5xxx
  • Установка сервера голосового общения TeamSpeak
  • Установка и настройка SSHD в среде chroot при помощи makejail
  • HDR обои на рабочий стол 1920x1200
  • Настройка маршрутизации с помощью Quagga (zebra)
  • Установка системы резервного копирования BackupPC
  • Установка и настройка L2TP сервера xl2tpd или l2tpd
  • Настройка поддержки мультимедиа в Ubuntu 8.04
  • Релиз Midnight Commander 4.6.3
  • Что такое Zeroconf и с чем его едят

  • « XAMPP - web сервер для Mac OS | Изучение спроса на статьи о Mac OS »

    Рейтинг блогов Rambler's Top100
    службы мониторинга серверов