Linux

Установка ISPConfig3 на Debian 8 Jessie (Apache2, BIND, Dovecot)

В этом статье показано, как подготовить сервер Debian Jessie (с Apache2, BIND, Dovecot) для установки ISPConfig 3, и как установить ISPConfig 3.

1. Начало

В этом статье я буду использовать

Имя хоста: server1.example.com

IP-адрес: 192.168.1.100

Шлюз: 192.168.1.1

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

Имя хоста вашего сервера должен быть «server1.example.com«.

Если использовать как имя хоста доменное имя без субдоменной части, «example.com«,то это вызовет проблемы с установкой почты.

Для хоста server1.example.com, файл 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

Файл hostname:

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

nano /etc/hostname

server1

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

reboot

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

hostname
hostname -f

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

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

Убедитесь, что ваш /etc/apt/sources.list содержит хранилище Jessie , а также , что contrib non-free включены (libapache2-mod-fastcgi отсутствуют в главном хранилище).

nano /etc/apt/sources.list

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

Обновляем базу пакетов

apt-get update

Устанавливаем обновления

apt-get upgrade

Если при обновлении установилось новая версия ядра, перезагружаем систему

2. Изменение значения Shell

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

dpkg-reconfigure dash

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

3. Синхронизируем часы

apt-get install ntp ntpdate

4. Устанавливаем Postfix, Dovecot, MySQL, PhpMyAdmin, RkHunter, Binutils

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

Если вы предпочитаете MariaDB , то замените пакеты mysql-client mysql-server на mariadb-client mariadb-server

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

Общий тип почтовой настройки: <- Интернет-сайт

Почтовое имя: <- server1.example.com

Пароль для root пользователя mysql

Повтор пароля

Добавим TLS / SSL в Postfix:

nano /etc/postfix/master.cf

Раскомментируем некоторые строки, файл должен выглядеть как на примере

[...]
#tlsproxy  unix  -       -       -       -       0       tlsproxy
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 принимал подключения на всех интерфейсах в файле /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
# 
# * Fine Tuning
[...]

Перезапускаем mysql

/etc/init.d/mysql restart

Проверяем

netstat -tap | grep mysql

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

tcp 0 0 *:mysql *:* LISTEN 30224/mysqld

5. Установка 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

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

service spamassassin stop
systemctl disable spamassassin

6. Установка Apache2, PHP5, PhpMyAdmin, FCGI, Suexec, Pear, и Mcrypt

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached libapache2-mod-passenger

Вы увидите следующие вопросы:

Веб-сервер для автоматической настройки: <- apache2

Настройка базы данных для PHPMyAdmin с помощью DBCONFIG? <- Да

Пароль root пользователя mysql <- Ваш_пароль_mysql

Пароль для БД  PHPMyAdmin? <- Придумайте пароль или просто нажмите клавишу ВВОД(будет генерирован автоматически)

Если ввели свой пароль, дальше появится форма на подтверждения пароля.

Включаем модули:

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi

Перезапускаем apache2

service apache2 restart

7. XCache и PHP-FPM

apt-get install php5-xcache

Перезапускаем apache2

service apache2 restart

8. PHP-FPM

apt-get install libapache2-mod-fastcgi php5-fpm

Включаем модули:

a2enmod actions fastcgi alias

Перезапускаем apache2

service apache2 restart

9. Установка Mailman

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

apt-get install mailman

Выбераем хотя бы один язык:

 

Прежде чем использовать mailman мы должны создать первый список рассылки

newlist mailman

Укажите адрес владельца этого списка рассылки:

— указываем email от имени которого будет идти рассылка.

Пароль для mailman:
— задаём пароль для mailman list

Для того, чтобы завершить процесс создания списка рассылки, вам необходимо
добавить в ваш файл /etc/aliases (или выполняющем аналогичные функции)
следующие строки, а затем запустить программу 'newaliases':
## список рассылки 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"
Нажмите <Enter> для отправки извещения о создании списка mailman...

Открываем в редакторе /etc/aliases

nano /etc/aliases

И добавляем следующие строки:

[. . .]
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"

Запускаем

newaliases

И перезапускаем Postfix:

service postfix restart

Делаем симлинк для apache2

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Перезапускаем apache2:

service apache2 restart

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

http://server1.example.com/cgi-bin/mailman/admin/
Или
http://server1.example.com/cgi-bin/mailman/listinfo/

Стартуем mailman-демон:

service mailman start

10. Установка PureFTPd и Quota

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

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

Изменяем файл /etc/default/pure-ftpd-common

nano /etc/default/pure-ftpd-common

Изменяем значение VIRTUALCHROOT на true:

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

Теперь мы настроим PureFTPd, чтобы разрешить TLS сессии. Выполняем команду

echo 1 > /etc/pure-ftpd/conf/TLS

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

mkdir -p /etc/ssl/private/

И генерируем его следующим образом:

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]:Буквенный_код_страны
State or Province Name (full name) [Some-State]:Штат_или_провинция(Область_край)
Locality Name (eg, city) []:Город
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Название_организации
Organizational Unit Name (eg, section) []:Подразделение_организации
Common Name (e.g. server FQDN or YOUR name) []:Имя_сервера
Email Address []:Емэйл_адрес

Меняем права:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Перезапускаем PureFTPd:

service pure-ftpd-mysql restart

Редактируем /etc/fstab и добавляем ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 к корню

nano /etc/fstab

Было:

[...]
UUID=59cc3fc3-f184-4e2d-a691-9ea81a2c5460 / ext4 errors=remount-ro 0 1
[...]

Стало:

[...]
UUID=59cc3fc3-f184-4e2d-a691-9ea81a2c5460 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
[...]

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

mount -o remount /
quotacheck -avugm
quotaon -avug

11. Установка BIND (DNS-сервер)

apt-get install bind9 dnsutils

12. Установка Vlogger, Webalizer и AWStats

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

Открываем /etc/cron.d/awstats и комментируем все в этом файле

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

13. Установливаем Jailkit

Jailkit нужен если вы хотите ограничеть пользователей SSH в своем домашнем каталоге. Важно его установить до установки ISPConfig — он не может быть установлен впоследствии!

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./debian/rules binary

Устанавливаем .deb пакет Jailkit:

cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*

14. Установливаем fail2ban

apt-get install fail2ban

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

nano /etc/fail2ban/jail.local

[pureftpd]
enabled = true
port   = ftp
filter  = pureftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

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

 

Затем создаем следующие два фильтра:

nano /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*
ignoreregex =

Добавляем  ignoreregex в postfix-sasl::

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf

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

service fail2ban restart

15. Установка ISPConfig 3

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Запускаем установку

php -q install.php

Программа установки настроит все сервисы, такие как Postfix, Dovecot и т. д. автоматически. Нужно только ответить на некоторые вопросы.

[...]
Select language (en,de) [en]: [ENTER]
Installation mode (standard,expert) [standard]: [ENTER]
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.com]: [ENTER]
MySQL server hostname [localhost]: [ENTER]
MySQL server port [3306]: [ENTER]
MySQL root username [root]: [ENTER]
MySQL root password []: пароль_root
MySQL database to create [dbispconfig]: [ENTER]
MySQL charset [utf8]: [ENTER]
[...]
ISPConfig Port [8080]: [ENTER]
Admin password [admin]: пароль_администратора_панели
Re-enter admin password []: повтор_пароля
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: [ENTER]
[...]
Configuring DBServer
Installing ISPConfig crontab
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Установка завершена. После этого вы можете получить доступ к ISPConfig 3 :

https: //server1.example.com:8080

Логин: admin

Пароль: тот_который_ввели_при_установке_панели

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.