Обратите внимание, что данная методика может подходить Вам прямо как есть, а может и не подходить. К сожалению, на разных системах получается разный результат. В основном, эта проблема обусловлена различными алгоритмами виртуализации. Пожалуйста, используйте эту методику только если уверенно чувствуете себя в общении с Linux!
1. Системные требования
Для установки системы потребуется:
- Установленная система (либо на реальную машину, либо на виртуальную) Centos 7.1. Установка CentOS 7.0 может быть использована для примера.
- Хороший процессор (предпочтительно иметь более двух ядер).
- Много ОЗУ (предпочтительно иметь более 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
Выходные данные должны выглядеть следующим образом:
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
not running
Теперь установим редактор "nano", который будем использовать для редактирования файлов конфигурации:
yum -y install nano wget NetworkManager-tui
Либо установим 'Полуночный Командир', чтобы пользоваться встроенным mcedit:
yum -y install mc
Если сетевая карта не настроена, выполним:
nmtui
... и выберем пункт Edit a connection:
Выберем сетевой интерфейс.
Затем заполним настройки интернета - отключим DHCP и введём статический IP адрес, сетевую маску, шлюз и один или два NSа (сервера разрешения имён), затем нажимаем OK.
Далее выбираем OK для подтверждения изменений в настройках интернета.
Возможно, понадобится настройка второго IP-адреса, тогда внимательно читаем специальную статью.
И нажимаем Quit для выхода из программы настройки.
Оценим конфигурацию интерфейсов
ifconfig
для проверки получения установщиком нашего IP-адреса:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.4.0.10 netmask 255.255.255.0 broadcast 10.4.0.255
inet6 fe80::20c:29ff:fecd:cc52 prefixlen 64 scopeid 0x20
ether 00:0c:29:cd:cc:52 txqueuelen 1000 (Ethernet)
RX packets 999 bytes 1094 (0.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28115 bytes 2608239 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
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. Должно получиться следующее: перед каждым именем 'localhost' нужно добавить имя нашего сервера.
Если после рестарта сервера или рестарта службы network у нас не изменилось имя сервера, придётся запускать nmtui
и через него менять имя машины.
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 выполним:
yum -y install quota
Теперь проверим, включена ли quota для файловом системы, в которой расположены сайт (/var/www) и данные maildir (var/vmail). Например, есть один root раздел, поэтому будем искать ' / ':
mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
Если существует несколько разделов /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 ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
Когда 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
Далее потребуется ответить на ряд вопросов, всегда в качестве ответов нажимаем Enter, кроме New Password и Re-enter new password, где потребуется задать и повторить пароль.
Теперь настроим phpMyAdmin. Изменим настройку Apache таким образом, что phpMyAdmin разрешает соединения не только с локального хоста (удалив две строки "Require ip" и добавив новую строку "Require all granted" в строфу ):
nano /etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> # Require ip 127.0.0.1 # Require ip ::1
Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
Далее изменим аутентификацию в 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
Теперь можно в браузере перейти по адресу server1.example.com/phpmyadmin/ или 10.4.0.10/phpmyadmin/ и войти с использованием имени пользователя root и пароля root MySQL.
13. Установка Amavisd-new, SpamAssassin и ClamAV
Возможно, в Вашем конкретном случае есть смысл ставить пакет clamd (clamav-scanner.noarch), окончательное решение за Вами.
Для установки 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:
[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for
CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to
not grok
; what PATH_INFO is. For more information on PAppp.tldTH_INFO, see the cgi
specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A
setting
; of zero causes PHP to behave as before. Default is 1.
You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'Europe/Moscow'
[...]
Далее установим 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
# autoreconf -if
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:9: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are
deprecated. For more info, see:
configure.ac:9: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24: installing 'config/config.guess'
configure.ac:24: installing 'config/config.sub'
configure.ac:9: installing 'config/install-sh'
configure.ac:9: installing 'config/missing'
src/Makefile.am: installing 'config/depcomp'
Затем скомпилируем новый источник следующим образом:
./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
В некоторых случаях не проходит компиляция, попробуйте заменить команду конфигурации на следующую: ./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=paranoid --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
Далее добавим модуль suPHP в конфигурацию Apache...
nano /etc/httpd/conf.d/suphp.conf
LoadModule suphp_module modules/mod_suphp.so
... и создадим файл /etc/suphp.conf:
nano /etc/suphp.conf
[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
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
Изменим строки:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
на:
<Directory /usr/share>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
</Directory>
Теперь интерпретатор PHP сможет искать исполнимые файлы в директории Directory.
Добавим httpd и 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
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-recursion {"none";};
recursion no; };
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
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 может быть установлен только перед установкой ISPConfig – после его уже не получится установить!
Jailkit потребуется, если вы хотите сделать chroot для пользователей SSH. Установка производится следующим образом:
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
Внимание! На некоторых системах fail2ban блокирует установку roundcube. Единого решения пока не найдено.
21. Установка rkhunter
rkhunter устанавливается следующим образом:
yum -y install rkhunter
22. Установка Mailman
Mailman используется для управления адресным списком на сервере. Mailman поддерживается ISPConfig, следовательно можно создавать новые адресные списки через ISPConfig.
yum -y install mailman
Перед запуском Mailman необходимо создать список, под названием mailman:
touch /var/lib/mailman/data/aliases
postmap /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman
Далее потребуется ввести адрес электронной почты, задать пароль для списка и для подтверждения создания спиcка нажать 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...
mcedit /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/:
# httpd configuration settings for use with mailman. ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/ ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ <Directory /usr/lib/mailman/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> #Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /pipermail /var/lib/mailman/archives/public/ <Directory /var/lib/mailman/archives/public> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all AddDefaultCharset Off </Directory> # Uncomment the following line, to redirect queries to /mailman to the # listinfo page (recommended). # 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
Внимание! На некоторых системах этот шаг не удаётся выполнить до тех пор, пока не будет исправлен алгоритм работы межсетевого экрана. Поэтому ежели у Вас не получается выполнить этот шаг, отредактируйте /etc/sysconfig/iptables
и перезагрузитесь. Надо добавить три правила:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
Установим клиент Roundcube:
yum -y install roundcubemail
Отредактируем файл конфигурации roundcubemail следующим образом:
nano /etc/httpd/conf.d/roundcubemail.conf
# # Round Cube Webmail is a browser-based multilingual IMAP client # Alias /roundcubemail /usr/share/roundcubemail
Alias /webmail /usr/share/roundcubemail # Define who can access the Webmail # You can enlarge permissions once configured #<Directory /usr/share/roundcubemail/> # <IfModule mod_authz_core.c> # # Apache 2.4 # Require local # </IfModule> # <IfModule !mod_authz_core.c> # # Apache 2.2 # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Allow from ::1 # </IfModule> #</Directory> <Directory /usr/share/roundcubemail/> Options none AllowOverride Limit Require all granted </Directory> # Define who can access the installer # keep this secured once configured #<Directory /usr/share/roundcubemail/installer/> # <IfModule mod_authz_core.c> # # Apache 2.4 # Require local # </IfModule> # <IfModule !mod_authz_core.c> # # Apache 2.2 # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Allow from ::1 # </IfModule> #</Directory> <Directory /usr/share/roundcubemail/installer> Options none AllowOverride Limit Require all granted </Directory> # Those directories should not be viewed by Web clients. <Directory /usr/share/roundcubemail/bin/> Order Allow,Deny Deny from all </Directory> <Directory /usr/share/roundcubemail/plugins/enigma/home/> Order Allow,Deny Deny from all </Directory>
Перезапустим 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
<?php /* Local configuration for Roundcube Webmail */ // ---------------------------------- // SQL DATABASE // ---------------------------------- // Database connection string (DSN) for read+write operations // Format (compatible with PEAR MDB2): db_provider://user:password@host/database // Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv // For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php // NOTE: for SQLite use absolute path: 'sqlite:////full/path/to/sqlite.db?mode=0646' $config['db_dsnw'] = 'mysql://roundcubeuser:roundcubepassword@localhost/roundcubedb'; // ---------------------------------- // IMAP // ---------------------------------- // The mail host chosen to perform the log-in. // Leave blank to show a textbox at login, give a list of hosts // to display a pulldown menu or set one host as string. // To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// // Supported replacement variables: // %n - hostname ($_SERVER['SERVER_NAME']) // %t - hostname without the first part // %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part) // %s - domain name after the '@' from e-mail address provided at login screen // For example %n = mail.domain.tld, %t = domain.tld // WARNING: After hostname change update of mail_host column in users table is // required to match old user data records with the new host. $config['default_host'] = 'localhost'; // provide an URL where a user can get support for this Roundcube installation // PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE! $config['support_url'] = ''; // this key is used to encrypt the users imap password which is stored // in the session record (and the client cookie if remember password is enabled). // please provide a string of exactly 24 chars. $config['des_key'] = 'FHgaM7ihtMkM1cBwckOcxPdT'; // ---------------------------------- // PLUGINS // ---------------------------------- // List of active plugins (in plugins/ directory) $config['plugins'] = array(); // Set the spell checking engine. Possible values: // - 'googie' - the default // - 'pspell' - requires the PHP Pspell module and aspell installed // - 'enchant' - requires the PHP Enchant module // - 'atd' - install your own After the Deadline server or check with the people at http://www.afterthedeadline.com before using their API // Since Google shut down their public spell checking service, you need to // connect to a Nox Spell Server when using 'googie' here. Therefore specify the 'spellcheck_uri' $config['spellcheck_engine'] = 'pspell';
Далее нажмём кнопку "continue" в веб-установщике. Затем нажимаем кнопку "Initialize database".
Наконец, отключим установщик Roundecubemail. Изменим файл конфигурации apacheroundcubemail:
nano /etc/httpd/conf.d/roundcubemail.conf
# # Round Cube Webmail is a browser-based multilingual IMAP client # Alias /roundcubemail /usr/share/roundcubemail
Alias /webmail /usr/share/roundcubemail # Define who can access the Webmail # You can enlarge permissions once configured #<Directory /usr/share/roundcubemail/> # <IfModule mod_authz_core.c> # # Apache 2.4 # Require local # </IfModule> # <IfModule !mod_authz_core.c> # # Apache 2.2 # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Allow from ::1 # </IfModule> #</Directory> <Directory /usr/share/roundcubemail/> Options none AllowOverride Limit Require all granted </Directory> # Define who can access the installer # keep this secured once configured <Directory /usr/share/roundcubemail/installer/> <IfModule mod_authz_core.c> # Apache 2.4 Require local </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> # Those directories should not be viewed by Web clients. <Directory /usr/share/roundcubemail/bin/> Order Allow,Deny Deny from all </Directory> <Directory /usr/share/roundcubemail/plugins/enigma/home/> Order Allow,Deny Deny from all </Directory> ~
Перезапустим Apache:
systemctl restart httpd.service
24. Установка ISPConfig 3
Загрузим и установим последнюю версию (http://www.ispconfig.org/ispconfig-3/download/) 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:
# php -q install.php
Далее потребуется ввести данные для установки ISPConfig 3, для всех вопросов нажимаем Enter, кроме Enter your root password, где потребуется ввести пароль.
Сообщение об ошибке "usage: doveadm [-Dv] [-f ]
Для исправления ошибок Mailman во время установки ISPConfig, откроем /usr/lib/mailman/Mailman/mm_cfg.py...
mcedit /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
Теперь система готова к использованию.
Дополнение 1
Если не запускается веб-сервер Apache, убедитесь, что верно заданы все права на рабочие директории. Выполните команду
chown -R apache:apache /usr/share && chown -R apache:apache /var/www/html
Дополнение 2
Если вы используете загрузку UEFI, надо будет собрать grub следующим образом:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Дополнение 3
Иногда выскакивает ошибка postalias: fatal: open /var/lib/mailman/data/aliases: No such file or directory - выполните:
touch /etc/mailman/aliases
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux