This is an old revision of the document!
Table of Contents
Web Hosting
Для веб хостинга берем LAMP1) в качестве базовой конфигурации.
Secure Shell
Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей.
Учетные записи
Создадим отдельную группу для пользователей веб хостинга
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 нам потребуется преобразовать формат приватного ключа с помощью утилиты 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 <<EOFCONFIG >/etc/apache2/sites-available/${WEBUSER}
<VirtualHost *:80>
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/
<Directory /var/vhost/${WEBUSER}/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory /var/vhost/${WEBUSER}/htdocs>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
EOFCONFIG
a2ensite ${WEBUSER}
Активируем сайт
/etc/init.d/apache2 reload
