User Tools

Site Tools


ubuntuvhost810:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ubuntuvhost810:start [2009/01/02 13:51] svschwartzubuntuvhost810:start [2009/02/20 13:28] (current) svschwartz
Line 4: Line 4:
  
 ===== Secure Shell ===== ===== Secure Shell =====
- 
  
 Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей. Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей.
   * [[usergroup|учетные записи и ключи авторизации ssh]]   * [[usergroup|учетные записи и ключи авторизации ssh]]
   * [[sshd_chroot_jail|chroot-jail средствами sshd]]   * [[sshd_chroot_jail|chroot-jail средствами sshd]]
 +
 +==== Учетные записи ====
 +
 +Создадим отдельную группу для пользователей веб хостинга
 +<code>
 +groupadd -r webuser
 +</code>
 +
 +Теперь создадим учетную запись пользователя веб хостинга
 +<code>
 +export WEBUSER=drivesource
 +useradd -s /bin/bash -G www-data,webuser -m ${WEBUSER}
 +</code>
 +
 +Создадим папку для веб-сайта drivesource. Обратите внимание что **владельцем папки** /var/vhost/drivesource должен быть обязательно **root**!
 +<code>
 +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}
 +</code>
 +
 +
 +==== Ключи ssh ====
 +
 +Сгенерируем для него ключи аутентификации ssh. Генератор ключа будет задавать вопросы - на все вопросы жмите enter :)
 +<code>
 +su - ${WEBUSER}
 +ssh-keygen
 +cd .ssh
 +cat id_rsa.pub >> authorized_keys
 +</code>
 +
 +Итак теперь у нас есть приватная и публичная части ключа. Публичный ключ записан в список авторизованных ключей.
 +
 +Теперь мы можем использовать приватный ключ **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**
 +<code php>
 +# 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
 +</code>
 +
 +Перезапустим сервер ssh чтобы параметры вступили в силу
 +<code>
 +/etc/init.d/ssh restart
 +</code>
 +
 +Теперь пользователи группы webuser могут получить доступ к сайту **только по протоколу SFTP**
 +<code>
 +root@deamon:~# sftp drivesource@localhost
 +Connecting to localhost...
 +drivesource@localhost's password:
 +sftp> ls
 +htdocs
 +sftp> pwd
 +Remote working directory: /
 +sftp> 
 +</code>
  
 ===== Apache Virtual Host ===== ===== Apache Virtual Host =====
 +
 +<code>
 +echo "umask 002" >> /etc/apache2/envvars
 +</code>
  
 Перейдем в каталог  cd /etc/apache2/sites-available/ и создадим в нем файл drivesource следующего содержания Перейдем в каталог  cd /etc/apache2/sites-available/ и создадим в нем файл drivesource следующего содержания
 <code apache> <code apache>
-export VHOST=drivesource +export WEBUSER=drivesource 
-cat <<EOFCONFIG >/etc/apache2/sites-available/${VHOST}+cat <<EOFCONFIG >/etc/apache2/sites-available/${WEBUSER}
 <VirtualHost *:80> <VirtualHost *:80>
     ServerAdmin     svschwartz[at]gmail.com     ServerAdmin     svschwartz[at]gmail.com
-    DocumentRoot    /var/vhost/${VHOST}/htdocs+    DocumentRoot    /var/vhost/${WEBUSER}/htdocs
  
-    ServerName      drivesource.ru +    ServerName      ${WEBUSER}.ru 
-    ServerAlias     www.drivesource.ru+    ServerAlias     www.${WEBUSER}.ru
  
-    ErrorLog        /var/log/apache2/${VHOST}/error.log +    ErrorLog        /var/log/apache2/${WEBUSER}/error.log 
-    TransferLog     /var/log/apache2/${VHOST}/access.log +    TransferLog     /var/log/apache2/${WEBUSER}/access.log 
-    CustomLog       /var/log/apache2/${VHOST}/traf.log traff +    CustomLog       /var/log/apache2/${WEBUSER}/traf.log traff 
-    CustomLog       /var/log/apache2/${VHOST}/combined.log combined+    CustomLog       /var/log/apache2/${WEBUSER}/combined.log combined
  
-    ScriptAlias /cgi-bin/ /var/vhost/${VHOST}/cgi-bin/ +    ScriptAlias /cgi-bin/ /var/vhost/${WEBUSER}/cgi-bin/ 
-    <Directory /var/vhost/${VHOST}/cgi-bin>+    <Directory /var/vhost/${WEBUSER}/cgi-bin>
         AllowOverride None         AllowOverride None
         Options ExecCGI         Options ExecCGI
Line 36: Line 117:
     </Directory>     </Directory>
  
-    <Directory /var/vhost/${VHOST}/htdocs>+    <Directory /var/vhost/${WEBUSER}/htdocs>
         Options Indexes Includes FollowSymLinks MultiViews         Options Indexes Includes FollowSymLinks MultiViews
         AllowOverride All         AllowOverride All
Line 45: Line 126:
 </VirtualHost> </VirtualHost>
 EOFCONFIG EOFCONFIG
-a2ensite ${VHOST}+a2ensite ${WEBUSER}
 </code> </code>
  
Line 51: Line 132:
 <code> <code>
 /etc/init.d/apache2 reload /etc/init.d/apache2 reload
 +</code>
 +
 +
 +===== MySQL database =====
 +
 +<code>
 +WEBUSER=drivesource
 +DBPASS=secret
 +export WEBUSER DBPASS
 +cat <<EOFSCRIPT
 +create database ${WEBUSER}_main;
 +GRANT ALL PRIVILEGES ON ${WEBUSER}_main.* TO '${WEBUSER}'@'localhost' IDENTIFIED BY '${DBPASS}';
 +commit;
 +exit;
 +EOFSCRIPT
 +mysql -u root -p
 </code> </code>
ubuntuvhost810/start.1230904272.txt.gz · Last modified: (external edit)