Debian Hosting & Root Access | RoseHosting

Debian Hosting & Root Access | RoseHosting Хостинг
Содержание
  1. . Начало
  2. . Позаботимся об SSH (по желанию)
  3. . Текстовый редактор
  4. . Полное обновление Debian
  5. . Изменим Shell
  6. . Синхронизация времени
  7. . Установка пакетов Postfix, Dovecot, MariaDB, rkhunter и Binutils
  8. . Тонкая настройка MariaDB
  9. Постановка задачи
  10. . Установка Metronome XMPP Server (по желанию)
  11. .1. HHVM (HipHop Virtual Machine)
  12. .2. SuPHP
  13. . Let’s Encrypt
  14. . PHP-FPM
  15. . PHP Opcode Cache (на Ваше усмотрение)
  16. . Mailman
  17. . PureFTPd и Quota
  18. . BIND DNS Server
  19. . Webalizer and AWStats
  20. 0 Обновляемся
  21. 1 Генерируем ключи для SSH
  22. 2 Файловая система. Права пользователей.
  23. 3.1 Права пользователей. Модификация Apache [apache2-mpm-itk]
  24. 3.2 Отдельный tmp для каждого сайта
  25. 4 vsftpd
  26. 5 MySQL PostgreSQL
  27. 6 Firewall
  28. 7 Запуск Apache2 в chroot среде [посредством libapache2-mod-chroot]
  29. 8 Автоматизация добавления новых пользователей
  30. . fail2ban and UFW Firewall
  31. . RoundCube
  32. .1 OpenVZ
  33. 23 install ispconfig
  34. Debian hosting & root access | rosehosting
  35. Run, jump, fly, sell
  36. Базовая настройка компонентов nginx и получение сертификата
  37. Как создать базу данных
  38. Настройка сайта
  39. Организация доступа к серверу для разработчика
  40. Постскриптум
  41. Работа с базой данных
  42. Разверните облачный веб-хостинг на базе debian и ispmanager за 2 минуты |
  43. Размещение сайта на сервере
  44. Резервное копирование данных
  45. Требования к серверу
  46. Управление apache
  47. Установка mysql/mariadb
  48. Установка php
  49. Установка и настройка mariadb
  50. Установка и настройка php7
  51. 3.3 Sendmail
  52. .2 Download a beta version of the next 3.1 release (recommended for test setups only!)
  53. .1 Download the stable release (recommended)

. Начало

Будем использовать hostname hosting.shhost.ru с IP-адресом 185.46.86.3 в качестве примера. Естественно, каждый читатель должен будет использовать свои параметры. Кроме того, мною все действия проделаны на минимальной версии Debian, которая была установлена на выделенный сервер или на виртуальный сервер.

. Позаботимся об SSH (по желанию)

Для своего собственного удобства я обязательно устанавливаю OpenSSH:

apt-get -y install openssh-server ssh

Это особенно ценно потому, что в будущем можно будет использовать великолепный клиент putty для подключения к нашему серверу из-под Windows.

. Текстовый редактор

Большинство пользователей привыкло к nano. Но монстры Linux прочно сидят на vi. Я предпочитаю mcedit.  Давайте не будем спорить и установим все редакторы сразу, только оговоримся, что что vi ведёт себя странно именно под Debian, поэтому сделаем шаг в сторону vim-nox:

apt-get -y install nano mc vim-nox

Конечно, можно установить только и один требуемый пакет в данном пункте.

. Полное обновление Debian

Убедимся, что файл /etc/apt/sources.list содержит репозитории stretch/updates (чтобы всегда получать актуальные обновления безопасности), а также разрешим  contrib и non-free.

mcedit /etc/apt/sources.list

. Изменим Shell

/bin/sh это символьная ссылка на /bin/dash, но нам нужно /bin/bash, а не /bin/dash. Выполним:

dpkg-reconfigure dash

Use dash as the default system shell (/bin/sh)? <- no

Если этого не сделать, установка ISPConfig закончится провалом.

. Синхронизация времени

Постараемся поддерживать точное время на нашей системе, используя службу NTP (network time protocol). Выполним:

apt-get install ntp

Этого достаточно, чтобы точное время синхронизировалось по Интернету.

. Установка пакетов Postfix, Dovecot, MariaDB, rkhunter и Binutils

Достаточно одной команды, чтобы установить Postfix, Dovecot, MariaDB, rkhunter, Binutils:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Лично мне больше нравится MySQL, чем MariaDB (о чём я уже говорил), однако простая замена в вышеприведённой команде «mariadb-client mariadb-server» на «mysql-client mysql-server» не привела к положительным результатам. А после нескольких неудачных попыток установить MySQL, я смирился с MariaDB.

Потребуется ответить на вопросы:

General type of mail configuration:<— Internet SiteSystem mail name: <— hosting.shhost.ru

С точки зрения безопасности крайне рекомендуется запустить специальную утилиту для MariaDB / MySQL:

mysql_secure_installation

Отвечаем последовательно на вопросы:

. Тонкая настройка MariaDB

Создаём директорию /etc/systemd/system/mysql.service.d/ из командной строки:

mkdir -p /etc/systemd/system/mysql.service.d/

Добавляем в

mcedit /etc/systemd/system/mysql.service.d/limits.conf

несколько строк:

[Service]
LimitNOFILE=infinity

Сохраняем файл. Перезагружаем systemd и MariaDB:

systemctl daemon-reload
service mysql restart

Проверяем работу в сети:

netstat -tap | grep mysql

Видим что-то типа:

# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld

Постановка задачи

Дано

Debian-сервер «из коробки» (установлен из дистрибутива)

ЗадачаОрганизовать работу нескольких проектов на сервере, чтобы люди, которые ими занимаются, не имели доступа к соседним проектам:

. Установка Metronome XMPP Server (по желанию)

Metronome XMPP Server позволяет получить сервер чата с протоколом XMPP. Данный пункт является необязательным. Следует выполнять его только в том случае, если необходим сервер чата. Ни одна из функций ISPConfig не является зависимой от него.

Добавим репозиторий Prosody для Debian.

.1. HHVM (HipHop Virtual Machine)

Пакетов HHVM для Debian 9 пока нет. Придётся обойтись без этого режима PHP.

.2. SuPHP

SuPHP больше не поддерживается под Debian 9, функции SuPHP устарели и будут удалены из ISPConfig. Придётся использовать доступные PHP-FPM или PHP-FCGI вместе с suexec вместо SuPHP.

. Let’s Encrypt

ISPConfig 3 поддерживает бесплатные сертификаты SSL от Let’s encrypt. Функция Let’s Encrypt позволяет создавать SSL certificates для сайта прямо из панели ISPConfig.

Добавим поддержку Let’s encrypt.

. PHP-FPM

Менеджер процессов PHP-FPM позволяет резко ускорить обработки скриптов даже под Apache, но потребуется модуль mod_proxy_fcgi, который будет установлен по умолчанию (потребуется его разрешить).

apt-get -y install php7.0-fpm

Разрешаем модуль и перезапускаем Apache:

a2enmod actions proxy_fcgi alias 
service apache2 restart

. PHP Opcode Cache (на Ваше усмотрение)

Opcache это бесплатный кэшер для интерпретатора PHP. APCu это модуль совместимости APC для Opcache который испльзуется системами кэширования популярных CMS. Рекомендуется установить эти расширения для ускорения обработки РНР.

apt-get -y install php7.0-opcache php-apcu

Рестарт Apache:

service apache2 restart

. Mailman

ISPConfig позволяет управлять (в том числе создавать/изменять/удалять) списки рассылки Mailman. Установим Mailman:

apt-get install mailman

Потребуется установить хотя бы один язык:

Languages to support: <-- en (English)
Missing site list <-- Ok

Перед запуском Mailman потребуется создать первый список рассылки с именем mailman:

newlist mailman

. PureFTPd и Quota

PureFTPd и quota устанавливаются командой :

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Редактируем файл настроек:

mcedit /etc/default/pure-ftpd-common

Наша задача — проверить, что режим установлен в standalone и VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Now we configure PureFTPd to allow FTP and TLS sessions. FTP is a very insecure protocol because all passwords and all data are transferred in clear text. By using TLS, the whole communication can be encrypted, thus making FTP much more secure.

If you want to allow FTP and TLS sessions, run

. BIND DNS Server

BIND can be installed as follows:

apt-get install bind9 dnsutils

 If your server is a virtual machine, then it is highly recommended to install the haveged daemon to get a higher entropy for DNSSEC signing. You can install haveged on nonvirtual servers as well, it should not hurt.

apt-get install haveged

An explanation on that topic.

. Webalizer and AWStats

Webalizer and AWStats can be installed as follows:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Open /etc/cron.d/awstats afterwards…

nano /etc/cron.d/awstats

… and comment out everything in that file:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

0 Обновляемся

Ставим свежие версии пакетов. Вот мой список репозиториев:

1 Генерируем ключи для SSH


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

neoveneficus@book:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/neoveneficus/.ssh/id_rsa): 
/home/neoveneficus/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/neoveneficus/.ssh/id_rsa.
Your public key has been saved in /home/neoveneficus/.ssh/id_rsa.pub.
The key fingerprint is:
cb:07:dd:67:21:37:ab:93:e1:60:40:ce:0e:b8:b8:e3 neoveneficus@book
The key's randomart image is:
 --[ RSA 2048]---- 
|    .            |
| .               |
|. .       .      |
|.. o .   .       |
|    . o S . o o  |
|.o   .   = . o   |
|.E    . * o      |
|       . o       |
|        .        |
 ----------------- 

Обратите внимание — ключи генерируются на Вашей рабочей машине, а затем публичный ключ заливается на сервер:

neoveneficus@book:~/.ssh$ scp ~/.ssh/id_rsa.pub root@217.212.252.146:.ssh/authorized_keys
neoveneficus@book:~/.ssh$ cat ~/.ssh/id_rsa.pub | ssh root@217.212.252.146 "cat > ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"

Теперь мы сможем заходить на сервер — по ключу, с паролем или без — в зависимости от Ваших настроек. Хочется подчеркнуть, что если Вы сгенерировали ключи без пароля, то уровень безопасности сервера эквивалентен уровню безопасности Вашего секретного ключа на Вашей машине. Будьте внимательны и берегите ключ.

2 Файловая система. Права пользователей.

Поговорим про файловую систему. Я предлагаю выделить для наших сайтов отдельную папку в корне файловой системы.

debian:~# cd / 
debian:/# mkdir -m 755 web

Домашние папки наших пользователей будут такого вида:

Создаем пользователей и расставляем права:

3.1 Права пользователей. Модификация Apache [apache2-mpm-itk]

Как нам известно, по умолчанию web-сервер apache работает от одного пользователя для всех сайтов, находящихся на сервере. А это означает, что, воспользовавшись web-шеллом, можно прочитать файлы соседних проектов.

Для исправления этого недоразумения нам понадобится установить модифицированную версию аpache. Пакет называется apache2-mpm-itk. Установив пакет, мы получим возможность в конфигах файла указывать, от какого пользователя и группы должен работать apache при обработке сайта.

debian:~# apt-get install apache2-mpm-itk

Пользователь и группа задается строкой в конфиге:

3.2 Отдельный tmp для каждого сайта

Предотвращаем инклуд сессий с соседнего сайта. Запрещаем php выходить выше пользовательской домашней дирректории.

В конфиг нашего сайта нужно добавить диррективы open_basedir, upload_tmp_dir, session.save_path

Получаем такой минималистичный конфиг:

4 vsftpd

Теперь разберемся с FTP. Для работы был выбран vsftpd.

debian:~# apt-get install vsftpd

Далее меняем конфиг:

5 MySQL PostgreSQL

Ставим MySQL

6 Firewall

В нашем случае цели просты — запретить злоумышленнику открывать порты. Поэтому решение будет простым — мы не будем вдаваться в нюансы правил iptables, а воспользуемся пакетом arno-iptables-firewall, который упростит нам жизнь. Он сам спросит нас, что мы хотим во время установки. Ответы на вопросы ниже.

debian:~# apt-get install arno-iptables-firewall

    * Do you want to manage the firewall setup with debconf? : Да
    * External network interfaces: eth0
    * Open external TCP-portrs: 21 22 53 80 443 3128 5432 5001 5900 6881:6889
    * Open external UDP-portrs: 53 3130 5001 6881:6889
    * Internal network interfaces: <в нашем случае оставляем пустым>
    * Соглашаемся на перезагрузку firewall'а.

7 Запуск Apache2 в chroot среде [посредством libapache2-mod-chroot]

Что такое chroot’инг? Это создание специальной среды (песочницы), изолированной от окружения. Скажем, процесс apache не должен иметь доступа к папкам home. В тоже время в изолированную среду нужно брать все, что нужно для работы. Самый простой способ — это воспользоваться libapache2-mod-chroot.

debian:~# apt-get install libapache2-mod-chroot debian:~# a2enmod mod_chroot
debian:~# /etc/init.d/apache2 restart

Chroot’инг — это интересная тема с кучей своих проблем, связанных с тем, что помимо apache обычно требуется куча дополнительных программ, библиотек и средств для работы. Поэтому я не буду делать статью в статье, и отправлю Вас на отличный материал по этой теме. Используйте программу ldd и берите с собой в изолированное окружение все, что нужно именно Вам.

8 Автоматизация добавления новых пользователей

Начал писать скрипт и понял, что монстр, который может все, будет использовать неудобно. В статье все команды писались так, чтобы их потом просто было засунуть в sh скрипт. Поэтому я думаю, что каждый пользователь за несколько минут легко состряпает сценарий, необходимый и удобный именно ему.

. fail2ban and UFW Firewall

This is optional but recommended, because the ISPConfig monitor tries to show the log:

apt-get install fail2ban

To make fail2ban monitor PureFTPd and Dovecot, create the file /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

And add the following configuration to it.

[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
maxretry = 3

Перезапуск fail2ban:

service fail2ban restart

To install the UFW firewall, run this apt command:

apt-get install ufw

. RoundCube

Установка:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Мы ответим на следующие вопросы:

.1 OpenVZ

If the Debian server that you’ve just set up in this tutorial is an OpenVZ container (virtual machine), you should do this on the host system (assuming that the ID of the OpenVZ container is 101 — replace it with the correct VPSID on your system):

23 install ispconfig

The next step is to run the ISPConfig installer.

php -q install.php

This will start the ISPConfig 3 installer. The installer will configure all services like Postfix, Dovecot, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary.

# php -q install.php

>> Initial configuration
Operating System: Debian 9.0 (Stretch)
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter

Debian hosting & root access | rosehosting

Our servers are built to serve users like you with a premium, high-quality hosting experience that focuses on giving you convenience and transparency above all. You need a high-performance server that can handle the visitors and requests that are being made to your website. It comes down to three main factors: CPU, Storage, and Network. Our CPUs are the latest-generation Intel® Xeon® Gold processors. Their excellent performance lets your server handle many requests simultaneously, process data from requests that are made, and run several services at once with ease.

Storage is make-or-break for a website’s performance. A fast processor is useless if it’s always waiting for data to be loaded from the slow storage. That’s why we only pair our high-performance processors with the best enterprise-grade NVMe storage on the market. With read and write speeds in excess of 3 Gigabytes per second, you’ll see load times that simply aren’t possible with a regular SSD, not to mention spinning hard drives. Storage is the largest bottleneck in a server, and we use the best hardware to give your server the best performance.

Having a high-performance and redundant network setup is also key in serving many visitors reliably. With our redundant 10Gbe uplinks and excellent data center location, we’re able to provide your VPS with excellent throughput, all while U.S. visitors enjoy faster response times.

These factors combined make for what we believe is some of the best server hardware available at this price point.

Run, jump, fly, sell

As stated above, A2 Hosting’s WordPress experts developed the four different levels of WordPress plans based on feedback from current and prospective customers. All plans include cPanel’s WordPress Toolkit for easy site management. The tiers are defined as: 

Базовая настройка компонентов nginx и получение сертификата

Nginx. Установка выполняется стандартным для Debian способом:

sudo apt update && sudo apt install -y nginx

Получение сертификата Let’s Encrypt. Для установки сертификата Let’s Encrypt установим требуемое программное обеспечение:

Как создать базу данных

Для создания базы данных введите команду:

Где BaseName — это название базы данных.

Готово, теперь вы можете удалённо подключиться к базе данных или привязать её к вашему проекту.

Настройка сайта

Настройку начнем с того, что завершим конфигурацию Nginx для работы с PHP-FPM. Для этого изменим конфигурационный файл сайта /etc/nginx/sites-available/$WEBSITE_NAME.

Добавим перед секцией server следующий фрагмент конфигурации, который задает способ связи с PHP-FPM:

upstream php {
        server unix:/run/php/php7.0-fpm.sock;
}

# то, что ниже не добавлять в настройку, 
# приведено для примера куда вставить секцию
# upstream
#
server {
        listen 443 ssl;
        listen [::]:443 ssl;

...

Удалим следующие строки конфигурации:

       index index.html;

       location / {
                try_files $uri $uri/ =404;
       }

Добавим следующие строки конфигурации вместо них:

Организация доступа к серверу для разработчика

Если настраиваемый сервер планируется для разработки, возможно, требуется настроить FTP-сервер для работы с файлами сайта.

Для настройки мы воспользуемся возможностью Linux создавать нескольких пользователей с одним и тем же UID. В этом случае все учетные записи являются синонимами, но им можно назначать разные пароли и оболочки.

Дело в том, что файлы, которые обслуживаются Nginx хранятся под пользователем www-data. Если мы создадим нового уникального пользователя, то придется для установить на файлы и каталоги широкие права для того, чтобы он мог манипулировать файлами Nginx, кроме того, вероятно, будет возникать путаница с правами и периодическая недоступность ресурсов, связанная с этим.

Вместо этого, мы создадим пользователя developer с таким же UID как и у www-data, соответственно, он сможет получить нормальный доступ к файлам и права будут корректными.

Сначала узнаем UID www-data:

id www-data
uid=33(www-data) gid=33(www-data) группы=33(www-data)

Теперь добавим нового пользователя с повторяющимся UID:

Постскриптум

Буду рад замечаниям. Особенно интересны мысли по поводу chroot. Кто знает простые рецепты?

Работа с базой данных

Для работы с базой данных вам необходимо создать пользователя и саму базу.

После установки MySQL/MariaDB автоматически будет создан root пользователь. Работать с базой данных под root небезопасно, поэтому необходимо создать нового пользователя и назначить ему права доступа.

Запустите сервер базы данных с помощью команды:

Разверните облачный веб-хостинг на базе debian и ispmanager за 2 минуты |

Размещение сайта на сервере

Для размещения сайта на сервере необходимо создать виртуальный хост и привязать домен. Для этого:

Готово, теперь вы можете приступить к публикации вашего сайта в созданный каталог.

Резервное копирование данных

Важно настроить резервное копирование сразу же, как только вы настроили сервер, не откладывая это действие на потом. Воспользуйтесь нашим пошаговым руководством по настройке инкрементного резервного копирования файлов и баз данных для MySQL и PostgreSQL с помощью Duplicity.

Требования к серверу

Для нормальной работы сайта с более-менее приличной нагрузкой вам понадобится сервер с одним или двумя ядрами, 1 GB RAM и 10 GB хранилища. Мы предполагаем, что вы уже располагаете такими или большими ресурсами и готовы приступить к установке.

Управление apache

Готово, установка Apache завершена.

Установка mysql/mariadb

MariaDB является заменой для MySQL в Debian. При попытке установить MySQL (mysql-server) на Debian система установит MariaDB и установит её в качестве сервера базы данных по умолчанию. При этом работа с MariaDB мало отличается от работы с MySQL.

Установка php

Готово, на этом установка и настройка Lamp Debian завершена.

Установка и настройка mariadb

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для Debian 9 Stretch:

Установка и настройка php7

PHP версии 7.0 присутствует в стандартной поставке Debian 9 Strech. Установим пакеты из репозитория:

sudo apt install -y php7.0-common php7.0-readline php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-curl php7.0-mbstring php7.0-opcache php7.0-json php7.0-xml php7.0-zip

# поправим настройки PHP для режима FPM

sudo sed -i "s/memory_limit = .*/memory_limit = 256M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.0/fpm/php.ini

Менеджер процессов PHP-FPM может работать в трех режимах — статическом, динамическом и «по требованию». По умолчанию, используется динамический режим. Мы изменим режим на режим «по требованию». Для этого мы перенесем базовую конфигурацию в файл www.conf.orig, а новую конфигурацию заполним данными из листинга ниже:

sudo mv /etc/php/7.0/fpm/pool.d/www.{conf,conf.orig} 
sudo nano /etc/php/7.0/fpm/pool.d/www.conf

3.3 Sendmail

Почему я вынес Sendmail отдельным пунктом? Потому что по умолчанию он не работал. Пришлось повозится. Я расскажу самый простой способ. Чтобы php умел отправлять письма, проделываем следующие операции.

# file: /etc/php5/apacge2/php.ini [раскомментируем и изменим строку]
   sendmail_path = /usr/sbin/exim4 -t

Для конфигурации Exim4 (по умолчанию в качестве Mail Transfer Agent используется именно он) существует пакет exim4-config. Воспользоваться им можно так:

debian:~# dpkg-reconfigure exim4-config

После этого вам начнут задавать вопросы. На первый (Общий тип почтовой конфигурации) отвечаем:


А далее жмем Enter до конца настройки. Теперь все должно работать.

.2 Download a beta version of the next 3.1 release (recommended for test setups only!)

If you like to try out the pre-release of an upcoming 3.1 version, download it with this command:

To install ISPConfig 3 from the latest released version, do this:

Оцените статью
Хостинги