января 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

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


Popularity: -1%

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

Обсудить на форуме

Дай же, не жадничай!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

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.


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

  • Поиск при помощи утилиты find
  • Настройка Dynamic DNS на базе Bind9 и nsupdate
  • Вышел релиз Ubuntu Lucid Lynx 10.04 LTS
  • Объединение сетевых интерфейсов при помощи bonding
  • Мобильная версия сайта
  • Установка Zend Optimizer на Ubuntu 10.04 LTS
  • Основы программирования под Mac OS X
  • Вышла вторая бета версия Ubuntu 10.04
  • Настройка SNMPD на Mac OS X
  • Началось тестирования первой альфа-версии Ubuntu 10.10
  • Ограничение количества сессий с одного ip адреса
  • Вышел новый номер компьютерного журнала UserAndLINUX.
  • Отключение ipv6 для JavaVM
  • Настройка NAT по принципу сеть в сеть при помощи iptables NETMAP
  • Открытие форума
  • Настройка беспроводного интернета Yota WIMAX
  • Установка и настройка VSFTPD + MYSQL (Ubuntu & Debian)
  • Настройка Kernel NAT на FreeBSD
  • Создание игрового сервера World of Warcraft на базе Debian или Ubuntu
  • Установка и настройка Pure-FTPD в связке с MYSQL на FreeBSD
  • Вышла бета версия Ubuntu 10.10 Maverick Meerkat
  • C Новым Годом!
  • Подробное руководство по настройке wifi соединения с шифрованием разных типов
  • Вышел релиз почтового клиента Thunderbird 3.0
  • Ubuntu Server Pack
  • Просмотр IPTV из сети за сервером NAT
  • Настройка Cron
  • Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO
  • Установка Ubuntu Linux на MacBook Pro
  • Игры в Linux

  • « | »

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