Идеальный сервер — Debian 9.4 Stretch, Nginx, BIND, Dovecot, PureFTPD, PHP7.0, MariaDB and ISPConfig 3.1.12

Цель: Дать подробную инструкцию о том как настроить ISPConfig на виртуальном или физическом сервере.

Целевая аудитория: Начинающие администраторы серверов, продвинутые администраторы сайтов и просто люди которые хотят не переплачивать за панель управления на своём сервере.

На официальном сайте ISPConfig очень много инструкций для разных ОС и с разными вариантами настройки, я взял за основу одну из них и наложил на неё свои правки.
Причиной написания стать стало то что я не однократно встречаю в сети жалобы на данную панель. Её на мой взгляд не обоснованно считают «отстойной». Просьба тех кто так считает, пишите аргументы чем же она плоха, если можно реальные случаи, какая ОС и какая версия панели стояла, какое ПО было установлено на сервере. Считаю что аргументированные пояснения позволят не только разобраться в причинах, но и сложить более объективное мнение новичку при прочтении этой статьи и комментариев к ней.

В исходных данных сервер с Debian 9 amd64 с минимальным количеством установленных пакетов.
Если используете виртуализацию, то не рекомендую использовать OpenVZ, настроить на ней можно, работать будет если не вылазить за ограничения, но с большой вероятностью у Вас будут возникать проблемы на некоторых этапах установки которых не будет на других типах виртуализации. Я в процессе написания статьи использовал KVM.

В не обязательных пунктах буду указывать (если надо), если Вы не уверены надо Вам это или нет на 100% выполняйте этот пункт всё равно.

Так же в каждом пункте будут мои краткие пояснения по тому зачем нужна данная установка и ссылки на пояснения и документацию или wiki.

В процессе установки я везде буду использовать параметр

, это конечно же не обязательно, но если Вы его не будете использовать готовьтесь к тому что Вам с рекомендованными зависимостями прилетит apache2 и ещё много чего. Причём тот же apache2 будет конфликтовать с Nginx, так как они используют по умолчанию один и тот же порт, а apache2 стартует раньше чем Nginx, и как следствие Nginx не запустится.

0. Настроить репозитории.
Я уже ранее описывал процедуру настройки репозиториев и приоритетов для них, не вижу смысла повторяться. Настраиваем репозитории для Debian 9
1. Добавляем нового пользователя(если ещё не добавлен).
Пункт является не обязательным. Обычно на арендуемых VPS и серверах Вам предоставляют ssh доступы и конектитесь Вы сразу к root, позволять подключаться к root на мой взгляд не самый лучший вариант, я обычно совсем запрещаю конектиться к root и создаю для подключения к ssh обычного пользователя. Если Вы не планируете так делать можете пропустить данный пункт.

Вместо user пишем желаемое имя пользователя, старайтесь не быть банальными в подборе и логина и пароля.
2. Настраиваем SSH.
Если Вы пунктом Выше создавали отдельного пользователя то теперь можете запретить конектиться от root. Для этого в файле

найдите и закоментируйте строчку

Этого будет достаточно если на Вашем ПК с которого Вы подключаетесь к серверу через SSH установлена Windows, но если Вы пользуетесь к примеру линукс, то стоит ещё продлить время жизни ssh сессии чтобы оно постоянно не обрывалось на самом интересном месте. Для этого найдите и раскоментируйте вот эти две строчки

И проставьте значения как у меня. Далее перезапустите службу ssh и по новой подключитесь к машине.

3. Удалим лишние пакеты.
После удаления пакетов и выполнения apt autoremove удалится пакет openssh-server, поэтому я жаю команду которая сразу удалит всё лишнее и следом поставит openssh-server.

4. Обновим систему.


5. Настройка доменного имени по умолчанию.
Не путайте с доменом сайта, используйте поддомен, далее буду называть его техническим доменом.

Во вторую строчку подставьте свой ip, технический домен и субдоменную часть, воспользуйтесь моим примером.


Тут должна быть вписана субдоменная часть.

Перезагрузите сервер чтобы применить изменения.

После перезагрузки проверьте верно ли был сконфигурирован технический домен сервера.

Должно получиться так:

6.Изменим командную оболочку по умолчанию.
Это необходимый пункт для установки ISPConfig

На вопрос отвечаем нет.

7. Установим ntp, для синхронизации времени.

8. Установим Postfix, Dovecot, MySQL, rkhunter, Binutils

На вопросы в процессе установки отвечаем так:

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

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

Перезапустите Postfix.

Если надо чтобы Mysql прослушивал все интерфейсы, а не только localhost, закоментируйте строчку

в файле

В этом же файле добавьте строчку

Без неё установка ISPConfig не пройдёт.

Перезапустите MariaDB.

Можно проверить что слушает MariaDB выполнив такую команду:

Если только локалку, то вывод будет таким:

Если Вы закоментировали ту строку то таким:

9. Установим Amavisd-new, SpamAssassin, ClamAV.
Эти пакеты помогают уберечь Вас от спама, с ISPConfig Вы можете управлять их настройкой через web-интерфейс панели.

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

10. Установим Metronome XMPP Server (если надо)
Данную настройку я просто списал с мануала, не приходилось этим пользоваться. Этот шаг устанавливает сервер Metronome XMPP, который предоставляет сервер чата, совместимый с протоколом XMPP. Этот шаг является необязательным, если вам не нужен сервер чата, вы можете пропустить этот шаг. Никакие другие функции ISPConfig не зависят от этого программного обеспечения.

Добавьте пользователя Metronome.

Скачайте и соберите Metronome.

11. Установим Nginx
Установку производим только из репозиториев Debian, не стоит пытаться ставить его с официального сайта, а раз уж пытаетесь учитывайте что работать он будет несколько по другому. В репозитории Debian есть 3 варианта пакета Nginx:

nginx-light
nginx-full
nginx-extras
Перейдите по ссылкам и посмотрите что входит в их состав, установите тот который больше Вам подходит.

Если Вы не конкретизируете выбор пакета, а просто укажите nginx при установке, будет установлен nginx-full.

12. Установим PHP
Эта команда установит пакеты необходимые в большинстве случаев, просмотрите возможно Вам потребуется что-то ещё или наоборот есть что-то лишнее:

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

13. Установим Let's Encrypt (если надо)
Это позволит получать сертификаты Let’s Encrypt и автоматически прописывать их в конфиги сайтов просто нажатием одной галочки в панели.

Для автоматической перевыдачи сертификатов рекомендую после получения первого сертификата добавить в cron такую запись:

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

Выберите хотя бы 1 язык из предложенных.

Прежде чем мы сможем запустить Mailman, должен быть создан первый список рассылки mailmanman:

Добавим aliases:

Добавьте эти строки в конец документа:

Выполните:

Перезапустите Postfix:

Запустите Mailman:

15. Установим PureFTPd и Quota (если надо)
PureFTPd — FTP сервер.

Quota — для установки квот для пользователей и сайтов.

Чтобы запереть ftp-пользователей в своих папках подправим настройки.

Чтобы сделать передачу данных более безопасной разрешим TLS:

Создадим папку для ssl-сертификата:

Генерируем SSL сертификат:

Я вводил свои данные, укажите свои данные по примеру или оставьте значения по умолчанию.
Подправим права полученного сертификата:

Перезапустим FTP-сервер:

Если у Вас не OVZ виртуализация, для того чтобы работали квоты добавьте в /etc/fstab к корневому разделу вот параметры ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0

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

16. Установим BIND DNS сервер (если надо)
Я лично использую DNS-сервера регистратора, но если кому-то по душе свои, ставьте. Ну и статейка чтобы на досуге почитать.

Уязвимость BIND позволяет «уронить» любой сервер: как и почему это работает

Включим и запустим сервис:

17. Установим Webalizer и AWStats (если надо)
Модули статистики, иногда выручают, хотя я привык фильтровать логи через консоль.

AWStats

Webalizer

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

Закоментируйте все строки в файле.

18. Установим Jailkit(если надо)
Jailkit необходим только в том случае, если вы хотите chroot пользователей SSH.Его можно установить следующим образом:

Теперь когда пакет собран его можно установить:

19 Установите Fail2ban и UFW Firewall(Если надо)
Это необязательно, но рекомендуется, так как монитор ISPConfig пытается показать журнал.

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

И положите в него вот эти строки:

Перезагрузите fail2ban:

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

20. Установка панели управления ISPConfig.
На момент написания статьи самая свежая версия панели это 3.1.12, чтобы посмотреть какая актуальна можно посетить официальный сайт

В процессе будет задано ряд вопросов

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

Используемые материалы при написании статьи:

https://www.howtoforge.com/tutorial/perfect-server-debian-9-nginx-bind-dovecot-ispconfig-3.1/

https://moonback.ru/page/disable_ssh_timeout

Leave a Reply

Your email address will not be published.