В этой статье рассмотрим установку 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
Теперь система готова к использованию.