Установка бесплатной панели ISPConfig с нуля с Nginx, PHP (PHP-FPM)

После того, как мы установили систему, настроили в ней сеть и доступ по ssh, установим бесплатную панель управления сервером ISPConfig, nginx и php-fpm, mysql, почту, файрвол, антивирус, и опробуем всё это в действии. Поехали:

Изменим оболочку по умолчанию

root@server1:~# file /bin/sh
/bin/sh: symbolic link to dash

/bin/sh является символической ссылкой на /bin/dash , однако нам нужен /bin/bash , а не /bin/dash . Поэтому изменим оболочку по умолчанию:

root@server1:~# dpkg-reconfigure dash
Использовать dash в качестве системной оболочки по умолчанию (/bin/sh)? < Нет

Синхронизируем системные часы с NTP (Network Time Protocol)

root@server1:~# apt-get install ntp

теперь за точность времени можно не волноваться.

Устанавливаем Postfix, Dovecot, MySQL, rkhunter и binutils

root@server1:~# 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

Отвечаем на вопросы. Тип почтовой конфигурации — интернет сайт. Имя почты системы — server1.example.com

Защищаем mysql

root@server1:~# mysql_secure_installation
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
root@server1:~#

Настраиваем Postfix конфиг следующим образом:

root@server1:~# nano /etc/postfix/master.cf
[...]
smtp      inet  n       -       y       -       -       smtpd
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_tls_auth_only=yes
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

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

root@server1:~# service postfix restart

Для того, чтобы MariaDB прослушивала все интерфейсы, а не только localhost,  редактируем /etc/mysql/mariadb.conf.d/50-server.cnf  и комментируем строку bind-address = 127.0.0.1

root@server1:~# nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address            = 127.0.0.1
[...]

Устанавливаем метод аутентификации по паролю в MariaDB на native, чтобы позже мы могли использовать PHPMyAdmin для подключения от имени пользователя root

root@server1:~# echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Задаем корневой пароль mysql в /etc/mysql/debian.cnf

root@server1:~# nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password = 12345
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password = 12345
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Для предотвращения ошибки Too many open files установим более высокие лимиты на открытие файлов MariaDB

root@server1:~# nano /etc/security/limits.conf

в конец файла добавляем:

[...]
mysql soft nofile 65535
mysql hard nofile 65535

Создаем каталог и файл:

root@server1:~# mkdir -p /etc/systemd/system/mysql.service.d/
root@server1:~# nano /etc/systemd/system/mysql.service.d/limits.conf

В файл пишем:

[Service]
LimitNOFILE=infinity

Перезагружаем systemd и перезапускаем MariaDB

root@server1:~# systemctl daemon-reload
root@server1:~# systemctl restart mariadb

Установим систему dbconfig-common

root@server1:~# apt-get install dbconfig-common dbconfig-mysql

В настоящее время существует проблема с системой Debian dbconfig-common, которая позже запрещает установку RoundCube, исправьте ее, выполнив следующую команду:

root@server1:~# sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

Теперь убедитесь, что сеть включена

root@server1:~# netstat -tap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      20663/mysqld

Установите Amavisd-new, SpamAssassin и ClamAV

Чтобы установить amavisd-new, SpamAssassin и ClamAV, мы запускаем

root@server1:~# apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

Настройка ISPConfig 3 использует amavisd, который загружает внутреннюю библиотеку фильтров SpamAssassin, поэтому мы можем остановить SpamAssassin для освобождения некоторой оперативной памяти:

root@server1:~# systemctl stop spamassassin
root@server1:~# systemctl disable spamassassin

Установим Nginx, PHP (PHP-FPM) и Fcgiwrap

root@server1:~# apt-get install nginx

останавливаем Apache2 если он был у нас в системе

root@server1:~# systemctl stop apache2

и стартуем nginx

root@server1:~# systemctl start nginx

(Если установлены и Apache2, и nginx, установщик ISPConfig 3 спросит вас, какой из них вы хотите использовать, — в этом случае ответьте на nginx . Если установлен только один из них, ISPConfig автоматически выполнит необходимую настройку.) Да, к сожалению тут нельзя использовать то и другое.

Мы можем заставить PHP 7.3 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно загруженных сайтов), которые мы устанавливаем следующим образом:

root@server1:~# apt-get install php7.3-fpm

Чтобы получить поддержку MySQL в PHP, мы можем установить  пакет php7.3-mysql . Рекомендуется установить некоторые другие модули PHP, так как они могут вам понадобиться для ваших приложений. Вы можете искать доступные модули PHP, таким образом:

root@server1:~# apt-cache search php7

Выберите те, которые вам нужны, и установите их так:

root@server1:~# apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

Далее откройте /etc/php/7.3/fpm/php.ini

nano /etc/php/7.3/fpm/php.ini

и установите cgi.fix_pathinfo = 0 и ваш часовой пояс:

[...]
cgi.fix_pathinfo = 0
[...]
date.timezone = "Europe/Moscow"
[...]

Все доступные часовые пояса можно найти в /usr/share/zoneinfo/ и подкаталогах

root@server1:~# ls /usr/share/zoneinfo/*

Теперь перезагрузите PHP-FPM:

root@server1:~# systemctl restart php7.3-fpm

Чтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.

Fcgiwrap — это оболочка CGI, которая также должна работать со сложными сценариями CGI и может использоваться для сред общего хостинга, поскольку она позволяет каждому vhost использовать свой собственный каталог cgi-bin .

Установите пакет fcgiwrap :

root@server1:~# apt-get install fcgiwrap

После установки демон fcgiwrap уже должен быть запущен; это сокет /var/run/fcgiwrap.socket . Если он не запущен, вы можете использовать  команду service fcgiwrap start  для его запуска.

Теперь, когда вы создаете nginx vhost, ISPConfig позаботится о правильной конфигурации vhost

Установите phpMyAdmin

Начиная с Debian 10, PHPMyAdmin больше не доступен как пакет .deb. Поэтому мы установим его из источника.

Создайте папки для PHPMyadmin:

root@server1:~# mkdir /usr/share/phpmyadmin
root@server1:~# mkdir /etc/phpmyadmin
root@server1:~# mkdir -p /var/lib/phpmyadmin/tmp
root@server1:~# chown -R www-data:www-data /var/lib/phpmyadmin
root@server1:~# touch /etc/phpmyadmin/htpasswd.setup

Перейдите в каталог /tmp и загрузите исходные коды PHPMyAdmin:

root@server1:~# cd /tmp
root@server1:/tmp# wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz

Распакуйте загруженный архивный файл, переместите файлы в папку /usr/share/phpmyadmin и приберите за собой в /tmp

root@server1:/tmp# tar xfz phpMyAdmin-5.0.2-all-languages.tar.gz phpMyAdmin-5.0.2-all-languages/
root@server1:/tmp# mv phpMyAdmin-5.0.2-all-languages/* /usr/share/phpmyadmin/
root@server1:/tmp# rm -rf phpMyAdmin-5.0.2-all-languages*

Создайте новый файл конфигурации для PHPMyaAdmin на основе предоставленного примера файла:

root@server1:~# cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Установите безопасный пароль (blowfish_secret), который должен быть длиной 32 символа:

$cfg['blowfish_secret'] = 'fjeI76DsabWEjtKjdLiOOOOqwvFdla7d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

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

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

На следующем шаге мы настроим хранилище конфигурации phpMyadmin (база данных).

Войдите в MariaDB как пользователь root:

root@server1:~# mysql -u root

В оболочке MariaDB создайте новую базу данных для PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Затем создайте нового пользователя:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Замените слово mypassword на безопасный пароль по вашему выбору в командах выше и ниже, используйте один и тот же пароль оба раза. Затем предоставьте пользователю доступ к этой базе данных и перезагрузите разрешения для базы данных.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Наконец, загрузите таблицы SQL в базу данных:

root@server1:~# mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Теперь нужно установить данные пользователя phpmyadmin в файле конфигурации. Снова откройте файл в редакторе и отредактируйте в следующий вид:

[...]
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
[...]

Замените mypassword на пароль, который вы выбрали для пользователя phpmyadmin.

Vhost приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией phpMyAdmin, поэтому вы можете использовать http://server1.example.com:8081/phpmyadmin или http://server1.example.com:8081/phpMyAdmin для доступа к phpMyAdmin

Если вы хотите использовать псевдоним / phpmyadmin или / phpMyAdmin, который вы можете использовать на своих веб-сайтах, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (то есть псевдонимов, которые могут быть определены для всех vhosts). Поэтому вы должны определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к phpMyAdmin.

Чтобы сделать это, вставьте следующее в поле « Директивы nginx» на вкладке « Параметры » веб-сайта в ISPConfig позже:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Если вы используете HTTPS вместо HTTP для виртуального хоста, вы должны добавить строку fastcgi_param HTTPS on; к вашей конфигурации phpMyAdmin, вот так:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS on; # <-- Добавить это
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Если вы используете http и https для вашего vhost, вы можете использовать переменную $https . Снова перейдите в поле Директив nginx и вместо fastcgi_param включите HTTPS;  Добавляете строку fastcgi_param HTTPS $https; и можете использовать phpMyAdmin для запросов http и https:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- Добавить это
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Установка Let’s Encrypt

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

root@server1:~# cd /usr/local/bin
root@server1:/usr/local/bin# wget https://dl.eff.org/certbot-auto
root@server1:/usr/local/bin# chmod a+x certbot-auto
root@server1:/usr/local/bin# ./certbot-auto --install-only

Установите почтальон

ISPConfig позволяет вам управлять (создавать / изменять / удалять) списки рассылки Mailman. Если вы хотите использовать эту функцию, установите Mailman следующим образом:

root@server1:~# apt-get install mailman

Выберите хотя бы один язык. Прежде чем мы сможем запустить Mailman, должен быть создан первый список рассылки под названием mailman

root@server1:~# newlist mailman

Введите адрес электронной почты человека, управляющего списком и пароль администратора для списка почтальонов. Чтобы завершить создание списка рассылки. Вы должны отредактировать свой файл /etc/aliases

root@server1:~# nano /etc/aliases
[...]
## список рассылки mailman
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"
[...]
root@server1:~# newaliases

затем перезапустите Postfix и запустите демон Mailman:

root@server1:~# systemctl restart postfix
root@server1:~# systemctl restart mailman

После установки ISPConfig 3 вы можете получить доступ к Mailman следующим образом:

Vhost приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией Mailman, поэтому вы можете использовать http://server1.example.com:8081/cgi-bin/mailman/admin/<listname> или http://server1.example.com:8081/cgi-bin/mailman/listinfo/<listname> для доступа к Mailman.

Если вы хотите использовать Mailman со своих веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (то есть псевдонимов, которые могут быть определены для всех vhosts). Поэтому вы должны определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к Mailman.

Для этого вставьте следующее в поле « Директивы nginx» на вкладке « Параметры » веб-сайта в ISPConfig:

        location /cgi-bin/mailman {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

Это определяет псевдоним /cgi-bin/mailman/ для вашего vhost, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http://<vhost>/cgi-bin/mailman/admin/<listname> и веб-страницу для пользователей списка рассылки можно найти по адресу http://<vhost>/cgi-bin/mailman/listinfo/<listname> .

В http://<vhost>/pipermail вы можете найти архивы списка рассылки.

Установите PureFTPd и квоту

PureFTPd и квота могут быть установлены с помощью следующей команды:

root@server1:~# apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common

root@server1:~# nano /etc/default/pure-ftpd-common

и убедитесь, что режим запуска установлен в standalone режим и установите VIRTUALCHROOT=true

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

Теперь мы настраиваем PureFTPd для разрешения сеансов FTP и TLS. FTP очень небезопасный протокол, потому что все пароли и все данные передаются в виде открытого текста. Используя TLS, вся связь может быть зашифрована, что делает FTP намного более безопасным

Если вы хотите разрешить сеансы FTP и TLS, запустите

root@server1:~# echo 1 > /etc/pure-ftpd/conf/TLS

Чтобы использовать TLS, мы должны создать сертификат SSL. Я создаю его в /etc/ssl/private/ , поэтому сначала создаю этот каталог:

root@server1:~# mkdir -p /etc/ssl/private/

После этого мы можем сгенерировать сертификат SSL следующим образом:

root@server1:~# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Нам предложат ответить на несколько вопросов:

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Donetsk
Locality Name (eg, city) []:Donetsk
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My private company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:server1.example.com
Email Address []:[email protected]

Измените разрешения SSL-сертификата и перезапустите PureFTPd:

root@server1:~# chmod 600 /etc/ssl/private/pure-ftpd.pem
root@server1:~# systemctl restart pure-ftpd-mysql

Отредактируйте /etc/fstab . Мой выглядит следующим образом (я добавил ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 в раздел с точкой монтирования / ):

root@server1:~# nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=26fbb23e-db87-4a1c-8e17-d139896945bb /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
# swap was on /dev/sda5 during installation
UUID=585d5391-1595-4c9e-82de-5407d3367c78 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0


Чтобы включить квоту, выполните следующие команды:

root@server1:~# mount -o remount /
root@server1:~# quotacheck -avugm
root@server1:~# quotaon -avug

Установите DNS-сервер BIND

BIND может быть установлен следующим образом:

root@server1:~# apt-get install bind9 dnsutils

Если ваш сервер является виртуальной машиной, то настоятельно рекомендуется установить демон-хэдж, чтобы получить более высокую энтропию для подписи DNSSEC. Вы можете установить hasged на не виртуальные серверы, это не должно повредить.

root@server1:~# apt-get -y install haveged
root@server1:~# systemctl enable haveged
root@server1:~# systemctl start haveged

Объяснение на эту тему можно найти здесь .

Установите Webalizer и AWStats

Webalizer и AWStats могут быть установлены следующим образом:

root@server1:~# apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Откройте /etc/cron.d/awstats

root@server1:~# nano /etc/cron.d/awstats

и закомментируйте всё в этом файле:

# 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

Установите Jailkit

Jailkit нужен только если вы хотите синхронизировать пользователей SSH. Он может быть установлен следующим образом ( важно: Jailkit должен быть установлен до ISPConfig — он не может быть установлен позже! ):

root@server1:~# apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
root@server1:~# cd /tmp
root@server1:/tmp# wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
root@server1:/tmp# tar xvfz jailkit-2.20.tar.gz
root@server1:/tmp# cd jailkit-2.20
root@server1:/tmp/jailkit-2.20# echo 5 > debian/compat
root@server1:/tmp/jailkit-2.20# ./debian/rules binary
root@server1:/tmp/jailkit-2.20# cd ..
root@server1:/tmp# dpkg -i jailkit_2.20-1_*.deb
root@server1:/tmp# rm -rf jailkit-2.20*

Установите Fail2ban и UFW Firewall

Это необязательно, но рекомендуется, потому что монитор ISPConfig пытается показать журнал:

root@server1:~# apt-get install fail2ban

Чтобы заставить fail2ban контролировать PureFTPd и Dovecot, создайте файл /etc/fail2ban/jail.local

root@server1:~# nano /etc/fail2ban/jail.local

с таким содержимым

[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[mode=auth]
logpath = /var/log/mail.log
maxretry = 3

Перезапустите fail2ban после этого:

root@server1:~# systemctl restart fail2ban

Чтобы установить брандмауэр UFW, выполните команду:

root@server1:~# apt-get install ufw

Установите RoundCube

Установите RoundCube с помощью этой команды:

root@server1:~# apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Установщик задаст следующие вопросы:

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter
Password of the databases administrative user: <-- enter the MySQL root password here.

Затем отредактируйте файл RoundCube /etc/roundcube/config.inc.php и настройте несколько параметров:

root@server1:~# nano /etc/roundcube/config.inc.php

Установите для default_host и smtp_server значение localhost.

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';

ISPConfig имеет некоторую конфигурацию в vhost для приложений nginx для squirrelmail, которая также работает для roundcube. Мы активируем его с помощью симлинка:

root@server1:~# ln -s /usr/share/roundcube /usr/share/squirrelmail

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail
 (после установки ISPConfig см. следующую главу)

Установите ISPConfig 3

Перед тем, как начать установку ISPConfig, убедитесь, что Apache остановлен (если он установлен — возможно, что некоторые из ваших установленных пакетов установили Apache как зависимость без вашего ведома). Если Apache2 уже установлен в системе, остановите его сейчас

root@server1:~# systemctl stop apache2

и удалите ссылки запуска системы Apache:

root@server1:~# update-rc.d -f apache2 remove

Убедитесь, что nginx запущен:

root@server1:~# systemctl start nginx

(Если у вас установлены Apache и nginx, программа установки спросит вас, какой из них вы хотите использовать: Обнаружены Apache и nginx. Выберите сервер для ISPConfig: (apache, nginx) [apache]:

Введите nginx . Если установлены только Apache или nginx, программа установки автоматически обнаруживает это и не задает никаких вопросов.)

Чтобы установить ISPConfig 3.1 из последней выпущенной версии, сделайте это:

root@server1:~# cd /tmp
root@server1:/tmp# wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
root@server1:/tmp# tar xfz ISPConfig-3-stable.tar.gz
root@server1:/tmp# cd ispconfig3_install/install/
root@server1:/tmp/ispconfig3_install/install# php -q install.php

Это запустит установщик ISPConfig 3. Установщик настроит для вас все службы, такие как Postfix, Nginx, Dovecot и прочие. В процессе снова будет ряд вопросов, на которые надо ответить:

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:DPR
Locality Name (eg, city) []:Donetsk
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My private company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:server1.example.com
Email Address []:[email protected]

Мы сможем выбрать порт и указать тип поключения к панели http или https

ISPConfig Port [8080]:
Admin password [de5c7095]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: y

Программа установки автоматически настраивает все базовые службы, поэтому ручная настройка не требуется.

После этого вы можете получить доступ к ISPConfig 3 по адресу http(s)://server1.example.com:8080/ или http(s)://192.168.1.100:8080/ (http или https зависит от того, что вы выбрали во время установки). Войдите в систему с именем пользователя admin и заданным ранее паролем de5c7095

Наконец, мы исправляем некоторые права на установку RoundCube.

root@server1:~# chown root:ispapps /etc/roundcube/debian-db.php
root@server1:~# chmod 640 /etc/roundcube/debian-db.php
root@server1:~# chown root:ispapps /etc/roundcube/config.inc.php
root@server1:~# chmod 640 /etc/roundcube/config.inc.php
root@server1:~# chown -R ispapps:adm /var/log/roundcube
root@server1:~# chmod -R 750 /var/log/roundcube
root@server1:~# chown -R ispapps:ispapps /var/lib/roundcube/temp
root@server1:~# chmod -R 750 /var/lib/roundcube/temp

Система готова к использованию

ISPConfig 3 Руководство

По 5 баксов торгуют. Метод тыка и гугл никто не отменял.

После установки не помешает заняться безопасностью:

Почему 22 порт SSH нужно обязательно менять на не стандартный

Настройка SSH доступа по сертификатам

Защищаем phpmyadmin от перебора паролей при помощи fail2ban

 

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *