====== Web Hosting ====== Для веб хостинга берем LAMP((Linux Apache Mysql PHP)) в качестве базовой конфигурации. ===== Secure Shell ===== Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей. * [[usergroup|учетные записи и ключи авторизации ssh]] * [[sshd_chroot_jail|chroot-jail средствами sshd]] ==== Учетные записи ==== Создадим отдельную группу для пользователей веб хостинга groupadd -r webuser Теперь создадим учетную запись пользователя веб хостинга export WEBUSER=drivesource useradd -s /bin/bash -G www-data,webuser -m ${WEBUSER} Создадим папку для веб-сайта drivesource. Обратите внимание что **владельцем папки** /var/vhost/drivesource должен быть обязательно **root**! mkdir /var/vhost/${WEBUSER} mkdir /var/vhost/${WEBUSER}/htdocs /var/vhost/${WEBUSER}/cgi-bin chown ${WEBUSER}.www-data /var/vhost/${WEBUSER}/* chmod 6750 /var/vhost/${WEBUSER}/* mkdir /var/log/apache2/${WEBUSER} chown root.adm /var/log/apache2/${WEBUSER} chmod 0750 /var/log/apache2/${WEBUSER} ==== Ключи ssh ==== Сгенерируем для него ключи аутентификации ssh. Генератор ключа будет задавать вопросы - на все вопросы жмите enter :) su - ${WEBUSER} ssh-keygen cd .ssh cat id_rsa.pub >> authorized_keys Итак теперь у нас есть приватная и публичная части ключа. Публичный ключ записан в список авторизованных ключей. Теперь мы можем использовать приватный ключ **id_rsa** для аутентификации на сервере. Для использования в WinSCP или PuTTY нам потребуется преобразовать формат приватного ключа с помощью утилиты [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|PuTTYgen]]. ==== SSH chroot-jail ==== Итак настроим сервер sshd следующим образом - разрешить аутентификацию только по ключам - пользователей группы webuser заключать в chroot-jail Правим файл конфигурации сервер sshd **/etc/ssh/sshd_config** # Change to no to disable tunnelled clear text passwords PasswordAuthentication no #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match group webuser ForceCommand internal-sftp ChrootDirectory /var/vhost/%u X11Forwarding no AllowTcpForwarding no Перезапустим сервер ssh чтобы параметры вступили в силу /etc/init.d/ssh restart Теперь пользователи группы webuser могут получить доступ к сайту **только по протоколу SFTP** root@deamon:~# sftp drivesource@localhost Connecting to localhost... drivesource@localhost's password: sftp> ls htdocs sftp> pwd Remote working directory: / sftp> ===== Apache Virtual Host ===== echo "umask 002" >> /etc/apache2/envvars Перейдем в каталог cd /etc/apache2/sites-available/ и создадим в нем файл drivesource следующего содержания export WEBUSER=drivesource cat </etc/apache2/sites-available/${WEBUSER} ServerAdmin svschwartz[at]gmail.com DocumentRoot /var/vhost/${WEBUSER}/htdocs ServerName ${WEBUSER}.ru ServerAlias www.${WEBUSER}.ru ErrorLog /var/log/apache2/${WEBUSER}/error.log TransferLog /var/log/apache2/${WEBUSER}/access.log CustomLog /var/log/apache2/${WEBUSER}/traf.log traff CustomLog /var/log/apache2/${WEBUSER}/combined.log combined ScriptAlias /cgi-bin/ /var/vhost/${WEBUSER}/cgi-bin/ AllowOverride None Options ExecCGI Order allow,deny Allow from all Options Indexes Includes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all EOFCONFIG a2ensite ${WEBUSER} Активируем сайт /etc/init.d/apache2 reload ===== MySQL database ===== WEBUSER=drivesource DBPASS=secret export WEBUSER DBPASS cat <