Веб-сервер “под ключ” на базе CentOS 7.1

В этой статье рассмотрим установку ISPConfig 3 на сервер CentOS 7.1 (64-Bit). ISPConfig 3 представляет собой интерфейс, с помощью которого можно настраивать следующие службы из браузера: веб-сервер Apache или nginx, почтовый сервер Postfix , MySQL, BIND nameserver, PureFTPd, SpamAssassin, ClamAV, Mailman и т.д. С версии 3.0.4, ISPConfig полностью поддерживает веб-сервер nginx; однако, в этой статье рассмотрим установку сервера, использующего Apache, а не nginx.

1 Системные требования

Для установки системы потребуется:

  • Установленная система либо на реальную машину, либо на виртуальную Centos 7.1.
  • Высокоскоростное соединение с сетью.

2 Предварительные замечания

В данной статье будем использовать имя хоста server1.example.com, IP-адрес 10.4.0.10. В конкретном случае эти параметры могут отличаться, вам необходимо будет заменить их на свои там, где это требуется.

3 Установка раскладки клавиатуры

В случае, если необходимо переключиться на правильную раскладку (например “ru” для русской раскладки клавиатуры), используем команду localectl:

localectl set-keymap ru

Для получения списка выполним:

localectl list-keymaps

Установку ISPConfig рассмотрим в конце статьи, однако ISPConfig идёт вместе с межсетевым экраном Bastille, который будет использоваться, как основной межсетевой экран, поэтому потребуется отключить стандартный межсетевой экран CentOS. Вы также можете использовать стандартный межсетевой экран (но затем Вы не сможете использовать другой межсетевой экран, так как он будет конфликтовать с межсетевым экраном CentOS).

Выполним…

yum -y install net-tools
systemctl stop firewalld.service
systemctl disable firewalld.service

для остановки и отключения межсетевого экрана CentOS.

Затем необходимо проверить, отключён ли межсетевой экран, выполним следующее:

iptables -L

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

[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Или воспользуемся командой firewall-cmd:

firewall-cmd --state
[root@server1 ~]# firewall-cmd --state
not running
[root@server1 ~]#

Теперь установим редактор настроек интернета и оболочки “nano”, который будем использовать для редактирования файлов конфигурации:

yum -y install nano wget NetworkManager-tui

Если сетевая карта не настроена, выполним…

nmtui

… и выберем пункт Edit a connection:

Выберем сетевой интерфейс.

Затем заполним настройки интернета – отключим DHCP и введём статический IP адрес, сетевую маску, шлюз и один или два NSа (имени сервера), затем нажимаем Ok:

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

И нажимаем Quit для выхода из программы настройки.

Далее выполним

ifconfig

для проверки получения установщиком нашего IP-адреса:

[root@server1 ~]# ifconfig<br>
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500<br>
        inet 10.4.0.10  netmask 255.255.255.0  broadcast 10.4.0.255<br>
        inet6 fe80::20c:29ff:fecd:cc52  prefixlen 64  scopeid 0x20<br>
        ether 00:0c:29:cd:cc:52  txqueuelen 1000  (Ethernet)<br>
        RX packets 55621  bytes 79601094 (75.9 MiB)<br>
        RX errors 0  dropped 0  overruns 0  frame 0<br>
        TX packets 28115  bytes 2608239 (2.4 MiB)<br>
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0<br>
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536<br>
        inet 127.0.0.1  netmask 255.0.0.0<br>
        inet6 ::1  prefixlen 128  scopeid 0x10<br>
        loop  txqueuelen 0  (Local Loopback)<br>
        RX packets 0  bytes 0 (0.0 B)<br>
        RX errors 0  dropped 0  overruns 0  frame 0<br>
        TX packets 0  bytes 0 (0.0 B)<br>
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Если сетевая карта здесь не представлена, значит она не включена при загрузке, в этом случае откроем файл /etc/sysconfig/network-scripts/ifcfg-eth0

nano /etc/sysconfig/network-scripts/ifcfg-ens33

и сменим значение ONBOOT на yes:

[...]
ONBOOT=yes
[...]

И перезагрузим сервер.

Проверим файл /etc/resolv.conf, в котором NSы должны совпадать с заданными ранее:

cat /etc/resolv.conf

Если NSы отсутствуют, выполним:

nmtui

и снова добавим пропущенные NS.

Перейдём к настроке…

4 Корректировка /etc/hosts

Отредактируем /etc/hosts. Должно получиться следующее:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4
 localhost4.localdomain4
10.4.0.10   server1.example.com     server1

::1         localhost localhost.localdomain localhost6
 localhost6.localdomain6

5 Отключение SELinux

SELinux представляет собой расширение безопасности в CentOS, которое обеспечивает дополнительную защиту. На практике это расширение создаёт много проблем, поэтому его придётся отключить (более того, это необходимо для дальнейшей установки ISPConfig).

Отредактируем /etc/selinux/config и установим SELINUX=disabled:

nano /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Далее перезагрузим систему:

reboot

6 Включение дополнительных репозиторий и установка ПО

В начале импортируем ключи GPG для пакетов ПО:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Затем включим репозиторий EPEL в системе CentOS, так как большинство пакетов, которые будут установлены, недоступны в официальной репозитории CentOS 7:

yum -y install epel-release
yum -y install yum-priorities

Отредактируем /etc/yum.repos.d/epel.repo…

nano /etc/yum.repos.d/epel.repo

… и добавим строку priority=10 в секции [epel]:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

Затем обновим существующие пакеты в системе:

yum update

Далее установим ПО, которое потребует в дальнейшем:

yum -y groupinstall ‘Development Tools’

7 Quota

(Если Вы выбрали другую схему разбиения, замените quota, там, где необходимо.)

Для установки quota выполним:

yum -y install quota

Теперь проверим, включена ли quota для файловом системы, в которой расположены сайт (/var/www) и данные maildir (var/vmail). Например, есть один root раздел, поэтому будем искать ‘ / ‘:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[root@server1 ~]#

Если существует несколько разделов /var partition, выполним следующее:

mount | grep ' /var '

Если строка содержит слово “noquota”, потребуется выполнить следующее, для включения quota.

Включение quota в/ (root) разделе

Обычно можно включить quota в файле /etc/fstab, но если файловая система является файловой системой root “/”, quota включается, как параметр загрузки ядра Linuх.

Отредактируем файл конфигурации grub:

nano /etc/default/grub

ищем строку, которая начинается с GRUB_CMDLINE_LINUX и добавляем rootflags=uquota,gquota к параметрам командной строки, результат должен быть следующий:

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet rootflags=uquota,gquota"

Сохраним изменения, выполнив следующее:

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfg

и перезагрузим сервер.

reboot

Теперь проверим, включена ли quota:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[root@server1 ~]#

Когда quota запущена, появится “usrquota,grpquota” в списке опций.

Включение quota в разделённых /var разделах

Если разделы /var разделены, отредактируем файл /etc/fstab и добавим, uquota,gquota в

/ partition (/dev/mapper/centos-var):
nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        1 1
/dev/mapper/centos-var /var                     xfs
     defaults,uquota,gquota        1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot                   xfs    defaults        1 3
/dev/mapper/centos-swap swap                    swap    defaults        0 0

Далее выполним

mount -o remount /var
quotacheck -avugm
quotaon -avug

для включения quota. Когда возникнет ошибка oartition с включенной quota, перезапустим сервер, перед тем, как продолжить.

8 Установка Apache, MySQL, phpMyAdmin

Установка происходит с использованием одной команды:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

9 Установка Dovecot

Dovecot устанавливается следующим образом:

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

Создадим пустой файл dovecot-sql.conf file и символьную ссылку:

touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf

Теперь создадим автозагрузку и запустим Dovecot:

systemctl enable dovecot
systemctl start dovecot

10 Установка Postfix

Postfix устанавливается следующим образом:

yum -y install postfix

Далее отключаем Sendmail и запускаем Postfix и Mariadb (MySQL):

systemctl enable mariadb.service
systemctl start mariadb.service

systemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.service

Отключим sendmail, чтобы он не запускался, затем ошибка “Failed to issue method call: Unit sendmail.service not loaded.” Может быть проигнорирована.

11 Установка Getmail

Getmail устанавливается следующим образом:

yum -y install getmail

12 Установка паролей MySQL и настройка phpMyAdmin

Установим пароли для аккаунта root в MySQL:

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation

Далее потребуется ответить на ряд вопросов, для всех вопросов нажимаем Enter, кроме New Password и Re-enter new password, где потребуется задать и повторить пароль.

Теперь настроим phpMyAdmin. Изменим настройку Apache таким образом, что phpMyAdmin разрешает соединения не только с локального хоста (удалив две строки “Require ip”и добавив новую строку “Require all granted” в строфу ):

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php<br>
#<br>
# Allows only localhost by default<br>
#<br>
# But allowing phpMyAdmin to anyone other than localhost should be considered<br>
# dangerous unless properly secured by SSL<br>
Alias /phpMyAdmin /usr/share/phpMyAdmin<br>
Alias /phpmyadmin /usr/share/phpMyAdmin<br>
<br>
   <br>
     # Apache 2.4<br>
     <br>
     #  Require ip 127.0.0.1<br>
     #  Require ip ::1<br>
        Require all granted<br>
     <br>
   <br>
   <br>
     # Apache 2.2<br>
     Order Deny,Allow<br>
     Deny from All<br>
     Allow from 127.0.0.1<br>
     Allow from ::1<br>
   <br>

Далее изменим аутентификацию в phpMyAdmin с cookie на http:

nano /etc/phpMyAdmin/config.inc.php

[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Далее создадим автозагрузку для Apache и запустим его:

systemctl enable  httpd.service
systemctl restart  httpd.service

Теперь можно в браузере перейти по адресу http://server1.example.com/phpmyadmin/ или http://10.4.0.10/phpmyadmin/ и войти с использованием имени пользователя root и пароля root MySQL.

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

Для установки amavisd-new, spamassassin и clamav выполним следующее:

yum -y install amavisd-new spamassassin clamav clamav-update unzip bzip2 perl-DBD-mysql

Отредактируем файл конфигурации freshclam /etc/freshclam.conf

nano /etc/freshclam.conf

и удалим строку “Example”

[....]
# Example
[....]

Затем запустим freshclam, amavisd и clamd.amavisd:

sa-update
freshclam 
systemctl enable amavisd.service

14 Установка Apache2 с mod_php, mod_fcgi/PHP5, PHP-FPM и suPHP

ISPConfig 3 позволяет использовать mod_php, mod_fcgi/PHP5, cgi/PHP5 и suPHP в основе каждого сайта.

Установим Apache2 с mod_php5, mod_fcgid и PHP5 следующим образом:

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm

Далее откроем /etc/php.ini…

nano /etc/php.ini

… и изменим отчёт об ошибках (сообщения больше не будут), установим timezone(часовой пояс) и удалим cgi.fix_pathinfo=1:

[...]<br>
;error_reporting = E_ALL & ~E_DEPRECATED<br>
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED<br>
[...]<br>
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for<br> CGI. PHP's<br>
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to<br> not grok<br>
; what PATH_INFO is.  For more information on PAppp.tldTH_INFO, see the cgi<br> specs. Setting<br>
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A<br>setting<br>
; of zero causes PHP to behave as before.  Default is 1. <br>  
You should fix your scripts<br>
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.<br>
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo<br>
cgi.fix_pathinfo=1<br>
[...]<br>
date.timezone = 'Europe/Berlin'<br>
[...]

Далее установим suPHP (в репозиториях доступен пакет mod_suphp, но к сожалению он не совместим с ISPConfig, поэтому нам придётся установить suPHP самостоятельно):

cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

CentOS 7.1 использует apache-2.4, поэтому нам придётся поставить исправление для suphp перед тем, как скомпилировать его перед Apache. Исправление применяется следующим образом:

wget -O suphp.patch 
https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
[root@server1 suphp-0.7.2]# autoreconf -if<br>
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.<br>
libtoolize: copying file `config/ltmain.sh'<br>
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and<br>
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.<br>
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.<br>
configure.ac:9: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are<br>deprecated.  For more info, see:<br>
configure.ac:9: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation<br>
configure.ac:24: installing 'config/config.guess'<br>
configure.ac:24: installing 'config/config.sub'<br>
configure.ac:9: installing 'config/install-sh'<br>
configure.ac:9: installing 'config/missing'<br>
src/Makefile.am: installing 'config/depcomp'<br>
[root@server1 suphp-0.7.2]#

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

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log
make
make install

Далее добавим модуль suPHP в конфигурацию Apache…

nano /etc/httpd/conf.d/suphp.conf
LoadModule suphp_module modules/mod_suphp.so

… и создадим файл /etc/suphp.conf:

nano /etc/suphp.conf
[global]<br>
;Path to logfile<br>
logfile=/var/log/httpd/suphp.log<br>
;Loglevel<br>
loglevel=info<br>
;User Apache is running as<br>
webserver_user=apache<br>
;Path all scripts have to be in<br>
docroot=/<br>
;Path to chroot() to before executing script<br>
;chroot=/mychroot<br>
; Security options<br>
allow_file_group_writeable=true<br>
allow_file_others_writeable=false<br>
allow_directory_group_writeable=true<br>
allow_directory_others_writeable=false<br>
;Check wheter script is within DOCUMENT_ROOT<br>
check_vhost_docroot=true<br>
;Send minor error messages to browser<br>
errors_to_browser=false<br>
;PATH environment variable<br>
env_path=/bin:/usr/bin<br>
;Umask to set, specify in octal notation<br>
umask=0077<br>
; Minimum UID<br>
min_uid=100<br>
; Minimum GID<br>
min_gid=100<br>
[handlers]<br>
;Handler for php-scripts<br>
x-httpd-suphp="php:/usr/bin/php-cgi"<br>
;Handler for CGI-scripts<br>
x-suphp-cgi="execute:!self"

Отредактируем файл etc/httpd/conf.d/php.conf для включения синтаксического анализа php только для phpmyadmin, roundcube и других пакетов в /usr/share, но не для сайтов в /var/www, как ISPConfig активирует PHP для каждого сайта индивидуально.

nano /etc/httpd/conf.d/php.conf

Изменим строки:

SetHandler application/x-httpd-php

на:

SetHandler application/x-httpd-php

Теперь обработчик PHP находится в директории Directory.

Включим httpd и PHP-FPM, для включения автозагрузки и запуска службы PHP-FPM.

systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.service

Перезапустим Apache:

systemctl restart httpd.service

15 Установка mod_python

Модуль apache mod_python недоступен, как пакет RPM, поэтому скомпилируем его из источника. Первым шагом будет установка файлов разработки python и загрузка нынешней версии mod_python в файле tar.gz

yum -y install python-devel
cd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0

и затем настроим и скомпилируем модуль

./configure
make
make install

И включим модуль в apache

echo 'LoadModule python_module modules/mod_python.so' > 
/etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service

16 Установка PureFTPd

PureFTPd устанавливается следующим образом:

yum -y install pure-ftpd

Далее создадим автозагрузку и запустим PureFTPd:

systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service

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

OpenSSL требуется для установкиis TLS; установим OpenSSL:

yum install openssl

Откроем /etc/pure-ftpd/pure-ftpd.conf…

nano /etc/pure-ftpd/pure-ftpd.conf

Если требуется разрешить сессии FTP и TLS, присвоим TLS значение 1:

[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms, 
#     including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
TLS
                      1
[...]

Для использования TLS необходимо создать сертификат SSL. Создадим директорию /etc/ssl/private/, в которой будет находится данный сертификат.

mkdir -p /etc/ssl/private/

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

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 (eg, YOUR name) []:
Email Address []:

Изменим права доступа сертификата SSL:

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

Затем перезапустим PureFTPd:

systemctl restart pure-ftpd.service

Теперь можно подключиться, используя клиент FTP; в любом случае потребуется настроить клиент FTP для использования TLS.

17 Установка BIND

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

yum -y install bind bind-utils

Создадим резервную копию файла /etc/named.conf и сделаем новый файл:

cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf
//<br>
// named.conf<br>
//<br>
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS<br>
// server as a caching only nameserver (as a localhost DNS resolver only).<br>
//<br>
// See /usr/share/doc/bind*/sample/ for example named configuration files.<br>
//<br>
options {<br>
        listen-on port 53 { any; };<br>
        listen-on-v6 port 53 { any; };<br>
        directory       "/var/named";<br>
        dump-file       "/var/named/data/cache_dump.db";<br>
        statistics-file "/var/named/data/named_stats.txt";<br>
        memstatistics-file "/var/named/data/named_mem_stats.txt";<br>
        allow-query     { any; };<br>
				allow-recursion {"none";};<br>
        recursion no;
};<br>
logging {<br>
        channel default_debug {<br>
                file "data/named.run";<br>
                severity dynamic;<br>
        };<br>
};<br>
zone "." IN {<br>
        type hint; <br>
        file "named.ca";<br>
};<br>
include "/etc/named.conf.local";

Создадим файл /etc/named.conf.local that is included at the end of /etc/named.conf (/etc/named.conf.local will later on get populated by ISPConfig if you create DNS zones in ISPConfig):

touch /etc/named.conf.local

Затем создадим автозагрузку и запустим BIND:

systemctl enable named.service
systemctl start named.service

18 Установка Webalizer и AWStats

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

yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

19 Установка Jailkit

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

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./configure
make
make install
cd .. 
rm -rf jailkit-2.17*

20 Установка fail2ban

Установка fail2ban необязательна, но рекомендована, так как монитор ISPConfig попытается показать запись событий:

yum -y install iptables-services fail2ban fail2ban-systemd
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service

Создадим файл /etc/fail2ban/jail.local и включим мониторинг для ssh, email и службы ftp.

nano /etc/fail2ban/jail.local

Добавим следующее в файл jail.local:

[sshd]
enabled = true
action = iptables[name=sshd, port=ssh, protocol=tcp]

[pure-ftpd]
enabled = true
action = iptables[name=FTP, port=ftp, protocol=tcp]
maxretry = 3

[dovecot]
enabled = true
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps",
protocol=tcp]
maxretry = 5

[postfix-sasl]
enabled = true
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]
maxretry = 3

Далее создадим автозагрузку и запустим fail2ban:

systemctl enable fail2ban.service
systemctl start fail2ban.service

21 Установка rkhunter

rkhunter устанавливается следующим образом:

yum -y install rkhunter

22 Установка Mailman

Mailman используется для управления адресным списком на сервере. Mailman поддерживается ISPConfig, следовательно можно создавать новые адресные списки через ISPConfigr.

yum -y install mailman

Перед запуском Mailman необходимо создать список, под названием mailman:

touch /var/lib/mailman/data/aliases
postmap /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman

Далее потребуется ввести адрес электрнной почты, задать пароль для списка и для подтврерждения создания спика нажать Enter.

Далее откроем /etc/aliases…

vi /etc/aliases

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

[...]
mailman:              "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/lib/mailman/mail/mailman unsubscribe
 mailman"

Выполним

newaliases

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

systemctl restart postfix.service

Теперь откроем файл конфигурации Mailman Apache /etc/httpd/conf.d/mailman.conf…

nano /etc/httpd/conf.d/mailman.conf

… и добавим строку ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Alias /pipermail/ /var/lib/mailman/archives/public/ и добавим строку Alias /pipermail /var/lib/mailman/archives/public/:

#<br>
#  httpd configuration settings for use with mailman.<br>
#<br>
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/<br>
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/<br>
<br>
    AllowOverride None<br>
    Options ExecCGI<br>
    Order allow,deny<br>
    Allow from all<br>
<br>
#Alias /pipermail/ /var/lib/mailman/archives/public/<br>
Alias /pipermail /var/lib/mailman/archives/public/<br>
<br>
    Options Indexes MultiViews FollowSymLinks<br>
    AllowOverride None<br>
    Order allow,deny<br>
    Allow from all<br>
    AddDefaultCharset Off<br>
<br>
# Uncomment the following line, to redirect queries to /mailman to the<br>
# listinfo page (recommended).<br>
# RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Перезапустим Apache:

systemctl restart httpd.service

Создадим автозагрузку и запустим Mailman:

systemctl enable mailman.service
systemctl start mailman.service

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

Можно использовать alias /cgi-bin/mailman для всех виртуальных хостов Apache (Внимание: suExec и CGI должны быть отключены для всех виртуальных хостов, которые будут иметь доступ к Mailman!), это значит, что можно получить доступ к интерфейсу администратора Mailman через http:///cgi-bin/mailman/admin/ и веб-страница для пользователей в списке адресатов находится по адресу http:///cgi-bin/mailman/listinfo/.

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

23 Установка Roundcube webmail

Установим клиент Roundcube:

yum -y install roundcubemail

Отредактируем файл конфигурации roundcubemail следующим образом:

nano /etc/httpd/conf.d/roundcubemail.conf
#<br>
# Round Cube Webmail is a browser-based multilingual IMAP client<br>
#<br>
Alias /roundcubemail /usr/share/roundcubemail<br>
Alias /webmail /usr/share/roundcubemail<br>
# Define who can access the Webmail<br>
# You can enlarge permissions once configured<br>
#<br>
#    <br>
#        # Apache 2.4<br>
#        Require local<br>
#    <br>
#    <br>
#        # Apache 2.2<br>
#        Order Deny,Allow<br>
#        Deny from all<br>
#        Allow from 127.0.0.1<br>
#        Allow from ::1<br>
#    <br>
#<br>
<br>
        Options none<br>
        AllowOverride Limit<br>
        Require all granted<br>
<br>
# Define who can access the installer<br>
# keep this secured once configured<br>
#<br>
#    <br>
#        # Apache 2.4<br>
#        Require local<br>
#    <br>
#    <br>
#        # Apache 2.2<br>
#        Order Deny,Allow<br>
#        Deny from all<br>
#        Allow from 127.0.0.1<br>
#        Allow from ::1<br>
#    <br>
#<br>
<br>
        Options none<br>
        AllowOverride Limit<br>
        Require all granted<br>
# Those directories should not be viewed by Web clients.

    Order Allow,Deny
    Deny from all


    Order Allow,Deny
    Deny from all

Перезапустим Apache:

systemctl restart httpd.service

Теперь потребуются базы данных для roundcube, инициализировать их можно следующим образом:

mysql -u root –p

В mariadb введём:

CREATE DATABASE roundcubedb;
CREATE USER roundcubeuser@localhost IDENTIFIED BY 'roundcubepassword';
GRANT ALL PRIVILEGES on roundcubedb.* to roundcubeuser@localhost ;
FLUSH PRIVILEGES;
exit

Значения в базе данных roundcube используются для теста, их следует заменить по Вашему выбору из соображений безопасности.

Теперь установим roundcube в браузере по адресу http://10.4.0.10/roundcubemail/installer

Далее заполним элементы в

nano /etc/roundcubemail/config.inc.php
/* Local configuration for Roundcube Webmail */<br>
// ----------------------------------<br>
// SQL DATABASE<br>
// ----------------------------------<br>
// Database connection string (DSN) for read+write operations<br>
// Format (compatible with PEAR MDB2):<br>db_provider://user:password@host/database<br>
// Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv<br>
// For examples see<br>http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php<br>
// NOTE: for SQLite use absolute path:<br>'sqlite:////full/path/to/sqlite.db?mode=0646'<br>
$config['db_dsnw'] =<br>'mysql://roundcubeuser:roundcubepassword@localhost/roundcubedb';<br>
// ----------------------------------<br>
// IMAP<br>
// ----------------------------------<br>
// The mail host chosen to perform the log-in.<br>
// Leave blank to show a textbox at login, give a list of hosts<br>
// to display a pulldown menu or set one host as string.<br>
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://<br>
// Supported replacement variables:<br>
// %n - hostname ($_SERVER['SERVER_NAME'])<br>
// %t - hostname without the first part<br>
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)<br>
// %s - domain name after the '@' from e-mail address provided at login<br> screen<br>
// For example %n = mail.domain.tld, %t = domain.tld<br>
// WARNING: After hostname change update of mail_host column in users table is<br>
//          required to match old user data records with the new host.<br>
$config['default_host'] = 'localhost';<br>
// provide an URL where a user can get support for this Roundcube<br> installation<br>
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!<br>
$config['support_url'] = '';<br>
// this key is used to encrypt the users imap password which is stored<br>
// in the session record (and the client cookie if remember password is<br> enabled).<br>
// please provide a string of exactly 24 chars.<br>
$config['des_key'] = 'FHgaM7ihtMkM1cBwckOcxPdT';<br>
// ----------------------------------<br>
// PLUGINS<br>
// ----------------------------------<br>
// List of active plugins (in plugins/ directory)<br>
$config['plugins'] = array();<br>
// Set the spell checking engine. Possible values:<br>
// - 'googie'  - the default<br>
// - 'pspell'  - requires the PHP Pspell module and aspell installed<br>
// - 'enchant' - requires the PHP Enchant module<br>
// - 'atd'     - install your own After the Deadline server or check with the<br> people at http://www.afterthedeadline.com before using their API
// Since Google shut down their public spell checking service, you need to<br> 
// connect to a Nox Spell Server when using 'googie' here. Therefore specify the 'spellcheck_uri'<br>
$config['spellcheck_engine'] = 'pspell';

Далее нажмём кнопку “continue” в веб-установщике. Затем нажимаем кнопку “Initialize database”.

Наконец, отключим установщик Roundecubemail. Изменим файл конфигурации apacheroundcubemail:

nano /etc/httpd/conf.d/roundcubemail.conf
#<br>
# Round Cube Webmail is a browser-based multilingual IMAP client<br>
#<br>
Alias /roundcubemail /usr/share/roundcubemail<br>
Alias /webmail /usr/share/roundcubemail<br>
# Define who can access the Webmail<br>
# You can enlarge permissions once configured<br>
#<br>
#    <br>
#        # Apache 2.4<br>
#        Require local<br>
#    <br>
#    <br>
#       # Apache 2.2<br>
#        Order Deny,Allow<br>
#        Deny from all<br>
#        Allow from 127.0.0.1<br>
#        Allow from ::1<br>
#    <br>
#<br>
<br>
        Options none<br>
        AllowOverride Limit<br>
        Require all granted<br>
<br>
# Define who can access the installer<br>
# keep this secured once configured<br>
<br>
    <br>
        # Apache 2.4<br>
       Require local<br>
   <br>
    <br>
        # Apache 2.2<br>
        Order Deny,Allow<br>
        Deny from all<br>
       Allow from 127.0.0.1<br>
        Allow from ::1<br>
    <br>
<br>
# Those directories should not be viewed by Web clients.<br>
<br>
    Order Allow,Deny<br>
    Deny from all<br>
<br>
<br>
    Order Allow,Deny<br>
    Deny from all<br>
<br>
~

Перезапустим Apache:

systemctl restart httpd.service

24 Установка ISPConfig 3

Загрузим и установим последнюю версию(http://www.ispconfig.org/files/category/1-ispconfig) ISPConfig 3. Установщик ISPConfig настроит такие службы, как Postfix, Dovecot и т.д. Ручная установка, как для ISPConfig 2, больше не требуется.

Также установщик может создать виртуальный хост SSL для панели управления ISPConfig control panel, таким образом ISPConfig будет доступен по адресу https:// вместо http://. Для этого необходимо нажать ENTER в вопросе: Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:.

Для установки последней версии 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

Запустится установщик ISPConfig 3:

[root@server1 install]# php -q install.php

Далее потребуется ввести данные для установки ISPConfig 3, для всех вопросов нажимаем Enter, кроме Enter your root password, где потребуется ввести пароль.

Сообщение об ошибке “usage: doveadm [-Dv] [-f ] []” можно проигнорировать, если оно появилось во время установки ispconfig.

Для исправления ошибок Mailman во время установки ISPConfig, откроем /usr/lib/mailman/Mailman/mm_cfg.py…

vi /usr/lib/mailman/Mailman/mm_cfg.py

… и зададим DEFAULT_SERVER_LANGUAGE = ‘en’:

[...]
#-------------------------------------------------------------  
# The default language for this server.
DEFAULT_SERVER_LANGUAGE = 'en'
[...]

Далее перезапустим Mailman:

systemctl restart mailman.service

25 Первая авторизация в ISPConfig

Теперь ISPConfig 3 доступен по адресу http(s)://server1.example.com:8080/ или http(s)://10.4.0.10:8080/, причём протокол http или https зависит от нашего выбора при установке. Авторизоваться можно, введя имя пользователя admin и пароль admin (стандартный пароль следует сменить после первого входа).

Далее потребуется задать пути настройки BIND в ISPConfig. Выбираем меню “System”, затем “Server config” в правом меню. Далее, в появившимся списке выбираем server name.

Перейдём на вкладку “DNS”.

И введём пути DNS:

BIND zonefiles directory: /var/named
BIND named.conf path: /etc/named.conf
BIND named.conf.local path: /etc/named.conf.local

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

Источник

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.