Поиск по сайту:

Идеальный сервер — Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)


В этом руководстве показано, как подготовить сервер Debian Jessie (с nginx, BIND, Dovecot) для установки ISPConfig 3.1 и как установить ISPConfig 3.1. ISPConfig 3 — это панель управления веб-хостингом, которая позволяет настроить следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, сервер Courier или Dovecot IMAP/POP3, сервер имен MySQL, BIND или MyDNS, PureFTPd, SpamAssassin, ClamAV и многие другие. Эта настройка охватывает nginx (вместо Apache), BIND в качестве DNS-сервера и Dovecot в качестве сервера IMAP/POP3.

1 Предварительное примечание

В этом руководстве я использую имя хоста server1.example.com с IP-адресом 192.168.1.100 и шлюзом 192.168.1.1. Эти настройки могут отличаться для вас, поэтому вам придется заменить их там, где это необходимо. Прежде чем продолжить, вам необходимо иметь минимальную установку Debian 8. Это может быть минимальный образ Debian от вашего хостинг-провайдера, или вы можете использовать руководство по минимальному серверу Debian для настройки базовой системы.

2 Установите SSH-сервер

Если вы не устанавливали сервер OpenSSH во время установки системы, вы можете сделать это сейчас:

apt-get -y install ssh openssh-server

С этого момента вы можете использовать SSH-клиент, например PuTTY, подключаться со своей рабочей станции к серверу Debian 8 и выполнять оставшиеся шаги из этого руководства.

3 Установите текстовый редактор оболочки (необязательно)

В этом руководстве я буду использовать текстовый редактор nano. Некоторые пользователи предпочитают классический редактор vi, поэтому здесь я установлю оба редактора. Программа vi по умолчанию ведет себя странно в Debian и Ubuntu; чтобы исправить это, мы устанавливаем vim-nox:

apt-get -y install nano vim-nox

(Вам не нужно делать это, если вы используете другой текстовый редактор, например joe.)

4 Настройте имя хоста

Имя хоста вашего сервера должно быть субдоменом, например \server1.example.com\. Не используйте доменное имя без части субдомена, например \example.com\, в качестве имени хоста, так как позже это вызовет проблемы с настройкой почты. Во-первых, вы должны проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна быть такой: \IP-адрес - пробел - полное имя хоста, включая домен - пробел - часть поддомена\. Отредактируйте /etc/hosts. Сделайте так, чтобы это выглядело так:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Затем отредактируйте файл /etc/hostname:

nano /etc/hostname

Он должен содержать только субдоменную часть, в нашем случае:

server1

Наконец, перезагрузите сервер, чтобы изменения вступили в силу:

reboot

Войдите снова и проверьте правильность имени хоста с помощью следующих команд:

hostname
hostname -f

Вывод должен быть таким:

:/tmp# hostname -f
server1.example.com

5 Обновите установку Debian

Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий wheezy-updates (это гарантирует, что вы всегда будете получать самые свежие обновления для антивирусного сканера ClamAV — этот проект очень часто публикует релизы, и иногда старые версии перестают работать), и что репозитории contrib и non-free включены (некоторые пакеты, такие как libapache2-mod-fastcgi, отсутствуют в основном репозитории).

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Debian backports - Required for Letsencrypt
deb http://ftp.debian.org/debian jessie-backports main

ВАЖНО: добавьте репозиторий Debian Backports, как показано выше.

Бегать

apt-get update

обновить базу данных пакетов apt и

apt-get upgrade

установить последние обновления (если они есть).

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

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

dpkg-reconfigure dash

Использовать тире в качестве системной оболочки по умолчанию (/bin/sh)? <-- Нет

Если вы этого не сделаете, установка ISPConfig завершится ошибкой.

7 Синхронизируйте системные часы

Рекомендуется синхронизировать системные часы с сервером NTP (nсетевой time protocol) через Интернет. Просто запустите

apt-get install ntp

и ваше системное время всегда будет синхронизировано.

8 Установите Postfix, Dovecot, MySQL, rkhunter, binutils

Мы можем установить Postfix, Dovecot, MySQL, 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

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

Общий тип конфигурации почты: <-- Интернет-сайт
Системное имя почты: <-- server1.example.com
Новый пароль для \root\ пользователя MariaDB: <-- yourrootsqlpassword
Повторить пароль для пользователя MariaDB \root\: <-- yourrootsqlpassword

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

mysql_secure_installation

Нам не нужно менять корневой пароль MySQL, так как мы просто устанавливаем новый во время установки. Ответьте на вопросы следующим образом:

Change the root password? [Y/n] <-- n
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

Затем откройте TLS/SSL и порты отправки в Postfix:

nano /etc/postfix/master.cf

Раскомментируйте разделы submit и smtps следующим образом (оставьте -o milter_macro_daemon_name=ORIGINATING, так как он нам не нужен):

[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -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 - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -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:

service postfix restart

Мы хотим, чтобы MySQL прослушивал все интерфейсы, а не только localhost, поэтому редактируем /etc/mysql/my.cnf и закомментируем строку bind-address=127.0.0.1:

nano /etc/mysql/my.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
[...]

Затем перезапускаем MySQL:

service mysql restart

Теперь проверьте, включена ли сеть. Бегать

netstat -tap | grep mysql

Вывод должен выглядеть так:

:~#

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

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

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract 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 postgrey

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

service spamassassin stop
systemctl disable spamassassin

9.1 Установите сервер Metronome XMPP (необязательно)

На этом шаге устанавливается сервер Metronome XMPP, который предоставляет сервер чата, совместимый с протоколом XMPP. Этот шаг необязателен, если вам не нужен чат-сервер, то этот шаг можно пропустить. Никакие другие функции ISPConfig не зависят от этого программного обеспечения.

Добавьте репозиторий пакетов Prosody в Debian.

echo "deb http://packages.prosody.im/debian jessie main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Обновите список пакетов:

apt-get update

Установите программы, необходимые для процесса сборки

apt-get install build-essential

и установите пакеты с помощью apt.

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Добавьте пользователя оболочки для Metronome.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Загрузите Metronome в каталог /opt и скомпилируйте его.

cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install

Метроном теперь установлен в /opt/metronome.